翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon SageMaker HyperPod での GPU パーティションの設定 HyperPod
トピック
前提条件
-
サポートされている GPU インスタンスを持つ HyperPod Amazon EKS クラスター
-
NVIDIA GPU Operator のインストール
-
クラスター管理のための適切な IAM アクセス許可
MIG 設定を使用したクラスターの作成
の使用AWS CLI
aws sagemaker create-cluster \ --cluster-name my-mig-cluster \ --orchestrator 'Eks={ClusterArn=arn:aws:eks:region:account:cluster/cluster-name}' \ --instance-groups '{ "InstanceGroupName": "gpu-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://my-bucket", "OnCreate": "on_create_script.sh" }, "KubernetesConfig": { "Labels": { "nvidia.com/mig.config": "all-1g.5gb" } }, "ExecutionRole": "arn:aws:iam::account:role/execution-role", "ThreadsPerCore": 1 }' \ --vpc-config '{ "SecurityGroupIds": ["sg-12345"], "Subnets": ["subnet-12345"] }' \ --node-provisioning-mode Continuous
の使用CloudFormation
{ "ClusterName": "my-mig-cluster", "InstanceGroups": [ { "InstanceGroupName": "gpu-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 1, "KubernetesConfig": { "Labels": { "nvidia.com/mig.config": "all-2g.10gb" } }, "ExecutionRole": "arn:aws:iam::account:role/execution-role" } ], "Orchestrator": { "Eks": { "ClusterArn": "arn:aws:eks:region:account:cluster/cluster-name" } }, "NodeProvisioningMode": "Continuous" }
既存のクラスターへの GPU 演算子の追加
GPU Operator をインストールする
をクラスターリージョン (us-east-1、us-west-2 など) {$AWS_REGION}に置き換えます。
helm install gpuo helm_chart/HyperPodHelmChart/charts/gpu-operator \ -f helm_chart/HyperPodHelmChart/charts/gpu-operator/regional-values/values-{$AWS_REGION}.yaml \ -n kube-system
インストールの確認 (2~3 分待機)
すべての GPU オペレータポッドが実行されていることを確認します。
kubectl get pods -n kube-system | grep -E "(gpu-operator|nvidia-)"
予想されるポッド:
-
gpu-operator-* - 1 インスタンス (クラスターコントローラー)
-
nvidia-device-plugin-daemonset-* - GPU ノードあたり 1 (すべての GPU インスタンス)
-
nvidia-mig-manager-* - MIG 対応ノードあたり 1 (A100/H100)
古いデバイスプラグインを削除する
既存の nvidia-device-plugin を無効にします。
helm upgrade dependencies helm_chart/HyperPodHelmChart \ --set nvidia-device-plugin.devicePlugin.enabled=false \ -n kube-system
GPU リソースの検証
ノードに GPU 容量が表示されていることを確認します。nvidia.com/gpu: 8 (または実際の GPU 数) が表示されます。
kubectl describe nodes | grep "nvidia.com/gpu"
MIG 設定の更新
MIG 更新前のノードの準備
インスタンスグループの MIG 設定を更新する前に、ワークロードの中断を防ぐためにノードを準備する必要があります。再設定するノードからワークロードを安全にドレインするには、次の手順に従います。
ステップ 1: インスタンスグループのノードを特定する
まず、更新するインスタンスグループに属するすべてのノードを特定します。
# List all nodes in the instance group kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=INSTANCE_GROUP_NAME# Example: kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=p4d-group
このコマンドは、指定されたインスタンスグループ内のすべてのノードのリストを返します。次の手順では、各ノード名を書き留めます。
ステップ 2: 各ノードのコードとドレイン
ステップ 1 で識別されたノードごとに、次のアクションを実行します。
ノードをコーディングする
コーディングにより、ノードで新しいポッドをスケジュールできなくなります。
# Cordon a single node kubectl cordonNODE_NAME# Example: kubectl cordon hyperpod-i-014a41a7001adca60
ノードからワークロードポッドをドレインする
ノードをドレインして、システムポッドを保持しながらすべてのワークロードポッドを削除します。
# Drain the node (ignore DaemonSets and evict pods) kubectl drainNODE_NAME\ --ignore-daemonsets \ --delete-emptydir-data \ --force \ --grace-period=300 # Example: kubectl drain hyperpod-i-014a41a7001adca60 \ --ignore-daemonsets \ --delete-emptydir-data \ --force \ --grace-period=300
コマンドオプションの説明:
-
--ignore-daemonsets- DaemonSet ポッドが存在する場合でも、ドレインオペレーションを続行できます -
--delete-emptydir-data- emptyDir ボリュームを使用してポッドを削除します (ドレインを成功させるために必要) -
--force- コントローラーによって管理されていないポッドを強制的に削除します (注意して使用) -
--grace-period=300- ポッドが正常に終了するまで 5 分かかります
重要
-
ポッドの数とその終了猶予期間によっては、ドレインオペレーションに数分かかる場合があります。
-
次の名前空間のシステムポッドは実行されたままになります:
kube-system、cert-manager、、kubeflowhyperpod-inference-system、kube-public、、mpi-operator、、gpu-operatoraws-hyperpodjupyter-k8s-systemhyperpod-observability、、kueue-system、およびkeda -
DaemonSet ポッドはノードに残ります (設計上無視されます)
ステップ 3: ワークロードポッドが実行されていないことを確認する
ドレイン後、ノードにワークロードポッドが残っていないことを確認します (システム名前空間を除く)。
# Check for any remaining pods outside system namespaces kubectl get pods --all-namespaces --field-selector spec.nodeName=NODE_NAME\ | grep -v "kube-system" \ | grep -v "cert-manager" \ | grep -v "kubeflow" \ | grep -v "hyperpod-inference-system" \ | grep -v "kube-public" \ | grep -v "mpi-operator" \ | grep -v "gpu-operator" \ | grep -v "aws-hyperpod" \ | grep -v "jupyter-k8s-system" \ | grep -v "hyperpod-observability" \ | grep -v "kueue-system" \ | grep -v "keda" # Example: kubectl get pods --all-namespaces --field-selector spec.nodeName=hyperpod-i-014a41a7001adca60 \ | grep -v "kube-system" \ | grep -v "cert-manager" \ | grep -v "kubeflow" \ | grep -v "hyperpod-inference-system" \ | grep -v "kube-public" \ | grep -v "mpi-operator" \ | grep -v "gpu-operator" \ | grep -v "aws-hyperpod" \ | grep -v "jupyter-k8s-system" \ | grep -v "hyperpod-observability" \ | grep -v "kueue-system" \ | grep -v "keda"
予想される出力: ノードが適切にドレインされている場合、このコマンドは結果を返さない (またはヘッダー行のみを表示する) 必要があります。まだ実行中のポッドがある場合は、削除されなかった理由を調査し、必要に応じて手動で削除します。
ステップ 4: ノードの準備状況ステータスを確認する
MIG 更新に進む前に、すべてのノードが接続されていることを確認します。
# Check node status - should show "SchedulingDisabled" kubectl get nodes -l sagemaker.amazonaws.com/instance-group-name=INSTANCE_GROUP_NAME
ノードは STATUS 列SchedulingDisabledに表示され、接続され、MIG 更新の準備ができていることを示します。
既存のクラスターで MIG プロファイルを更新する
既存のクラスターで MIG プロファイルを変更できます。
aws sagemaker update-cluster \ --cluster-name my-mig-cluster \ --instance-groups '{ "InstanceGroupName": "gpu-group", "InstanceType": "ml.p4d.24xlarge", "InstanceCount": 1, "KubernetesConfig": { "Labels": { "nvidia.com/mig.config": "all-3g.20gb" } }, "ExecutionRole": "arn:aws:iam::account:role/execution-role" }'
注記
ジョブがノードで既に実行されている場合、MIG パーティショニングは失敗します。ユーザーは、MIG パーティショニングを再度試行する前に、ノードをドレインするためのエラーメッセージを受け取ります。
MIG 設定の検証
クラスターの作成または更新後、MIG 設定を確認します。
# Update kubeconfig aws eks update-kubeconfig --nameyour-eks-cluster--regionus-east-2# Check MIG labels kubectl get nodeNODE_NAME-o=jsonpath='{.metadata.labels}' | grep mig # Check available MIG resources kubectl describe nodeNODE_NAME| grep -A 10 "Allocatable:"
MIG 設定をデバッグするための一般的なコマンド
次のコマンドを使用して、クラスター内の MIG 設定のトラブルシューティングと検証を行います。
# Check GPU Operator status kubectl get pods -n gpu-operator-resources # View MIG configuration kubectl exec -n gpu-operator-resources nvidia-driver-XXXXX -- nvidia-smi mig -lgi # Check device plugin configuration kubectl logs -n gpu-operator-resources nvidia-device-plugin-XXXXX # Monitor node events kubectl get events --field-selector involvedObject.name=NODE_NAME
注記
nvidia-driver-XXXXX と をクラスターの実際のポッド名nvidia-device-plugin-XXXXXに置き換え、 をノードの名前NODE_NAMEに置き換えます。
SageMaker AI コンソールの使用
MIG を使用した新しいクラスターの作成
-
Amazon SageMaker AI > HyperPod クラスター > クラスター管理 > HyperPod クラスターの作成に移動する
-
EKS でオーケストレーションされた を選択する
-
カスタムセットアップを選択し、GPU Operator がデフォルトで有効になっていることを確認する
-
「インスタンスグループ」セクションで「グループの追加」をクリックします。
-
インスタンスグループを設定し、詳細設定に移動して GPU パーティショントグルの使用を有効にし、ドロップダウンから目的の MIG 設定を選択します。
-
インスタンスグループを追加をクリックし、残りのクラスター設定を完了します。
-
送信をクリックしてクラスターを作成します
既存のクラスターでの MIG 設定の更新
-
Amazon SageMaker AI > HyperPod クラスター > クラスター管理に移動する
-
既存のクラスターを選択し、変更するインスタンスグループの編集をクリックします。
-
詳細設定で、まだ有効になっていない場合は GPU パーティションを使用し、ドロップダウンから別の MIG 設定を選択する
-
変更の保存 をクリックします。