HyperPod 推論のトラブルシューティング - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

HyperPod 推論のトラブルシューティング

このトラブルシューティングガイドでは、Amazon SageMaker HyperPod 推論のデプロイとオペレーション中に発生する可能性がある一般的な問題に対処します。これらの問題には、通常、VPC ネットワーク設定、IAM アクセス許可、Kubernetes リソース管理、オペレーター接続の問題が含まれます。これらの問題は、モデルのデプロイの成功を妨げたり、デプロイが失敗したり、保留中の状態のままになったりする可能性があります。

このトラブルシューティングガイドでは、次の用語を使用します。トラブルシューティングステップは問題を特定して調査するための診断手順であり、解決策は特定された問題を修正するための特定のアクションを提供し、検証はソリューションが正しく機能したことを確認します。

クイックリファレンス: 問題を見つける

次のカテゴリを使用して、問題に関連するトラブルシューティングセクションをすばやく見つけます。

CSI ドライバーがないため、推論アドオンのインストールに失敗しました

問題: 必要な CSI ドライバーの依存関係が EKS クラスターにインストールされていないため、推論演算子のアドオンの作成が失敗します。

症状と診断

エラーメッセージ:

アドオン作成ログまたは推論演算子ログには、次のエラーが表示されます。

S3 CSI driver not installed (missing CSIDriver s3.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information. FSx CSI driver not installed (missing CSIDriver fsx.csi.aws.com). Please install the required CSI driver and see the troubleshooting guide for more information.

診断手順:

  1. CSI ドライバーがインストールされているかどうかを確認します。

    # Check for S3 CSI driver kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint # Check for FSx CSI driver kubectl get csidriver fsx.csi.aws.com kubectl get pods -n kube-system | grep fsx
  2. EKS アドオンのステータスを確認します。

    # List all add-ons aws eks list-addons --cluster-name $EKS_CLUSTER_NAME --region $REGION # Check specific CSI driver add-ons aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION 2>/dev/null || echo "S3 CSI driver not installed" aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION 2>/dev/null || echo "FSx CSI driver not installed"
  3. 推論演算子のアドオンステータスを確認します。

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json

解決策

ステップ 1: 見つからない S3 CSI ドライバーをインストールする

  1. S3 CSI ドライバーの IAM ロールを作成します (まだ作成されていない場合)。

    # Set up service account role ARN (from installation steps) export S3_CSI_ROLE_ARN=$(aws iam get-role --role-name $S3_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "S3 CSI Role ARN: $S3_CSI_ROLE_ARN"
  2. S3 CSI ドライバーアドオンをインストールします。

    aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-mountpoint-s3-csi-driver \ --addon-version v1.14.1-eksbuild.1 \ --service-account-role-arn $S3_CSI_ROLE_ARN \ --region $REGION
  3. S3 CSI ドライバーのインストールを確認します。

    # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION # Verify CSI driver is available kubectl get csidriver s3.csi.aws.com kubectl get pods -n kube-system | grep mountpoint

ステップ 2: 欠落している FSx CSI ドライバーをインストールする

  1. FSx CSI ドライバーの IAM ロールを作成します (まだ作成されていない場合)。

    # Set up service account role ARN (from installation steps) export FSX_CSI_ROLE_ARN=$(aws iam get-role --role-name $FSX_CSI_ROLE_NAME --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "FSx CSI Role ARN: $FSX_CSI_ROLE_ARN"
  2. FSx CSI ドライバーアドオンをインストールします。

    aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name aws-fsx-csi-driver \ --addon-version v1.6.0-eksbuild.1 \ --service-account-role-arn $FSX_CSI_ROLE_ARN \ --region $REGION # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION # Verify FSx CSI driver is running kubectl get pods -n kube-system | grep fsx

すべての依存関係を検証する

欠落している依存関係をインストールしたら、推論演算子のインストールを再試行する前に、それらが正しく実行されていることを確認します。

# Check all required add-ons are active aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-mountpoint-s3-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name aws-fsx-csi-driver --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name metrics-server --region $REGION aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify all pods are running kubectl get pods -n kube-system | grep -E "(mountpoint|fsx|metrics-server)" kubectl get pods -n cert-manager

モデルのデプロイ中に推論カスタムリソース定義がありません

問題: モデルデプロイを作成しようとすると、カスタムリソース定義 (CRDs) がありません。この問題は、ファイナライザーを持つモデルデプロイをクリーンアップせずに、推論アドオンを以前にインストールして削除した場合に発生します。

症状と診断

根本原因:

最初にすべてのモデルデプロイを削除せずに推論アドオンを削除した場合、ファイナライザーを持つカスタムリソースはクラスターに残ります。CRDs を削除する前に、これらのファイナライザーを完了する必要があります。アドオンの削除プロセスは CRD 削除が完了するまで待機しないため、CRDsは終了状態のままになり、新しいインストールができなくなります。

この問題を診断するには

  1. CRDsが存在するかどうかを確認します。

    kubectl get crd | grep inference.sagemaker.aws.amazon.com
  2. スタックしているカスタムリソースを確認します。

    # Check for JumpStartModel resources kubectl get jumpstartmodels -A # Check for InferenceEndpointConfig resources kubectl get inferenceendpointconfigs -A
  3. スタックしたリソースのファイナライザーを検査します。

    # Example for a specific JumpStartModel kubectl get jumpstartmodels <model-name> -n <namespace> -o jsonpath='{.metadata.finalizers}' # Example for a specific InferenceEndpointConfig kubectl get inferenceendpointconfigs <config-name> -n <namespace> -o jsonpath='{.metadata.finalizers}'

解決策

推論アドオンを削除したときに削除されなかったすべてのモデルデプロイからファイナライザーを手動で削除します。スタックしたカスタムリソースごとに次の手順を実行します。

JumpStartModel リソースからファイナライザーを削除するには

  1. すべての名前空間のすべての JumpStartModel リソースを一覧表示します。

    kubectl get jumpstartmodels -A
  2. JumpStartModel リソースごとに、リソースにパッチを適用してフィナライザーを削除し、metadata.finalizer を空の配列に設定します。

    kubectl patch jumpstartmodels <model-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge

    次の例は、kv-l1-only という名前のリソースにパッチを適用する方法を示しています。

    kubectl patch jumpstartmodels kv-l1-only -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
  3. モデルインスタンスが削除されていることを確認します。

    kubectl get jumpstartmodels -A

    すべてのリソースがクリーンアップされると、次の出力が表示されます。

    Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=jumpstartmodels": the server could not find the requested resource (get jumpstartmodels.inference.sagemaker.aws.amazon.com)
  4. JumpStartModel CRD が削除されていることを確認します。

    kubectl get crd | grep jumpstartmodels.inference.sagemaker.aws.amazon.com

    CRD が正常に削除された場合、このコマンドは出力を返しません。

InferenceEndpointConfig リソースからファイナライザーを削除するには

  1. すべての名前空間のすべての InferenceEndpointConfig リソースを一覧表示します。

    kubectl get inferenceendpointconfigs -A
  2. InferenceEndpointConfig リソースごとに、ファイナライザーを削除します。

    kubectl patch inferenceendpointconfigs <config-name> -n <namespace> -p '{"metadata":{"finalizers":[]}}' --type=merge

    次の例は、my-inference-config という名前のリソースにパッチを適用する方法を示しています。

    kubectl patch inferenceendpointconfigs my-inference-config -n default -p '{"metadata":{"finalizers":[]}}' --type=merge
  3. 設定インスタンスが削除されていることを確認します。

    kubectl get inferenceendpointconfigs -A

    すべてのリソースがクリーンアップされると、次の出力が表示されます。

    Error from server (NotFound): Unable to list "inference.sagemaker.aws.amazon.com/v1, Resource=inferenceendpointconfigs": the server could not find the requested resource (get inferenceendpointconfigs.inference.sagemaker.aws.amazon.com)
  4. InferenceEndpointConfig CRD が削除されていることを確認します。

    kubectl get crd | grep inferenceendpointconfigs.inference.sagemaker.aws.amazon.com

    CRD が正常に削除された場合、このコマンドは出力を返しません。

推論アドオンを再インストールするには

スタックしたすべてのリソースをクリーンアップし、CRDsが削除されたことを確認したら、推論アドオンを再インストールします。詳細については、「EKS アドオンを使用した推論演算子のインストール」を参照してください。

検証

  1. 推論アドオンが正常にインストールされていることを確認します。

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output table

    ステータスはアクティブで、ヘルスは正常である必要があります。

  2. CRDs が正しくインストールされていることを確認します。

    kubectl get crd | grep inference.sagemaker.aws.amazon.com

    推論関連の CRDsが出力に表示されます。

  3. 新しいモデルデプロイの作成をテストして、問題が解決されたことを確認します。

    # Create a test deployment using your preferred method kubectl apply -f <your-model-deployment.yaml>

防止

この問題を回避するには、推論アドオンをアンインストールする前に次の手順を実行します。

  1. すべてのモデルデプロイを削除します。

    # Delete all JumpStartModel resources kubectl delete jumpstartmodels --all -A # Delete all InferenceEndpointConfig resources kubectl delete inferenceendpointconfigs --all -A # Wait for all resources to be fully deleted kubectl get jumpstartmodels -A kubectl get inferenceendpointconfigs -A
  2. すべてのカスタムリソースが削除されていることを確認します。

  3. すべてのリソースがクリーンアップされたことを確認したら、推論アドオンを削除します。

cert-manager がないため、推論アドオンのインストールに失敗しました

問題: cert-manager EKS アドオンがインストールされていないため、推論演算子のアドオンの作成が失敗し、カスタムリソース定義 (CRDs。

症状と診断

エラーメッセージ:

アドオン作成ログまたは推論演算子ログには、次のエラーが表示されます。

Missing required CRD: certificaterequests.cert-manager.io. The cert-manager add-on is not installed. Please install cert-manager and see the troubleshooting guide for more information.

診断手順:

  1. cert-manager がインストールされているかどうかを確認します。

    # Check for cert-manager CRDs kubectl get crd | grep cert-manager kubectl get pods -n cert-manager # Check EKS add-on status aws eks describe-addon --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION 2>/dev/null || echo "Cert-manager not installed"
  2. 推論演算子のアドオンステータスを確認します。

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,Issues:issues}" \ --output json

解決策

ステップ 1: cert-manager アドオンをインストールする

  1. cert-manager EKS アドオンをインストールします。

    aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name cert-manager \ --addon-version v1.18.2-eksbuild.2 \ --region $REGION
  2. cert-manager のインストールを確認します。

    # Wait for add-on to be active aws eks wait addon-active --cluster-name $EKS_CLUSTER_NAME --addon-name cert-manager --region $REGION # Verify cert-manager pods are running kubectl get pods -n cert-manager # Verify CRDs are installed kubectl get crd | grep cert-manager | wc -l # Expected: Should show multiple cert-manager CRDs

ステップ 2: 推論演算子のインストールを再試行する

  1. cert-manager をインストールしたら、推論演算子のインストールを再試行します。

    # Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall the inference operator add-on aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION
  2. インストールをモニタリングします。

    # Check installation status aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health}" \ --output table # Verify inference operator pods are running kubectl get pods -n hyperpod-inference-system

ALB Controller がないため、推論アドオンのインストールに失敗しました

問題: ロード AWS Load Balancerコントローラーがインストールされていないか、推論アドオン用に正しく設定されていないため、推論演算子のアドオンの作成が失敗します。

症状と診断

エラーメッセージ:

アドオン作成ログまたは推論演算子ログには、次のエラーが表示されます。

ALB Controller not installed (missing aws-load-balancer-controller pods). Please install the Application Load Balancer Controller and see the troubleshooting guide for more information.

診断手順:

  1. ALB Controller がインストールされているかどうかを確認します。

    # Check for ALB Controller pods kubectl get pods -n kube-system | grep aws-load-balancer-controller kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller # Check ALB Controller service account kubectl get serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null || echo "ALB Controller service account not found" kubectl get serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null || echo "ALB Controller service account not found in inference namespace"
  2. 推論演算子のアドオン設定を確認します。

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json

解決策

設定に基づいて、次のいずれかのオプションを選択します。

オプション 1: 推論アドオンに ALB Controller をインストールさせる (推奨)

  • アドオン設定で ALB ロールが作成され、正しく設定されていることを確認します。

    # Verify ALB role exists export ALB_ROLE_ARN=$(aws iam get-role --role-name alb-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "ALB Role ARN: $ALB_ROLE_ARN" # Update your addon-config.json to enable ALB cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": true, "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF

オプション 2: 既存の ALB Controller のインストールを使用する

  • ALB Controller が既にインストールされている場合は、既存のインストールを使用するようにアドオンを設定します。

    # Update your addon-config.json to disable ALB installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "enabled": false }, "keda": { "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF

ステップ 3: 推論演算子のインストールを再試行する

  1. 更新された設定で推論演算子アドオンを再インストールします。

    # Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION
  2. ALB Controller が動作していることを確認します。

    # Check ALB Controller pods kubectl get pods -n hyperpod-inference-system | grep aws-load-balancer-controller kubectl get pods -n kube-system | grep aws-load-balancer-controller # Check service account annotations kubectl describe serviceaccount aws-load-balancer-controller -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount aws-load-balancer-controller -n kube-system 2>/dev/null

KEDA 演算子がないため、推論アドオンのインストールに失敗しました

問題: KEDA (Kubernetes Event Driven Autoscaler) 演算子がインストールされていないか、推論アドオンに正しく設定されていないため、推論演算子のアドオンの作成が失敗します。

症状と診断

エラーメッセージ:

アドオン作成ログまたは推論演算子ログには、次のエラーが表示されます。

KEDA operator not installed (missing keda-operator pods). KEDA can be installed separately in any namespace or via the Inference addon.

診断手順:

  1. KEDA 演算子がインストールされているかどうかを確認します。

    # Check for KEDA operator pods in common namespaces kubectl get pods -n keda-system | grep keda-operator 2>/dev/null || echo "KEDA not found in keda-system namespace" kubectl get pods -n kube-system | grep keda-operator 2>/dev/null || echo "KEDA not found in kube-system namespace" kubectl get pods -n hyperpod-inference-system | grep keda-operator 2>/dev/null || echo "KEDA not found in inference namespace" # Check for KEDA CRDs kubectl get crd | grep keda 2>/dev/null || echo "KEDA CRDs not found" # Check KEDA service account kubectl get serviceaccount keda-operator -A 2>/dev/null || echo "KEDA service account not found"
  2. 推論演算子のアドオン設定を確認します。

    aws eks describe-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION \ --query "addon.{Status:status,Health:health,ConfigurationValues:configurationValues}" \ --output json

解決策

設定に基づいて、次のいずれかのオプションを選択します。

オプション 1: 推論アドオンに KEDA をインストールさせる (推奨)

  • アドオン設定で KEDA ロールが作成され、正しく設定されていることを確認します。

    # Verify KEDA role exists export KEDA_ROLE_ARN=$(aws iam get-role --role-name keda-operator-role --query 'Role.Arn' --output text 2>/dev/null || echo "Role not found") echo "KEDA Role ARN: $KEDA_ROLE_ARN" # Update your addon-config.json to enable KEDA cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": true, "auth": { "aws": { "irsa": { "roleArn": "$KEDA_ROLE_ARN" } } } } } EOF

オプション 2: 既存の KEDA インストールを使用する

  • KEDA が既にインストールされている場合は、既存のインストールを使用するようにアドオンを設定します。

    # Update your addon-config.json to disable KEDA installation cat > addon-config.json << EOF { "executionRoleArn": "$EXECUTION_ROLE_ARN", "tlsCertificateS3Bucket": "$BUCKET_NAME", "hyperpodClusterArn": "$HYPERPOD_CLUSTER_ARN", "alb": { "serviceAccount": { "create": true, "roleArn": "$ALB_ROLE_ARN" } }, "keda": { "enabled": false } } EOF

ステップ 3: 推論演算子のインストールを再試行する

  1. 更新された設定で推論演算子アドオンを再インストールします。

    # Delete the failed add-on if it exists aws eks delete-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --region $REGION 2>/dev/null || echo "Add-on not found, proceeding with installation" # Wait for deletion to complete sleep 30 # Reinstall with updated configuration aws eks create-addon \ --cluster-name $EKS_CLUSTER_NAME \ --addon-name amazon-sagemaker-hyperpod-inference \ --addon-version v1.0.0-eksbuild.1 \ --configuration-values file://addon-config.json \ --region $REGION
  2. KEDA が動作していることを確認します。

    # Check KEDA pods kubectl get pods -n hyperpod-inference-system | grep keda kubectl get pods -n kube-system | grep keda kubectl get pods -n keda-system | grep keda 2>/dev/null # Check KEDA CRDs kubectl get crd | grep scaledobjects kubectl get crd | grep scaledjobs # Check KEDA service account annotations kubectl describe serviceaccount keda-operator -n hyperpod-inference-system 2>/dev/null kubectl describe serviceaccount keda-operator -n kube-system 2>/dev/null kubectl describe serviceaccount keda-operator -n keda-system 2>/dev/null

証明書のダウンロードタイムアウト

SageMaker AI エンドポイントをデプロイすると、VPC 環境で認証局 (CA) 証明書をダウンロードできないため、作成プロセスが失敗します。詳細な設定手順については、「 管理者ガイド」を参照してください。

エラーメッセージ:

SageMaker AI エンドポイントの CloudWatch ログに次のエラーが表示されます。

Error downloading CA certificate: Connect timeout on endpoint URL: "https://****.s3.<REGION>.amazonaws.com/****/***.pem"

根本原因:

  • この問題は、推論オペレーターが VPC 内の Amazon S3 の自己署名証明書にアクセスできない場合に発生します。

  • 証明書へのアクセスには Amazon S3 VPC エンドポイントの適切な設定が不可欠です

解決策:

  1. Amazon S3 VPC エンドポイントがない場合:

    • 管理者ガイドのセクション 5.3 の設定に従って Amazon S3 VPC エンドポイントを作成します。

  2. Amazon S3 VPC エンドポイントが既にある場合:

    • サブネットルートテーブルが VPC エンドポイント (ゲートウェイエンドポイントを使用している場合) を指すように設定されているか、インターフェイスエンドポイントに対してプライベート DNS が有効になっていることを確認します。

    • Amazon S3 VPC エンドポイントは、セクション 5.3 エンドポイント作成ステップで説明した設定と類似している必要があります

モデルデプロイが保留中状態でスタックしました

モデルをデプロイする場合、デプロイは長期間「保留中」状態のままになります。これは、推論オペレーターが HyperPod クラスターでモデルデプロイを開始できないことを示します。

影響を受けるコンポーネント:

通常のデプロイでは、推論演算子は次のことを行う必要があります。

  • モデルポッドをデプロイする

  • ロードバランサーの作成

  • SageMaker AI エンドポイントを作成する

トラブルシューティングのステップ:

  1. 推論オペレーターポッドのステータスを確認します。

    kubectl get pods -n hyperpod-inference-system

    予想される出力例:

    NAME READY STATUS RESTARTS AGE hyperpod-inference-operator-controller-manager-65c49967f5-894fg 1/1 Running 0 6d13h
  2. 推論オペレーターログを確認し、オペレーターログでエラーメッセージを確認します。

    kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system

検索対象:

  • オペレータログのエラーメッセージ

  • オペレータポッドのステータス

  • デプロイ関連の警告または障害

注記

正常なデプロイは、妥当な時間内に「保留中」状態を超えて進行する必要があります。問題が解決しない場合は、推論オペレーターログで特定のエラーメッセージを確認し、根本原因を特定します。

モデルデプロイの失敗状態のトラブルシューティング

モデルデプロイが「失敗」状態になると、次の 3 つのコンポーネントのいずれかで失敗が発生する可能性があります。

  • モデルポッドのデプロイ

  • ロードバランサーの作成

  • SageMaker AI エンドポイントの作成

トラブルシューティングのステップ:

  1. 推論演算子のステータスを確認します。

    kubectl get pods -n hyperpod-inference-system

    正常な出力:

    NAME READY STATUS RESTARTS AGE hyperpod-inference-operator-controller-manager-65c49967f5-894fg 1/1 Running 0 6d13h
  2. オペレーターログを確認します。

    kubectl logs hyperpod-inference-operator-controller-manager-5b5cdd7757-txq8f -n hyperpod-inference-operator-system

検索対象:

オペレータログには、失敗したコンポーネントが表示されます。

  • モデルポッドのデプロイの失敗

  • ロードバランサーの作成に関する問題

  • SageMaker AI エンドポイントエラー

モデルのデプロイの進行状況の確認

モデルのデプロイの進行状況をモニタリングし、潜在的な問題を特定するには、kubectl コマンドを使用してさまざまなコンポーネントのステータスを確認できます。これにより、デプロイが正常に進行しているか、モデルポッドの作成、ロードバランサーのセットアップ、または SageMaker AI エンドポイントの設定フェーズ中に問題が発生したかどうかを判断できます。

方法 1: JumpStart モデルのステータスを確認する

kubectl describe jumpstartmodel.inference.sagemaker.aws.amazon.com/<model-name> -n <namespace>

モニタリングする主要なステータスインジケータ:

  1. デプロイのステータス

    • を探すStatus.State: 表示する必要があります DeploymentComplete

    • チェック Status.Deployment Status.Available Replicas

    • デプロイの進行状況をモニタリングStatus.Conditionsする

  2. SageMaker AI エンドポイントのステータス

    • チェックStatus.Endpoints.Sagemaker.State: 表示する必要があります CreationCompleted

    • 検証 Status.Endpoints.Sagemaker.Endpoint Arn

  3. TLS 証明書のステータス

    • Status.Tls Certificate 詳細の表示

    • で証明書の有効期限を確認する Last Cert Expiry Time

方法 2: 推論エンドポイントの設定を確認する

kubectl describe inferenceendpointconfig.inference.sagemaker.aws.amazon.com/<deployment_name> -n <namespace>

一般的なステータス状態:

  • DeploymentInProgress: 初期デプロイフェーズ

  • DeploymentComplete: デプロイの成功

  • Failed: デプロイに失敗しました

注記

警告やエラーがないかイベントセクションをモニタリングします。レプリカ数が予想される設定と一致していることを確認します。正常なデプロイStatus: Trueにすべての条件が表示されることを確認します。

VPC ENI アクセス許可の問題

VPC でネットワークインターフェイスを作成するアクセス許可が不十分であるため、SageMaker AI エンドポイントの作成が失敗します。

エラーメッセージ:

Please ensure that the execution role for variant AllTraffic has sufficient permissions for creating an endpoint variant within a VPC

根本原因:

推論演算子の実行ロールに、VPC にネットワークインターフェイス (ENI) を作成するために必要な Amazon EC2 アクセス許可がありません。

解決策:

推論演算子の実行ロールに次の IAM アクセス許可を追加します。

{ "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterfacePermission" ], "Resource": "*" }

検証:

アクセス許可を追加した後:

  1. 失敗したエンドポイントを削除する (存在する場合)

  2. エンドポイントの作成を再試行する

  3. デプロイのステータスをモニタリングして正常に完了する

注記

このアクセス許可は、VPC モードで実行される SageMaker AI エンドポイントに不可欠です。実行ロールに必要な他のすべての VPC 関連のアクセス許可も付与されていることを確認します。

IAM 信頼関係の問題

HyperPod 推論演算子は STS AssumeRoleWithWebIdentity エラーで開始できず、IAM 信頼関係設定の問題を示します。

エラーメッセージ:

failed to enable inference watcher for HyperPod cluster *****: operation error SageMaker: UpdateClusterInference, get identity: get credentials: failed to refresh cached credentials, failed to retrieve credentials, operation error STS: AssumeRoleWithWebIdentity, https response error StatusCode: 403, RequestID: ****, api error AccessDenied: Not authorized to perform sts:AssumeRoleWithWebIdentity

解決策:

推論演算子の IAM 実行ロールの信頼関係を次の設定で更新します。

次のプレースホルダーを置き換えます。

  • <ACCOUNT_ID>: AWS アカウント ID

  • <REGION>: AWS リージョン

  • <OIDC_ID>: Amazon EKS クラスターの OIDC プロバイダー ID

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.us-east-2.amazonaws.com/id/<OIDC_ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringLike": { "oidc.eks.us-east-2.amazonaws.com/id/<OIDC_ID>:sub": "system:serviceaccount:<namespace>:<service-account-name>", "oidc.eks.us-east-2.amazonaws.com/id/<OIDC_ID>:aud": "sts.amazonaws.com" } } }, { "Effect": "Allow", "Principal": { "Service": [ "sagemaker.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

検証:

信頼関係を更新した後:

  1. IAM コンソールでロール設定を確認する

  2. 必要に応じて推論演算子を再起動する

  3. オペレーターログをモニタリングして正常に起動する

NVIDIA GPU プラグインの欠落エラー

使用可能な GPU ノードがあるにもかかわらず、モデルのデプロイは GPU 不足エラーで失敗します。これは、NVIDIA デバイスプラグインが HyperPod クラスターにインストールされていない場合に発生します。

エラーメッセージ:

0/15 nodes are available: 10 node(s) didn't match Pod's node affinity/selector, 5 Insufficient nvidia.com/gpu. preemption: 0/15 nodes are available: 10 Preemption is not helpful for scheduling, 5 No preemption victims found for incoming pod.

根本原因:

  • Kubernetes が NVIDIA デバイスプラグインなしで GPU リソースを検出できない

  • GPU ワークロードのスケジューリングが失敗する

解決策:

以下を実行して NVIDIA GPU プラグインをインストールします。

kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/refs/tags/v0.17.1/deployments/static/nvidia-device-plugin.yml

検証ステップ:

  1. プラグインのデプロイステータスを確認します。

    kubectl get pods -n kube-system | grep nvidia-device-plugin
  2. GPU リソースが表示されるようになりました。

    kubectl get nodes -o=custom-columns=NAME:.metadata.name,GPU:.status.allocatable.nvidia\\.com/gpu
  3. モデルのデプロイを再試行する

注記

NVIDIA ドライバーが GPU ノードにインストールされていることを確認します。プラグインのインストールは、クラスターごとに 1 回限りのセットアップです。インストールにはクラスター管理者権限が必要になる場合があります。

推論演算子の起動に失敗する

推論演算子ポッドの起動に失敗し、次のエラーメッセージが発生しています。このエラーは、オペレーター実行ロールのアクセス許可ポリシーが の実行を許可されていないためですsts:AssumeRoleWithWebIdentity。このため、コントロールプレーンで実行されているオペレータパートは開始されません。

エラーメッセージ:

Warning Unhealthy 5m46s (x22 over 49m) kubelet Startup probe failed: Get "http://10.1.100.59:8081/healthz": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

根本原因:

  • 推論演算子実行ロールのアクセス許可ポリシーは、 リソースの認可トークンにアクセスするように設定されていません。

解決策:

HyperPod 推論演算子の の実行ロールEXECUTION_ROLE_ARNに次のポリシーを設定します。

HyperpodInferenceAccessPolicy-ml-cluster to include all resources
JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:GetObject", "s3:DeleteObject" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }

検証ステップ:

  1. ポリシーを変更します。

  2. HyperPod 推論演算子ポッドを終了します。

  3. ポッドは例外をスローせずに再起動されます。