翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
SageMaker HyperPod クラスターの作成
AWS CLIを使用して Amazon EKS によってオーケストレーションされた SageMaker HyperPod クラスターを作成する方法を説明します。
-
SageMaker HyperPod クラスターを作成する前に:
-
既存の Amazon EKS クラスターが実行されていることを確認します。新しい Amazon EKS クラスターを作成する手順については、「Amazon EKS ユーザーガイド」の「Amazon EKS クラスターを作成します」を参照してください。
-
「Helm を使用して Amazon EKS クラスターにパッケージをインストールする」の手順に従って、Helm チャートをインストールします。制限されたインスタンスグループ (RIG) を使用した HyperPod EKS クラスターの作成 を作成する場合は、別の Helm チャートが必要です。
-
-
ライフサイクル設定スクリプトを準備し、
s3://などの Amazon S3 バケットにアップロードします。amzn-s3-demo-bucket/Lifecycle-scripts/base-config/クイックスタートでは、ome Distributed Training GitHub AWSリポジトリ
on_create.shからサンプルスクリプトをダウンロードし、S3 バケットにアップロードします。HyperPod クラスターのプロビジョニングステージ中に実行する追加のセットアップ手順、一連のセットアップスクリプト、またはコマンドを含めることもできます。 重要
マネージド
AmazonSageMakerClusterInstanceRolePolicyのみアタッチして SageMaker HyperPod の IAM ロール を作成すると、クラスターは特定のプレフィックスsagemaker-を持つ Amazon S3 バケットにアクセスできます。制限付きインスタンスグループを作成する場合、ライフサイクルスクリプトをダウンロードして実行する必要はありません。代わりに、
install_rig_dependencies.shを実行する必要があります。install_rig_dependencies.shスクリプトを実行するための前提条件は次のとおりです。-
AWS ノード (CNI) と CoreDNS の両方を有効にする必要があります。これらは標準の EKS アドオンであり、標準の SageMaker HyperPod Helm によって管理されませんが、アドオンの EKS コンソールで簡単に有効にできます。
-
このスクリプトを実行する前に、標準の SageMaker HyperPod Helm チャートをインストールする必要があります。
install_rig_dependencies.shスクリプトは、以下のアクションを実行します。-
aws-node(CNI): 新しいrig-aws-nodeデーモンセットが作成されました。RIG ノードを避けるために既存のaws-nodeパッチが適用されました。 -
coredns: 複数の RIG の使用をサポートし、過負荷を防止するため、RIG 用の Daemonset に変換されました。 -
training-operators: RIG ワーカーの taint 許容と、RIG 以外のインスタンスを優先する nodeAffinity を更新しました。
-
Elastic Fabric Adapter (EFA): RIG ワーカーの taint を許容し、各リージョンで適切なコンテナイメージを使用するように更新しました。
-
-
CreateCluster API リクエストファイルを JSON 形式で準備します。
ExecutionRoleには、セクション SageMaker HyperPod の IAM ロール から マネージドAmazonSageMakerClusterInstanceRolePolicyで作成した IAM ロールの ARN を指定します。注記
SageMaker HyperPod クラスターが Amazon EKS クラスターと同じ仮想プライベートクラウド (VPC) 内にデプロイされていることを確認します。SageMaker HyperPod クラスター設定で指定されたサブネットとセキュリティグループは、Amazon EKS クラスターの API サーバーエンドポイントとのネットワーク接続と通信を許可する必要があります。
// create_cluster.json{ "ClusterName":"string", "InstanceGroups": [{ "InstanceGroupName":"string", "InstanceType":"string", "InstanceCount":number, "LifeCycleConfig": { "SourceS3Uri":"s3://amzn-s3-demo-bucket-sagemaker/lifecycle-script-directory/src/", "OnCreate":"on_create.sh"}, "ExecutionRole":"string", "ThreadsPerCore":number, "OnStartDeepHealthChecks": ["InstanceStress", "InstanceConnectivity"] }], "RestrictedInstanceGroups": [ { "EnvironmentConfig": { "FSxLustreConfig": { "PerUnitStorageThroughput":number, "SizeInGiB":number} }, "ExecutionRole":"string", "InstanceCount":number, "InstanceGroupName":"string", "InstanceStorageConfigs": [ { ... } ], "InstanceType":"string", "OnStartDeepHealthChecks": ["string"], "OverrideVpcConfig": { "SecurityGroupIds": ["string"], "Subnets": ["string"] }, "ScheduledUpdateConfig": { "DeploymentConfig": { "AutoRollbackConfiguration": [ { "AlarmName":"string"} ], "RollingUpdatePolicy": { "MaximumBatchSize": { "Type":"string", "Value":number}, "RollbackMaximumBatchSize": { "Type":"string", "Value":number} }, "WaitIntervalInSeconds":number}, "ScheduleExpression":"string"}, "ThreadsPerCore":number, "TrainingPlanArn":"string"} ], "VpcConfig": { "SecurityGroupIds": ["string"], "Subnets": ["string"] }, "Tags": [{ "Key":"string", "Value":"string"}], "Orchestrator": { "Eks": { "ClusterArn":"string", "KubernetesConfig": { "Labels": {"nvidia.com/mig.config": "all-3g.40gb"} } } }, "NodeRecovery": "Automatic" }EKS クラスターに関連付ける新しい SageMaker HyperPod クラスターを作成するよう設定するときは、次の点に注意してください。
-
InstanceGroupsパラメータでは、最大 20 個のインスタンスグループを設定できます。 -
Orchestator.Eks.ClusterArnでは、オーケストレーターとして使用する EKS クラスターの ARN を指定します。 -
OnStartDeepHealthChecksでは、InstanceStressとInstanceConnectivityを追加して ディープヘルスチェック を有効にします。 -
NodeRecoveryでは、Automaticを指定して自動ノード復旧を有効にします。SageMaker HyperPod は、ヘルスモニタリングエージェントが問題を見つけたときにインスタンス (ノード) を置き換えるか再起動します。 -
Tagsパラメータには、SageMaker HyperPod クラスターを AWS リソースとして管理するためのカスタムタグを追加できます。タグは、タグ付けをサポートする他の AWS サービスに追加するのと同じ方法でクラスターに追加できます。 AWS リソースのタグ付け全般の詳細については、「AWS リソースのタグ付けのユーザーガイド」を参照してください。 -
VpcConfigパラメータでは、EKS クラスターで使用される VPC の情報を指定します。サブネットはプライベートでなければなりません。 -
では
Orchestrator.Eks.KubernetesConfig.Labels、オプションでノードに適用する Kubernetes ラベルを指定できます。マルチインスタンス GPU (MIG) で GPU パーティショニングを有効にするには、目的の MIG プロファイルを持つnvidia.com/mig.configラベルを追加します。たとえば、 は 3g.40gb パーティションプロファイルですべての GPUs"nvidia.com/mig.config": "all-3g.40gb"を設定します。GPU パーティショニングと使用可能なプロファイルの詳細については、「」を参照してくださいAmazon SageMaker HyperPod での GPU パーティションの使用 HyperPod。
-
-
次のように create-cluster コマンドを実行します。
重要
--cli-input-jsonパラメータを指定してcreate-clusterコマンドを実行する場合、JSON ファイルへの完全なパスの前にfile://プレフィックスを付ける必要があります。このプレフィックスは、 が入力をファイルパスとして AWS CLI 認識するために必要です。file://プレフィックスを省略すると、解析パラメータエラーが発生します。aws sagemaker create-cluster \ --cli-input-jsonfile://complete/path/to/create_cluster.jsonこれにより、新しいクラスターの ARN が返されます。
重要
update-cluster オペレーションを使用すると、制限付きインスタンスグループ (RIG) を削除できます。RIG を 0 にスケールダウンしても、Lustre ファイルシステム用 FSx は削除されません。Lustre ファイルシステム用 FSx を完全に削除するには、RIG を完全に削除する必要があります。
RIG を削除しても、サービスマネージド Amazon S3 バケットに保存されているアーティファクトは削除されません。ただし、削除する前に、Lustre ファイルシステム用 FSx 内のすべてのアーティファクトが Amazon S3 と完全に同期されていることを確認する必要があります。Lustre ファイルシステム用 FSx からサービスマネージド Amazon S3 バケットへのすべてのアーティファクトの完全な同期を確保するために、ジョブ完了後少なくとも 30 分待つことをお勧めします。
重要
オンボードオンデマンドキャパシティ予約 (ODCR) を使用する場合は、一致する AZ ID にサブネット
OverrideVpcConfigを使用して を設定することで、インスタンスグループを ODCR と同じアベイラビリティーゾーン ID (AZ ID) にマッピングする必要があります。CRITICAL: ODCR とオンデマンドキャパシティーの両方で重複料金が発生しないように、デプロイ前に
OverrideVpcConfig設定を確認します。