AWS CLI の使用 - Amazon SageMaker

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

AWS CLI の使用

以下のトピックでは、JSON 形式で SageMaker HyperPod API リクエストファイルを記述し、 AWS CLI コマンドを使用して実行するためのガイダンスを提供します。

新しいクラスターを作成する

  1. ライフサイクル設定スクリプトを準備し、 などの S3 バケットにアップロードしますs3://sagemaker-<your-s3-bucket>/<lifecycle-script-directory>/src/。次のステップ 2 では、指定された S3 バケットon_create.shに という名前のエントリポイントスクリプトがあることを前提としています。

    重要

    で始まるように S3 パスを設定してくださいs3://sagemaker-の IAM ロール SageMaker HyperPod には 管理の がアAmazonSageMakerClusterInstanceRolePolicyタッチされており、特定のプレフィックス を持つ S3 バケットへのアクセスを許可しますsagemaker-

  2. API CreateClusterリクエストファイルを JSON 形式で準備します。一連のライフサイクルスクリプトの実行の一部としてクラスターの作成時に使用する provisioning_params.json ファイルで設計した Slurm クラスターと一致するようにインスタンスグループを設定する必要があります。詳細については、「SageMaker HyperPod ライフサイクル設定のベストプラクティス」を参照してください。次のテンプレートには、Slurm クラスターの最小要件を満たす 2 つのインスタンスグループがあります。1 つはコントローラー (ヘッド) ノード、もう 1 つはコンピューティング (ワーカー) ノードです。にはExecutionRole、セクション AmazonSageMakerClusterInstanceRolePolicyから マネージド で作成した IAM ロールの ARN を指定しますの IAM ロール SageMaker HyperPod

    // create_cluster.json { "ClusterName": "your-hyperpod-cluster", "InstanceGroups": [ { "InstanceGroupName": "controller-group", "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<your-s3-bucket>/<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://sagemaker-<your-s3-bucket>/<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 で をセットアップする」を参照してください。

  3. 次のコマンドを実行して CreateCluster API リクエストを送信します。

    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

これによりレスポンスが返されます。 InstanceIdは、ログ記録 ( を使用aws ssm) に使用する必要のあるものです。

クラスターノードの詳細を記述する

を実行してdescribe-cluster-node、クラスターノードの詳細を取得します。 list-cluster-nodes 出力からクラスターノード ID を取得できます。クラスターの名前または ARN を指定できます。

aws sagemaker describe-cluster-node \ --cluster-name your-hyperpod-cluster \ --node-id i-111222333444555aa

クラスターを一覧表示する

を実行してlist-clusters、アカウント内のすべてのクラスターを一覧表示します。

aws sagemaker list-clusters

クラスターのリストをフィルタリングするためのフラグを追加することもできます。このコマンドが低レベルで動作することと、フィルタリング用の追加のフラグの詳細については、 ListClusters API リファレンスを参照してください。

クラスター設定の更新

update-cluster を実行してクラスターの設定を更新します。

  1. JSON 形式でUpdateClusterリクエストファイルを作成します。更新する適切なクラスター名とインスタンスグループ名を指定してください。インスタンスタイプ、インスタンス数、ライフサイクル設定エントリポイントスクリプト、およびスクリプトへのパスを変更できます。

    1. にはClusterName、更新するクラスターの名前を指定します。

    2. InstanceGroupName

      1. 既存のインスタンスグループを更新するには、更新するインスタンスグループの名前を指定します。

      2. 新しいインスタンスグループを追加するには、クラスターに存在しない新しい名前を指定します。

    3. InstanceType

      1. 既存のインスタンスグループを更新するには、最初にグループに指定したインスタンスタイプと一致する必要があります。

      2. 新しいインスタンスグループを追加するには、グループを設定するインスタンスタイプを指定します。

    4. InstanceCount

      1. 既存のインスタンスグループを更新するには、現在のインスタンス数より大きい整数を指定します。現在、増やすことができるのはインスタンスの数のみです。

      2. 新しいインスタンスグループを追加するには、1 以上の整数を指定します。

    5. ではLifeCycleConfig、インスタンスグループを更新するときに、 SourceS3UriOnCreatの値の両方を変更できます。

    6. ExecutionRole

      1. 既存のインスタンスグループを更新するには、クラスターの作成時にアタッチしたのと同じ IAM ロールを引き続き使用します。

      2. 新しいインスタンスグループを追加するには、アタッチする IAM ロールを指定します。

    7. TreadsPerCore

      1. 既存のインスタンスグループを更新するには、クラスターの作成時に指定したものと同じ値を使用し続けます。

      2. 新しいインスタンスグループを追加するには、インスタンスタイプごとに許可されるオプションから任意の値を選択できます。詳細については、インスタンスタイプを検索し、Amazon EC2 ユーザーガイド「CPU コア」のリファレンステーブルの「コアあたりの有効なスレッド」列と「インスタンスタイプごとの CPU コアあたりのスレッド」を参照してください。

    次のコードスニペットは、使用できる JSON リクエストファイルテンプレートです。この API のリクエスト構文とパラメータの詳細については、「 API リファレンスUpdateCluster」を参照してください。

    // 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://sagemaker-<your-s3-bucket>/<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 { ... } ] }
  2. 次の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 はプログラムでのみ実行できます。パッチ適用機能はコンソール UI SageMaker HyperPod には実装されていません。

が提供するバックアップスクリプトを使用する SageMaker HyperPod

SageMaker HyperPod は、Awsome Distributed Training GitHub リポジトリ1.architectures/5.sagemaker-hyperpod/patching-backup.shでデータをバックアップおよび復元するためのスクリプトを提供します。このスクリプトには、次の 2 つの関数があります。

パッチを適用する前に 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>

クラスターを削除

delete-cluster を実行してクラスターを削除します。クラスターの名前または ARN を指定できます。

aws sagemaker delete-cluster --cluster-name your-hyperpod-cluster