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

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

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

前提条件

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

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

    バケット名は、レシピの recipes.run.output_s3_path で指定した値です。この出力バケットには、トレーニング後に生成されたマニフェストファイルが格納されます。これには、サービスマネージド Amazon S3 バケットに保存されている出力アーティファクトへの 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 つ作成します。

    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. sagemaker-hyperpod-cli で 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 入力には定義の制約があります。詳細については、「Object Names and 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>]

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