本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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。 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,請遵循下列步驟。
-
使用分支 複製 sagemaker-hyperpod-cli
GitHub 儲存庫 release_v2
。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 相依性,請執行下列命令。
注意
安裝相依性之前,請考慮下列事項:
-
建立每個叢集之後,您應該只執行此命令一次。
-
您應該確保 yq 公用程式已安裝至少 4 版 (例如 v4)。有內建檢查,以確認安裝指令碼中有可用的 yq >=4。
-
出現提示
y
時,您需要輸入 來確認安裝。或者,在確認之前,在 中檢視預期的安裝./rig-dependencies.yaml
。
chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh
-
-
若要導覽回
codesagemaker-hyperpod-cli
儲存庫的根目錄,請執行:cd ..
-
-
若要繼續在 中安裝 HyperPod CLI
sagemaker-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
。任務類型 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。
【選用】 如果您已經有訓練任務,並且想要將下一個任務的特定節點設為目標,請遵循下列步驟。
-
若要取得所有可用節點,請執行下列命令。
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>]
此命令會取消和刪除指定命名空間中正在執行的訓練任務。