本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 HyperPod CLI 开始训练作业
HyperPod CLI 是一款用于管理 Ama SageMaker HyperPod zon 集群的命令行界面工具。您可以使用 HyperPod CLI 为机器学习工作负载创建、配置和监控 HyperPod 集群。有关更多信息,请参阅sagemaker-hyperpod-cli
先决条件
-
安装 HyperPod CLI。要在亚马逊上定制 Amazon Nova SageMaker HyperPod,您必须查看
release_v2
分支机构才能使用 SageMaker HyperPod CLI。 -
在提交作业之前,请验证 Nova 输出存储桶是否存在。要进行验证,请运行
aws s3 ls s3://nova-111122223333/
。 -
了解 Amazon FSx 数据同步要求。在作业运行之前,亚马逊 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 图表目录,请运行:
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
。作业类型 值 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/: sm-hp-dpo-latest nova-fine-tune-repo 评估任务 708977205387.dkr。ecr.us-east-1.amazonaws.com/: sm-hp-eval-Latest nova-evaluation-repo CPT 708977205387.dkr。ecr.us-east-1.amazonaws.com/: hp-cpt-latest nova-fine-tune-repo PPO 708977205387.dkr。ecr.us-east-1.amazonaws.com/: smhp-ppo-Train-Latest nova-fine-tune-repo SFT/PEFT 708977205387.dkr。ecr.us-east-1.amazonaws.com/: sm-hp-sft-Latest nova-fine-tune-repo -
自定义运行名称:
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,请运行以下命令。
hyperpod list-pods --job-name <job-name> [--namespace <namespace>]
该命令列出与指定命名空间中特定任务关联的所有 pod。
取消作业
要取消作业,请运行以下命令。
hyperpod cancel-job --job-name <job-name> [--namespace <namespace>]
此命令取消并删除指定命名空间中正在运行的训练作业。