使用 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_v2 克隆 sagemaker-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 图表目录,请运行:

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

此命令将取消并删除指定命名空间中正在运行的训练作业。