使用 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. 複製具有分支 release_v2sagemaker-hyperpod-cli GitHub 儲存庫。

    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 相依性,請執行下列命令。

      注意

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

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

      • 您應該確保至少安裝版本為 4 (例如 v4) 的 yq 公用程式。有內建檢查,以確認安裝指令碼中有可用的 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 輸入上有定義限制條件,例如無大寫、沒有空格、沒有底線。如需詳細資訊,請參閱物件名稱和 ID

[選用] 如果您已經有訓練任務,並想要將下一個任務的特定節點設為目標,請遵循下列步驟。

  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>]

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