の使用 AWS CLI - Amazon SageMaker

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

の使用 AWS CLI

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

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

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

    重要

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

  2. JSON 形式のCreateClusterAPIリクエストファイルを準備します。一連のライフサイクルスクリプトの実行の一環としてクラスターの作成時に使用する 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-<amzn-s3-demo-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-<amzn-s3-demo-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 でのセットアップ SageMaker HyperPod VPC」を参照してください。

  3. 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

これによりレスポンスが返され、 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

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

クラスター設定の更新

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

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

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

    2. InstanceGroupName

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

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

    3. InstanceType

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

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

    4. InstanceCount

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

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

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

    6. ExecutionRole

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

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

    7. TreadsPerCore

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

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

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

    // 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-<amzn-s3-demo-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 リリースノート

ヒント

セキュリティパッチが失敗した場合、「」の指示DescribeClusterAPIに従って を実行して、失敗メッセージを取得できますクラスターを記述する

注記

これは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