使用 HyperPod CLI 啟動訓練任務
SageMaker HyperPod CLI 是用於管理 Amazon SageMaker HyperPod 叢集的命令列介面工具。您可以使用 HyperPod CLI 來建立、設定和監控機器學習工作負載的 HyperPod 叢集。如需詳細資訊,請參閱 sagemaker-hyperpod-cli
先決條件
-
安裝 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,請依照下列步驟進行。
-
複製具有分支
release_v2的 sagemaker-hyperpod-cliGitHub 儲存庫。 git clone --recurse-submodules https://github.com/aws/sagemaker-hyperpod-cli.git --branch release_v2 -
導覽至
sagemaker-hyperpod-cli資料夾。cd sagemaker-hyperpod-cli -
檢查您是否具備先決條件
中的所有先決條件。 -
若要設定 Helm,請依照下列步驟進行。
-
若要下載 Helm 安裝指令碼,請執行:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 -
若要讓指令碼可執行,請執行:
chmod 700 get_helm.sh此命令會變更許可,讓指令碼可執行。
-
若要執行 Helm 安裝指令碼,請執行:
./get_helm.sh -
若要移除安裝指令碼,請執行:
rm -f ./get_helm.sh
-
-
若要安裝具有受限制執行個體群組 (RIG) 支援的 HyperPod 相依性,請依照下列步驟執行。
注意
安裝相依性之前,您必須擁有具有 RIG 的 HyperPod EKS 叢集。如果您尚未擁有該叢集,請依照這些指示建立叢集。
-
若要連線至 HyperPod EKS 叢集,請執行:
aws eks update-kubeconfig --name <eks_cluster_name> --region us-east-1 -
若要驗證 HyperPod EKS 叢集的連線,請執行:
kubectl config current-context -
若要提取標準 HyperPod 相依性的更新,請執行:
helm dependencies update helm_chart/HyperPodHelmChart -
若要安裝標準 HyperPod 相依性,請執行:
helm install dependencies helm_chart/HyperPodHelmChart --namespace kube-system -
若要導覽至 Helm Chart 目錄,請執行:
cd helm_chart -
若要安裝 RIG 特定的 HyperPod 相依性,請執行下列命令。
注意
安裝相依性之前,請考慮下列事項:
-
建立叢集之後,您只應對每個叢集執行此命令一次。
-
您應該確保至少安裝版本為 4 (例如 v4) 的 yq 公用程式。有內建檢查,以確認安裝指令碼中有可用的 yq >=4。
-
出現提示時,您需要輸入
y來確認安裝。或者,在確認之前,在./rig-dependencies.yaml中檢視預期的安裝。
chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh -
-
若要導覽回
codesagemaker-hyperpod-cli儲存庫的根目錄,請執行:cd ..
-
-
若要繼續在
sagemaker-hyperpod-cli中安裝 HyperPod CLI,請依照下列步驟執行。-
使用 pip 安裝 CLI:
pip install -e . 驗證安裝:
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評估任務 evaluationCPT 任務 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。
[選用] 如果您已經有訓練任務,並想要將下一個任務的特定節點設為目標,請遵循下列步驟。
-
若要取得所有可用節點,請執行下列命令。
kubectl get nodes —no-headers | awk '$2 != "NotReady" && $3 != "SchedulingDisabled" {print $1}' -
將以下項目新增至標籤選取器的
src\hyperpod_cli\sagemaker_hyperpod_recipes\recipes_collection\cluster\k8s.yaml檔案。label_selector: required: kubernetes.io/hostname: - <node_name> -
在根目錄中執行下列命令。這可確保 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>]
此命令會取消和刪除所指定命名空間中正在執行的訓練任務。