翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
CLI AWS の使用
以下のトピックでは、SageMaker HyperPod API リクエストファイルを JSON 形式で記述し、 AWS CLI コマンドを使用して実行するためのガイダンスを提供します。
トピック
新しいクラスターを作成する
-
ライフサイクル設定スクリプトを準備し、
s3://
などの S3 バケットにアップロードします。次のステップ 2 では、指定された S3 バケットにamzn-s3-demo-bucket
-sagemaker/lifecycle-script-directory/src/
on_create.sh
という名前のエントリポイントスクリプトがあることを前提としています。重要
先頭が
s3://sagemaker-
となるよう S3 パスを設定してください。SageMaker HyperPod の IAM ロール にはマネージドAmazonSageMakerClusterInstanceRolePolicy
がアタッチされており、特定のプレフィックスsagemaker-
を持つ S3 バケットへのアクセスが可能になります。 -
CreateCluster API リクエストファイルを JSON 形式で準備します。一連のライフサイクルスクリプトの実行の一環としてクラスターの作成時に使用される
provisioning_params.json
ファイルで設計する Slurm クラスターと一致するようにインスタンスグループを設定する必要があります。詳細については、「ライフサイクルスクリプトを使用して SageMaker HyperPod クラスターをカスタマイズする」を参照してください。次のテンプレートには、Slurm クラスターの最小要件を満たすための 2 つのインスタンスグループがあります。つまり、1 つのコントローラー (ヘッド) ノードと 1 つのコンピューティング (ワーカー) ノードです。ExecutionRole
には、セクション SageMaker HyperPod の IAM ロール から マネージドAmazonSageMakerClusterInstanceRolePolicy
で作成した IAM ロールの ARN を指定します。// create_cluster.json
{ "ClusterName": "your-hyperpod-cluster
", "InstanceGroups": [ { "InstanceGroupName": "controller-group
", "InstanceType": "ml.m5.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket
-sagemaker/lifecycle-script-directory/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
",// Optional: Configure an additional storage per instance group.
"InstanceStorageConfigs": [ {// Attach an additional EBS volume to each instance within the instance group.
// The default mount path for the additional EBS volume is /opt/sagemaker.
"EbsVolumeConfig":{// Specify an integer between 1 and 16384 in gigabytes (GB).
"VolumeSizeInGB":integer
, } } ] }, { "InstanceGroupName": "worker-group-1
", "InstanceType": "ml.p4d.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket
-sagemaker/lifecycle-script-directory/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
" } ], // Optional "Tags": [ { "Key": "string
", "Value": "string
" } ], // Optional "VpcConfig": { "SecurityGroupIds": [ "string
" ], "Subnets": [ "string
" ] } }ライフサイクルスクリプトを使用してクラスター構造を設計する方法に応じて、
InstanceGroups
パラメータで最大 20 個のインスタンスグループを設定できます。Tags
リクエストパラメータには、SageMaker HyperPod クラスターを AWS リソースとして管理するためのカスタムタグを追加できます。タグ付けをサポートする他の AWS サービスでタグを追加するのと同じ方法で、クラスターにタグを追加できます。 AWS リソースのタグ付け全般の詳細については、AWS 「 リソースのタグ付けユーザーガイド」を参照してください。VpcConfig
リクエストパラメータでは、使用する VPC の情報を指定します。詳細については、「Amazon VPC で SageMaker HyperPod をセットアップする」を参照してください。 -
次のように create-cluster コマンドを実行します。
aws sagemaker create-cluster \ --cli-input-json
file://complete/path/to/create_cluster.json
これにより、新しいクラスターの ARN が返されます。
クラスターを記述する
describe-cluster を実行して、クラスターのステータスを確認します。クラスターの名前または ARN を指定できます。
aws sagemaker describe-cluster --cluster-name
your-hyperpod-cluster
クラスターのステータスが InService
になったら、次のステップに進みます。この API を使用すると、他の HyperPod API オペレーションの実行から失敗メッセージを取得することもできます。
クラスターノードの詳細を一覧表示する
list-cluster-nodes を実行して、クラスターノードのキー情報を確認します。
aws sagemaker list-cluster-nodes --cluster-name
your-hyperpod-cluster
これによりレスポンスが返されます。ログ記録 (aws ssm
を使用) するには、InstanceId
を使用する必要があります。
クラスターノードの詳細を記述する
describe-cluster-node を実行して、クラスターノードの詳細を取得します。list-cluster-nodes 出力からクラスターノード ID を取得できます。クラスターの名前または ARN を指定できます。
aws sagemaker describe-cluster-node \ --cluster-name
your-hyperpod-cluster
\ --node-idi-111222333444555aa
クラスターを一覧表示する
list-clusters を実行して、アカウント内のすべてのクラスターを一覧表示します。
aws sagemaker list-clusters
クラスターのリストをフィルタリングするためのフラグを追加することもできます。このコマンドが低レベルで実行される方法とフィルタリング用の追加のフラグの詳細については、ListClusters API リファレンスを参照してください。
クラスター設定を更新する
update-cluster を実行して、クラスターの設定を更新します。
-
JSON 形式で
UpdateCluster
リクエストファイルを作成します。更新する適切なクラスター名とインスタンスグループ名を指定していることを確認してください。インスタンスタイプ、インスタンス数、ライフサイクル設定エントリポイントスクリプト、スクリプトへのパスを変更できます。-
ClusterName
で、更新するクラスターの名前を選択します。 -
InstanceGroupName
用-
既存のインスタンスグループを更新するには、更新するインスタンスグループの名前を指定します。
-
新しいインスタンスグループを追加するには、クラスターに存在しない新しい名前を指定します。
-
-
InstanceType
用-
既存のインスタンスグループを更新するには、最初に指定したインスタンスタイプをグループに一致させる必要があります。
-
新しいインスタンスグループを追加するには、グループを設定するインスタンスタイプを指定します。
-
-
InstanceCount
用-
既存のインスタンスグループを更新するには、必要なインスタンス数に対応する整数を指定します。インスタンスグループをスケールアップまたはスケールダウンするには、高い値または低い値 (0 まで) を指定できます。
-
新しいインスタンスグループを追加するには、1 以上の整数を指定します。
-
-
LifeCycleConfig
では、インスタンスグループを更新するときに、SourceS3Uri
とOnCreat
の両方の値を変更できます。 -
ExecutionRole
用-
既存のインスタンスグループを更新するには、クラスターの作成時にアタッチしたのと同じ IAM ロールを引き続き使用します。
-
新しいインスタンスグループを追加するには、アタッチする IAM ロールを指定します。
-
-
TreadsPerCore
用-
既存のインスタンスグループを更新するには、クラスターの作成時に指定した値と同じ値を使用し続けます。
-
新しいインスタンスグループを追加するには、インスタンスタイプごとに許可されるオプションから任意の値を選択できます。詳細については、インスタンスタイプを検索し、「Amazon EC2 ユーザーガイド」にあるインスタンスタイプごとの CPU コア数と CPU コアあたりのスレッド数のリファレンステーブルの「コアあたりの有効なスレッド」列を参照してください。
-
次のコードスニペットは、使用できる JSON リクエストファイルテンプレートです。この API のリクエスト構文とパラメータの詳細については、UpdateCluster API リファレンスを参照してください。
// update_cluster.json { // Required "ClusterName": "
name-of-cluster-to-update
", // Required "InstanceGroups": [ { "InstanceGroupName": "name-of-instance-group-to-update
", "InstanceType": "ml.m5.xlarge
", "InstanceCount":1
, "LifeCycleConfig": { "SourceS3Uri": "s3://amzn-s3-demo-bucket
-sagemaker/lifecycle-script-directory/src/
", "OnCreate": "on_create.sh
" }, "ExecutionRole": "arn:aws:iam::111122223333
:role/iam-role-for-cluster
",// Optional: Configure an additional storage per instance group.
"InstanceStorageConfigs": [ {// Attach an additional EBS volume to each instance within the instance group.
// The default mount path for the additional EBS volume is /opt/sagemaker.
"EbsVolumeConfig":{// Specify an integer between 1 and 16384 in gigabytes (GB).
"VolumeSizeInGB":integer
, } } ] }, // add more blocks of instance groups as needed { ... } ] } -
-
次の
update-cluster
コマンドを実行して、リクエストを送信します。aws sagemaker update-cluster \ --cli-input-json
file://complete/path/to/update_cluster.json
クラスターの SageMaker HyperPod プラットフォームソフトウェアを更新する
update-cluster-software を実行して、SageMaker HyperPod サービスが提供するソフトウェアとセキュリティパッチを使用して既存のクラスターを更新します。--cluster-name
では、更新するクラスターの名前または ARN を指定します。
重要
この API を実行する前に、作業内容をバックアップする必要がある点に注意してください。パッチ適用プロセスでは、ルートボリュームが更新された AMI に置き換えられます。つまり、インスタンスのルートボリュームに保存されていた以前のデータは失われます。必ず、インスタンスルートボリュームから Amazon S3 または Amazon FSx for Lustre にデータをバックアップしてください。詳細については、「SageMaker HyperPod が提供するバックアップスクリプトを使用する」を参照してください。
aws sagemaker update-cluster-software --cluster-name
your-hyperpod-cluster
このコマンドは UpdateClusterSoftware API を呼び出します。API コール後、SageMaker HyperPod はクラスターインスタンスを更新して最新の SageMaker HyperPod DLAMI を使用し、クラスターの作成または更新時に指定した S3 バケットでライフサイクルスクリプトを実行します。SageMaker HyperPod サービスチームは、セキュリティを強化し、ユーザーエクスペリエンスを向上させるため、新しい SageMaker HyperPod DLAMI を定期的にロールアウトします。常に最新の SageMaker HyperPod DLAMI に更新することをお勧めします。セキュリティパッチ適用に関する今後の SageMaker HyperPod DLAMI の更新については、「Amazon SageMaker HyperPod リリースノート」の情報を今後も確認してください。
ヒント
セキュリティパッチが失敗した場合、「クラスターを記述する」の指示に従って DescribeCluster
API を実行することにより失敗メッセージを取得できます。
注記
この API はプログラムでのみ実行できます。パッチ適用機能は、SageMaker HyperPod コンソール UI には実装されません。
SageMaker HyperPod が提供するバックアップスクリプトを使用する
SageMaker HyperPod は、Awsome Distributed Training GitHub リポジトリの 1.architectures/5.sagemaker-hyperpod/patching-backup.sh
パッチを適用する前に S3 バケットにデータをバックアップするには
sudo bash patching-backup.sh --create
<s3-buckup-bucket-path>
このコマンドを実行すると、スクリプトはキューに入れられたジョブがあるかどうかを squeue
で確認します。キューにジョブがない場合は Slurm を停止し、mariadb
をバックアップして、LOCAL_ITEMS
で定義されたディスクにローカル項目をコピーします。LOCAL_ITEMS
には、ファイルとディレクトリをさらに追加できます。
# Define files and directories to back up. LOCAL_ITEMS=( "/var/spool/slurmd" "/var/spool/slurmctld" "/etc/systemd/system/slurmctld.service" "/home/ubuntu/backup_slurm_acct_db.sql" # ... Add more items as needed )
また、提供されたスクリプトにカスタムコードを追加し、ユースケースのアプリケーションをバックアップすることもできます。
パッチ適用後に S3 バケットからデータを復元するには
sudo bash patching-backup.sh --restore
<s3-buckup-bucket-path>
クラスターのスケールダウン
SageMaker HyperPod クラスター内のインスタンス数をスケールダウンして、リソースの割り当てを最適化したり、コストを削減したり、必要に応じてクラスターで使用されるインスタンスタイプを変更したりできます。
UpdateCluster
API オペレーションを使用してインスタンスグループから指定した数までインスタンスをランダムに終了するか、 BatchDeleteClusterNodes
API オペレーションを使用して特定のインスタンスを終了することで、スケールダウンできます。これらのメソッドを使用してスケールダウンする方法の詳細については、「」を参照してくださいSageMaker HyperPod クラスターのスケールダウン。
注記
Slurm コントローラーノードとして設定されたインスタンスは削除できません。Slurm コントローラーノードを削除しようとすると、エラーコード の検証エラーが発生しますNODE_ID_IN_USE
。
クラスターを削除
delete-cluster を実行してクラスターを削除します。クラスターの名前または ARN を指定できます。
aws sagemaker delete-cluster --cluster-name
your-hyperpod-cluster