使用 HyperPod CLI 开始训练作业 - 亚马逊 SageMaker AI

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 HyperPod CLI 开始训练作业

SageMaker HyperPod CLI 是一款用于管理 Ama SageMaker HyperPod zon 集群的命令行界面工具。您可以使用 HyperPod CLI 为机器学习工作负载创建、配置和监控 HyperPod集群。有关更多信息,请参阅sagemaker-hyperpod-cli GitHub存储库。

先决条件

  • 安装 HyperPod CLI。要在亚马逊上定制 Amazon Nova SageMaker HyperPod,您必须查看release_v2分支机构才能使用 SageMaker HyperPod CLI。

  • 在提交作业之前,请验证 Nova 输出存储桶是否存在。要进行验证,请运行aws s3 ls s3://nova-111122223333/

    存储桶名称是您在配方recipes.run.output_s3_path中指定的值。此输出存储桶将存储训练后生成的清单文件,其中包含存储在服务托管 Amazon S3 存储桶中的输出项目的 S3 路径。此外,它还可以选择存储 TensorBoard 文件或评估结果。

  • 了解 Amazon FSx 数据同步要求。在作业运行之前,亚马逊 FSx 需要时间来同步 Amazon S3 训练数据。

设置 Amazon Nova 定制的 HyperPod CLI

要设置 Amazon Nova 自定义的 HyperPod CLI,请按照以下步骤操作。
  1. 使用分支克隆sagemaker-hyperpod-cli GitHub 存储库release_v2

    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 依赖项,请运行以下命令。

      注意

      在安装依赖关系之前,请考虑以下几点:

      • 在每个集群创建后,您只应运行一次此命令。

      • 您应确保 yq 实用程序安装的版本至少为 4(例如 v4)。安装脚本中有一个内置检查功能可以确认 yq >=4 是否可用。

      • 在出现提示y时,您需要通过输入来确认安装。或者,在确认之前,请在上查看预期的安装./rig-dependencies.yaml

      chmod 700 ./install_rig_dependencies.sh && ./install_rig_dependencies.sh
    7. 要导航回codesagemaker-hyperpod-cli仓库的根目录,请运行:

      cd ..
  6. 要继续在中安装 HyperPod CLIsagemaker-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/: 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

[可选] 如果您已经有训练作业,并且想要将特定节点作为下一个作业的目标,请按照以下步骤操作。

  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,请运行以下命令。

hyperpod list-pods --job-name <job-name> [--namespace <namespace>]

该命令列出与指定命名空间中特定任务关联的所有 pod。

取消作业

要取消作业,请运行以下命令。

hyperpod cancel-job --job-name <job-name> [--namespace <namespace>]

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