トレーニングオペレーターのインストール - Amazon SageMaker AI

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

トレーニングオペレーターのインストール

トレーニングオペレーターをインストールする方法については、以下のセクションを参照してください。

前提条件

HyperPod トレーニング演算子を使用する前に、次の前提条件を満たしている必要があります。

HyperPod トレーニングオペレーターをインストールするには、まず他のコンポーネントをインストールする必要があります。これを行う方法については、以下のセクションを参照してください。

ステップ 1: Amazon EKS Pod Identity エージェントを設定する

  1. 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" ] } ] }
  2. 新しく作成したロールに次の IAM ポリシーをアタッチします。HyperPod クラスター ARN を必ず指定してください。

    JSON
    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeClusterNode" ], "Resource": "arn:aws:sagemaker:us-east-1:111122223333:cluster/cluster_name" } ] }
  3. コンソールを使用して EKS Pod Identity Agent を設定します。を使用する場合は AWS CLI、次のコマンドを使用します。

    aws eks create-addon \ --cluster-name my-eks-cluster \ --addon-name eks-pod-identity-agent \ --region AWS リージョン
  4. 次に、EKS クラスター、IAM ロール、新しい IAM ロールの間にポッド ID の関連付けを作成します

    aws eks create-pod-identity-association \ --cluster-name my-eks-cluster \ --role-arn ARN of your role \ --namespace aws-hyperpod \ --service-account hp-training-operator-controller-manager \ --region AWS リージョン
  5. プロセスが完了したら、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 の拡張機能です。各コンテナのトレーニングワーカーのライフサイクルをオーケストレーションし、HyperPod トレーニングオペレーターと通信します。HyperPod トレーニングオペレータを使用するには、オペレータを使用してジョブを送信および実行する前に、まず HyperPod エラスティックエージェントをトレーニングイメージにインストールする必要があります。以下は、Elastic エージェントをインストールし、 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 をインストールするには、次の手順に従います。

  1. Kueue の公式ドキュメントのインストールガイドに従ってください。を設定するステップに達したらcontroller_manager_config.yaml、次の設定を追加します。

    externalFrameworks: - "HyperPodPytorchJob.v1.sagemaker.amazonaws.com"
  2. 公式のインストールガイドの残りの手順に従ってください。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