使用 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 图表目录,请运行:
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>]
此命令将取消并删除指定命名空间中正在运行的训练作业。