の AWS CLI コマンドの使用 SageMaker HyperPod APIs - Amazon SageMaker

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

の AWS CLI コマンドの使用 SageMaker HyperPod APIs

の AWS CLI コマンドを使用して、最初の SageMaker HyperPod クラスターを作成します HyperPod。

Slurm で最初の SageMaker HyperPod クラスターを作成する

次のチュートリアルでは、 AWS CLI の コマンド SageMaker HyperPodを使用して新しい SageMaker HyperPod クラスターを作成し、Slurm でセットアップする方法を示します。チュートリアルに従って、3 つの Slurm ノード、、my-controller-groupmy-login-groupおよび を持つ HyperPod クラスターを作成しますworker-group-1

  1. まず、ライフサイクルスクリプトを準備して Amazon S3 バケットにアップロードします。クラスターの作成時に、 は各インスタンスグループでそれら HyperPod を実行します。次のコマンドを使用して、ライフサイクルスクリプトを Amazon S3 にアップロードします。

    aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
    注記

    IAM の ロール SageMaker HyperPod を使用して特定のプレフィックスで始まる Amazon S3 バケットへのアクセスAmazonSageMakerClusterInstanceRolePolicyのみを許可するためsagemaker-、S3 バケットパスはプレフィックス で始まる必要があります。 Amazon S3

    ゼロから開始する場合は、Awsome Distributed Training GitHub リポジトリ で提供されているサンプルライフサイクルスクリプトを使用します。以下のサブステップでは、ダウンロード方法、変更内容、サンプルライフサイクルスクリプトを Amazon S3 バケットにアップロードする方法を示します。

    1. ライフサイクルスクリプトのサンプルのコピーをローカルコンピュータのディレクトリにダウンロードします。

      git clone https://github.com/aws-samples/awsome-distributed-training/
    2. ディレクトリ に移動し1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config、一連のライフサイクルスクリプトを見つけます。

      cd awsome-distributed-training/1.architectures/5.sagemaker_hyperpods/LifecycleScripts/base-config

      ライフサイクルスクリプトのサンプルの詳細については、「」を参照してくださいライフサイクルスクリプトを使用してクラスターをカスタマイズ SageMaker HyperPodする

    3. Slurm 設定ファイルを書き込み、 として保存しますprovisioning_params.json。ファイルで基本的な Slurm 設定パラメータを指定して、 SageMaker HyperPod クラスターインスタンスグループに Slurm ノードを適切に割り当てます。このチュートリアルでは、次の設定例 worker-group-1に示すようにmy-controller-group、、my-login-group、 という名前の 3 つの Slurm ノードを設定しますprovisioning_params.json

      { "version": "1.0.0", "workload_manager": "slurm", "controller_group": "my-controller-group", "login_group": "my-login-group", "worker_groups": [ { "instance_group_name": "worker-group-1", "partition_name": "partition-1" } ] }
    4. スクリプトを にアップロードしますs3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src。これを行うには、Amazon S3 コンソールを使用するか、次の AWS CLI Amazon S3 コマンドを実行します。

      aws s3 sync \ ~/local-dir-to-lifecycle-scripts/* \ s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src
  2. JSON 形式のCreateClusterリクエストファイルを準備し、 として保存しますcreate_cluster.json。次のリクエストテンプレートは、ステップ 1.c provisioning_params.jsonの で定義されている Slurm ノード設定と一致しています。にはExecutionRoleAmazonSageMakerClusterInstanceRolePolicyで管理されている で作成したIAMロールARNの を指定します SageMaker HyperPod を使用するための前提条件

    { // Required: Specify the name of the cluster. "ClusterName": "my-hyperpod-cluster", // Required: Configure instance groups to be launched in the cluster "InstanceGroups": [ { // Required: Specify the basic configurations to set up a controller node. "InstanceGroupName": "my-controller-group", "InstanceType": "ml.c5.xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}", // 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": "my-login-group", "InstanceType": "ml.m5.4xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}" }, { "InstanceGroupName": "worker-group-1", "InstanceType": "ml.trn1.32xlarge", "InstanceCount": 1, "LifeCycleConfig": { "SourceS3Uri": "s3://sagemaker-<unique-s3-bucket-name>/<lifecycle-script-directory>/src", "OnCreate": "on_create.sh" }, "ExecutionRole": "${ROLE}" } ] }
  3. 次のコマンドを実行して、クラスターを作成します。

    aws sagemaker create-cluster --cli-input-json file://complete/path/to/create_cluster.json

    これにより、作成されたクラスターARNの が返されます。

    リソースの制限が原因でエラーが発生した場合は、 アカウントの十分なクォータを持つインスタンスタイプに変更するか、 で に従って追加のクォータをリクエストしてくださいSageMaker HyperPod クォータ

  4. describe-cluster を実行して、クラスターのステータスを確認します。

    aws sagemaker describe-cluster --cluster-name my-hyperpod-cluster

    クラスターのステータスが になったらInService、次のステップに進みます。

  5. を実行してlist-cluster-nodes、クラスターノードの詳細を確認します。

    aws sagemaker list-cluster-nodes --cluster-name my-hyperpod-cluster

    これによりレスポンスが返され、 InstanceIdはクラスターユーザーが (aws ssm) をログに記録するために必要なものです。クラスターノードへのログインと ML ワークロードの実行の詳細については、「」を参照してください SageMaker HyperPod クラスター上のジョブ

クラスターを削除し、リソースをクリーンアップする

SageMaker HyperPod クラスターの作成を正常にテストした後、クラスターを削除するまで InService状態で実行され続けます。オンデマンド料金に基づいて継続的なサービス料金が発生しないように、使用していないときは、オンデマンド SageMaker キャパシティを使用して作成されたクラスターを削除することをお勧めします。このチュートリアルでは、2 つのインスタンスグループで構成されるクラスターを作成しました。そのうちの 1 つは C5 インスタンスを使用しているため、次のコマンドを実行してクラスターを削除してください。

aws sagemaker delete-cluster --cluster-name my-hyperpod-cluster

このチュートリアルで使用した Amazon S3 バケットからライフサイクルスクリプトをクリーンアップするには、クラスターの作成時に使用した Amazon S3 バケットに移動し、ファイルを完全に削除します。

クラスターでモデルトレーニングワークロードの実行をテストした場合は、データをアップロードしたか、ジョブで Amazon FSx for Lustre や Amazon Elastic File System などのさまざまな Amazon S3 バケットやファイルシステムサービスにアーティファクトを保存したかも確認してください。料金が発生しないように、ストレージまたはファイルシステムからすべてのアーティファクトとデータを削除します。