翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トレーニングオペレーターのインストール
トレーニングオペレーターをインストールする方法については、以下のセクションを参照してください。
前提条件
HyperPod トレーニング演算子を使用する前に、次の前提条件を満たしている必要があります。
-
HyperPod クラスターに最新の AMI をインストールしました。詳細については、Amazon EKS 用の SageMaker HyperPod AMI リリースを参照してください。
HyperPod トレーニングオペレーターをインストールするには、まず他のコンポーネントをインストールする必要があります。これを行う方法については、以下のセクションを参照してください。
ステップ 1: Amazon EKS Pod Identity エージェントを設定する
-
HyperPod クラスターの IAM 実行ロールに eks-auth:AssumeRoleForPodIdentity アクセス許可があることを確認するか、トレーニングオペレーターで使用する以下のアクセス許可を持つ新しい IAM ロールを作成します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
-
新しく作成したロールに次の IAM ポリシーをアタッチします。HyperPod クラスター ARN を必ず指定してください。
-
コンソールを使用して EKS Pod Identity Agent を設定します。を使用する場合は AWS CLI、次のコマンドを使用します。
aws eks create-addon \ --cluster-name
my-eks-cluster
\ --addon-name eks-pod-identity-agent \ --regionAWS リージョン
-
次に、EKS クラスター、IAM ロール、新しい IAM ロールの間にポッド ID の関連付けを作成します。
aws eks create-pod-identity-association \ --cluster-name
my-eks-cluster
\ --role-arnARN of your role
\ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --regionAWS リージョン
-
プロセスが完了したら、ListPodIdentityAssociations オペレーションを使用して、作成した関連付けを表示できます。以下は、どのように表示されるかを示すレスポンスの例です。
aws eks list-pod-identity-associations --cluster-name my-eks-cluster { "associations": [{ "clusterName": "
my-eks-cluster
", "namespace": "aws-hyperpod", "serviceAccount": "hp-training-operator-controller-manager", "associationArn": "arn:aws:eks:us-east-2:123456789012:podidentityassociation/my-hyperpod-cluster/a-1a2b3c4d5e6f7g8h9", "associationId": "a-1a2b3c4d5e6f7g8h9
" }] }
ステップ 2: HyperPod トレーニングオペレーターをインストールする
HyperPod トレーニングオペレーターは、Amazon EKS コンソールまたは CreateAddOn API オペレーションを使用してインストールできるようになりました。コンソールを使用している場合は、Amazon SageMaker HyperPod トレーニングオペレーターという名前のアドオンを検索します。
API と CLI を使用して 演算子をインストールする方法の例を以下に示します。--addon-version
パラメータはオプションです。指定しない場合、デフォルトは最新バージョンです。可能なバージョンを取得するには、DescribeAddonVersions オペレーションを使用します。
注記
Amazon SageMaker HyperPod タスクガバナンスは、トレーニングオペレーターではサポートされていません。
aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name amazon-sagemaker-hyperpod-training-operator \ --resolve-conflicts OVERWRITE
トレーニングオペレーターには、ユースケースに適したデフォルト値を持つオプションが多数用意されています。トレーニング演算子は、変更する前にデフォルト値で試すことをお勧めします。次の表は、各パラメータを設定する場合のすべてのパラメータと例を示しています。
パラメータ | 説明 | デフォルト |
---|---|---|
hpTrainingControllerManager.manager.resources.requests.cpu | コントローラーに割り当てるプロセッサの数 | 1 |
hpTrainingControllerManager.manager.resources.requests.memory | コントローラーに割り当てるメモリの量 | 2Gi |
hpTrainingControllerManager.manager.resources.limits.cpu | コントローラーの CPU 制限 | 2 |
hpTrainingControllerManager.manager.resources.limits.memory | コントローラーのメモリ制限 | 4Gi |
hpTrainingControllerManager.nodeSelector | コントローラーポッドのノードセレクタ | デフォルトの動作では、 ラベルのノードを選択します。 sagemaker.amazonaws.com/compute-type: "HyperPod" |
ステップ 3: HyperPod エラスティックエージェントをインストールする
HyperPod エラスティックエージェントは、PyTorch の ElasticAgent の拡張機能ですhyperpodrun
を使用してジョブランチャーを作成する Docker ファイルです。
RUN pip install hyperpod-elastic-agent ENTRYPOINT ["entrypoint.sh"] # entrypoint.sh ... hyperpodrun --nnodes=
node_count
--nproc-per-node=proc_count
\ --rdzv-backend hyperpod \ # Optional ... # Other torchrun args # pre-traing arg_group --pre-train-script pre.sh --pre-train-args "pre_1 pre_2 pre_3" \ # post-train arg_group --post-train-script post.sh --post-train-args "post_1 post_2 post_3" \training.py
--script-args
でジョブを送信できるようになりましたkubectl
。
HyperPod Elastic Agent 引数
HyperPod エラスティックエージェントは、元の引数をすべてサポートし、いくつかの引数を追加します。以下は、HyperPod エラスティックエージェントで使用できるすべての引数です。PyTorch の Elastic Agent の詳細については、公式ドキュメント
引数 | 説明 | デフォルト値 |
---|---|---|
--shutdown-signal | シャットダウンのためにワーカーに送信するシグナル (SIGTERM または SIGKILL) | 「SIGKILL」 |
--shutdown-timeout | SIGTERM シグナルと SIGKILL シグナルの間の秒単位のタイムアウト | 30 |
--server-host | エージェントサーバーのアドレス | 「0.0.0.0」 |
--server-port | エージェントサーバーポート | 8080 |
--server-log-level | エージェントサーバーのログレベル | 「情報」 |
--server-shutdown-timeout | 秒単位のサーバーシャットダウンタイムアウト | 300 |
--pre-train-script | 事前トレーニングスクリプトへのパス | なし |
--pre-train-args | 事前トレーニングスクリプトの引数 | なし |
--post-train-script | トレーニング後のスクリプトへのパス | なし |
--post-train-args | トレーニング後のスクリプトの引数 | なし |
キュー (オプション)
ジョブを直接実行できますが、組織はトレーニングオペレーターを Kueue と統合してリソースを割り当て、ジョブをスケジュールすることもできます。HyperPod クラスターに Kueue をインストールするには、次の手順に従います。
-
Kueue の公式ドキュメント
のインストールガイドに従ってください。を設定するステップに達したら controller_manager_config.yaml
、次の設定を追加します。externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
-
公式のインストールガイドの残りの手順に従ってください。Kueue のインストールが完了したら、
kubectl apply -f sample-queues.yaml
コマンドを使用していくつかのサンプルキューを作成できます。次の YAML ファイルを使用します。apiVersion: kueue.x-k8s.io/v1beta1 kind: ClusterQueue metadata: name: cluster-queue spec: namespaceSelector: {} preemption: withinClusterQueue: LowerPriority resourceGroups: - coveredResources: - cpu - nvidia.com/gpu - pods flavors: - name: default-flavor resources: - name: cpu nominalQuota: 16 - name: nvidia.com/gpu nominalQuota: 16 - name: pods nominalQuota: 16 --- apiVersion: kueue.x-k8s.io/v1beta1 kind: LocalQueue metadata: name: user-queue namespace: default spec: clusterQueue: cluster-queue --- apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor --- apiVersion: kueue.x-k8s.io/v1beta1 description: High priority kind: WorkloadPriorityClass metadata: name: high-priority-class value: 1000 --- apiVersion: kueue.x-k8s.io/v1beta1 description: Low Priority kind: WorkloadPriorityClass metadata: name: low-priority-class value: 500