使用 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。 HyperPod

  • 在提交任務之前,請確認 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 Chart 目錄,請執行:

      cd helm_chart
    6. 若要安裝 RIG 特定的 HyperPod 相依性,請執行下列命令。

      注意

      安裝相依性之前,請考慮下列事項:

      • 建立每個叢集之後,您應該只執行此命令一次。

      • 您應該確保 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 CLIsagemaker-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

    任務類型 Value
    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」關鍵字進行任務提交和其他功能。您應該從 HyperPod CLI 程式碼所在的根資料夾執行此命令。

    pip install .

列出任務

若要列出任務,請執行下列命令。

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

命令會列出指定命名空間或所有命名空間中的所有任務。

取得任務詳細資訊

若要取得任務的詳細資訊,請執行下列命令。

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

命令會擷取特定任務的詳細資訊。

列出 Pod

若要列出 Pod,請執行下列命令。

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

命令會列出與指定命名空間中特定任務相關聯的所有 Pod。

取消任務

若要取消任務,請執行下列命令。

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

此命令會取消和刪除指定命名空間中正在執行的訓練任務。