HyperPod CLI を使用したトレーニングジョブの開始 - Amazon SageMaker AI

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

HyperPod CLI を使用したトレーニングジョブの開始

SageMaker HyperPod CLI は、Amazon SageMaker HyperPod クラスターを管理するためのコマンドラインインターフェイスツールです。HyperPod CLI を使用して、機械学習ワークロード用の HyperPod クラスターを作成、設定、モニタリングできます。詳細については、sagemaker-hyperpod-cli GitHub repository」を参照してください。

前提条件

  • HyperPod CLI をインストールします。Amazon SageMaker HyperPod で Amazon Nova をカスタマイズするには、release_v2SageMaker HyperPod CLI を使用するブランチを確認する必要があります。

  • ジョブを送信する前に、Nova 出力バケットが存在することを確認します。確認するには、 を実行しますaws s3 ls s3://nova-111122223333/

    バケット名は、レシピrecipes.run.output_s3_pathで に指定した値です。この出力バケットは、トレーニング後に生成されたマニフェストファイルを保存します。これには、サービスマネージド Amazon S3 バケットに保存されている出力アーティファクトへの S3 パスが含まれます。 Amazon S3 さらに、オプションで TensorBoard ファイルまたは評価結果を保存する場合があります。

  • Amazon FSx データ同期要件について。Amazon FSx には、ジョブを実行する前に Amazon S3 トレーニングデータを同期する時間が必要です。

Amazon Nova のカスタマイズ用に HyperPod CLI を設定する

Amazon Nova のカスタマイズ用に HyperPod CLI を設定するには、次の手順に従います。
  1. sagemaker-hyperpod-cli GitHub リポジトリをブランチ でクローンしますrelease_v2

    git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2
  2. sagemaker-hyperpod-cli フォルダに移動します。

    cd sagemaker-hyperpod-cli
  3. 前提条件のすべての前提条件があることを確認します。

  4. Helm をセットアップするには、以下の手順に従います。

    1. Helm インストールスクリプトをダウンロードするには、以下を実行します。

      curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
    2. スクリプトを実行可能にするには、以下を実行します。

      chmod 700 get_helm.sh

      このコマンドは、スクリプトを実行可能にするためのアクセス許可を変更します。

    3. Helm インストールスクリプトを実行するには、以下を実行します。

      ./get_helm.sh
    4. インストールスクリプトを削除するには、以下を実行します。

      rm -f ./get_helm.sh
  5. 制限付きインスタンスグループ (RIG) をサポートする HyperPod 依存関係をインストールするには、次の手順に従います。

    注記

    依存関係をインストールする前に、RIG を持つ HyperPod EKS クラスターが必要です。まだ作成していない場合は、以下の手順に従って作成します。

    1. HyperPod EKS クラスターに接続するには、以下を実行します。

      aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1
    2. HyperPod EKS クラスターへの接続を確認するには、以下を実行します。

      kubectl config current-context
    3. 標準の HyperPod 依存関係の更新を取得するには、以下を実行します。

      helm dependencies update helm_chart/HyperPodHelmChart
    4. 標準の HyperPod 依存関係をインストールするには、以下を実行します。

      helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system
    5. Helm チャートディレクトリに移動するには、以下を実行します。

      cd helm_chart
    6. RIG 固有の HyperPod 依存関係をインストールするには、次のコマンドを実行します。

      注記

      依存関係をインストールする前に、次の点を考慮してください。

      • このコマンドは、作成後にクラスターごとに 1 回だけ実行する必要があります。

      • yq ユーティリティがバージョン 4 以上 (v4 など) でインストールされていることを確認する必要があります。yq >=4 がインストールスクリプトで使用可能であることを確認するための組み込みチェックがあります。

      • プロンプトが表示されyたら、 を入力してインストールを確認する必要があります。オプションで、確認する前に、 で目的のインストールを表示します./rig-dependencies.yaml

      chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh
    7. codesagemaker-hyperpod-cli リポジトリのルートに戻るには、以下を実行します。

      cd ..
  6. で HyperPod CLI のインストールを続行するにはsagemaker-hyperpod-cli、次の手順に従います。

    1. pip を使用して CLI をインストールします。

      pip install -e .
    2. インストールを確認します。

      hyperpod --help

ジョブを送信する

HyperPod CLI を使用してトレーニングジョブを送信できます。

レシピを使用してジョブを送信するには、次のコマンドを実行します。

hyperpod start-job [--namespace <namespace>] --recipe {{fine-tuning | evaluation | training}}/nova/<Your_Recipe_Name> --override-parameters \ '{ "instance_type":"p5d.48xlarge", "container": <Docker Image>, "recipes.run.name": <custom-run-name>, "recipes.run.output_s3_path": "<customer-s3-path>" }'
  • --recipe: レシピを使用して実行しているジョブのタイプ。有効な値は | fine-tuning evaluation | ですtraining

    ジョブタイプ
    SFT/PEFT/PPO/DPO ジョブ fine-tuning
    評価ジョブ evaluation
    CPT ジョブ training
  • レシピ名: リポジトリの ディレクトリに名前があります/src/hyperpod_cli/sagemaker_hyperpod_recipes/recipe_collection/recipes/

  • レシピの例: --recipe evaluation/nova/nova_lite_g5_12xl_bring_your_own_dataset_eval

  • コンテナ: このフィールドは必須です。ジョブタイプのイメージを検索するには、次の表を参照してください。

    手法 コンテナ
    DPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-DPO-latest
    評価ジョブ 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-evaluation-repo:SM-HP-Eval-latest
    CPT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:HP-CPT-latest
    PPO 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SMHP-PPO-TRAIN-latest
    SFT/PEFT 708977205387.dkr.ecr.us-east-1.amazonaws.com/nova-fine-tune-repo:SM-HP-SFT-latest
  • カスタム実行名: 大文字、スペース、アンダースコアなど、custom-run-time入力には定義の制約があります。詳細については、「オブジェクト名と IDs」を参照してください。

〔オプション] 既にトレーニングジョブがあり、次のジョブの特定のノードをターゲットにする場合は、次の手順に従います。

  1. すべての空きノードを取得するには、次のコマンドを実行します。

    kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}'
  2. ラベルセレクタの src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yamlファイルに以下を追加します。

    label_selector: required: kubernetes.io/hostname: - <node_name>
  3. ルートディレクトリで、次のコマンドを実行します。これにより、SageMaker HyperPod がユーザーのシステムにインストールされ、ジョブの送信やその他の機能に「ハイパーポッド」キーワードを使用できるようになります。HyperPod CLI コードがあるルートフォルダからこのコマンドを実行する必要があります。

    pip install .

ジョブの一覧表示

ジョブを一覧表示するには、次のコマンドを実行します。

hyperpod list-jobs [--namespace <namespace>] [--all-namespaces]

コマンドは、指定された名前空間またはすべての名前空間のすべてのジョブを一覧表示します。

ジョブの詳細を取得する

ジョブの詳細を取得するには、次のコマンドを実行します。

hyperpod get-job --job-name <job-name> [--namespace <namespace>] [--verbose]

コマンドは、特定のジョブに関する詳細情報を取得します。

ポッドを一覧表示する

ポッドを一覧表示するには、次のコマンドを実行します。

hyperpod list-pods --job-name <job-name> [--namespace <namespace>]

コマンドは、指定された名前空間内の特定のジョブに関連付けられているすべてのポッドを一覧表示します。

ジョブのキャンセル

ジョブをキャンセルするには、次のコマンドを実行します。

hyperpod cancel-job --job-name <job-name> [--namespace <namespace>]

このコマンドは、指定された名前空間で実行中のトレーニングジョブをキャンセルして削除します。