使用 HyperPod CLI 开始训练作业 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用 HyperPod CLI 开始训练作业

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/

  • 了解 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>]

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