

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

# 教程——亚马逊 SageMaker HyperPod Checkpointless peft-Lora GPT OSS 120b
<a name="sagemaker-eks-checkpointless-recipes-peft"></a>

要运行无检查点训练食谱，需要执行以下步骤顺序。 HyperPod

## 先决条件
<a name="sagemaker-eks-checkpointless-recipes-peft-prereqs"></a>

在开始设置环境之前，请确保您：
+ [已在亚马逊启用亚马逊 EKS 支持 SageMaker HyperPod](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-eks-prerequisites.html)
+ [设置 HyperPod 训练操作员 (v1.2\$1)](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-operator.html)
+ 拥有一个共享存储位置。它可以是可从群集节点访问的 Amazon FSx 文件系统或 NFS 系统。
+ 拥有采用以下格式之一的数据：
  + JSON
  + JSONGZ（压缩 JSON）
  + ARROW
+ [从源头为 Llama 70B 或 GPT-OSS 120B 选择支持的无检查点训练配方。](https://github.com/aws/sagemaker-hyperpod-recipes/tree/main/recipes_collection)
+ [下载拥抱脸部模型的权重](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html)并转换为 [Nemo 支持的格式](https://docs.nvidia.com/nemo-framework/user-guide/latest/nemo-2.0/features/hf-integration.html#importing-from-hugging-face)。
+ 设置您的环境

## Kubernetes 环境设置
<a name="sagemaker-eks-checkpointless-recipes-peft-kubernetes"></a>

要设置你的 Kubernetes 环境，请执行以下操作：

1. 设置虚拟环境。确保你使用的 Python 大于或等于 3.10 且小于 3.14。

   ```
   python3 -m venv ${PWD}/venv
   source venv/bin/activate
   ```

1. [设置 kubectl 和 eksctl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)

1. [安装头盔](https://helm.sh/docs/intro/install/)

1. 连接到 Kubernetes 集群

   ```
   aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}"
   ```

1. 使用下列方法之一安装依赖项：
   + SageMaker HyperPod 食谱方法：

     ```
     # install SageMaker HyperPod Recipes.
     git clone --recursive git@github.com:aws/sagemaker-hyperpod-recipes.git
     cd sagemaker-hyperpod-recipes
     pip3 install -r requirements.txt
     ```
   + kubectl 使用预定义的作业 yaml 方法

     ```
     # install SageMaker HyperPod checkpointless training.
     git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git
     cd sagemaker-hyperpod-checkpointless-training
     ```

现在，你可以使用 NeMo样式启动器或 kubectl 启动无检查点训练配方。

## 使用配方启动程序启动训练作业
<a name="sagemaker-eks-checkpointless-recipes-peft-recipes-launcher"></a>

或者，您可以使用 SageMaker HyperPod 食谱来提交您的训练作业。使用配方包括更新 k8s.yaml、config.yaml 和运行启动脚本。

1. 更新 `launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh`

   your\$1contrainer：深度学习容器。要查找 checkpointless 训练容器的最新版本，请参阅 checkpo [intless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) 训练版本说明。

   ```
   #!/bin/bash
   SAGEMAKER_TRAINING_LAUNCHER_DIR=${SAGEMAKER_TRAINING_LAUNCHER_DIR:-"$(pwd)"}
   TRAIN_DIR="${TRAIN_DIR}"
   VAL_DIR="${VAL_DIR}"
   EXP_DIR="${EXP_DIR}"
   LOG_DIR="${LOG_DIR}"
   CONTAINER_MOUNT="/data"
   CONTAINER="${CONTAINER}"
   MODEL_NAME_OR_PATH="${MODEL_NAME_OR_PATH}"
   
   HYDRA_FULL_ERROR=1 python3 "${SAGEMAKER_TRAINING_LAUNCHER_DIR}/main.py" \
       recipes=fine-tuning/gpt_oss/checkpointless_gpt_oss_120b_lora \
       recipes.dataset.dataset_path="${TRAIN_DIR}" \
       recipes.exp_manager.exp_dir="${EXP_DIR}" \
       recipes.log_dir="${LOG_DIR}" \
       recipes.resume.restore_config.path="${MODEL_NAME_OR_PATH}" \
       base_results_dir="${SAGEMAKER_TRAINING_LAUNCHER_DIR}/results" \
       git.use_default=false \
       cluster=k8s \
       cluster_type=k8s \
       container="${CONTAINER}" \
       +cluster.hostNetwork=true \
       +cluster.persistent_volume_claims.0.claimName=fsx-claim \
       +cluster.persistent_volume_claims.0.mountPath="${CONTAINER_MOUNT}" \
       +recipes.dataset.val_dataset_path="${VAL_DIR}" \
       ++recipes.callbacks.3.test_fault_config.fault_prob_between_lock=1 \
   ```

1. 启动训练作业

   ```
   bash launcher_scripts/gpt_oss/run_checkpointless_gpt_oss_120b_lora.sh
   ```

提交训练作业后，可使用以下命令来验证您是否已成功提交该作业。

```
kubectl get pods

NAME                             READY   STATUS             RESTARTS        AGE
gpt-oss-120b-worker-0             0/1    running               0            36s
```

如果状态为 PENDING 或 ContainerCreating，请运行以下命令以获取更多详细信息

```
kubectl describe pod <name of pod>
```

在作业 STATUS 更改为 Running 后，可使用以下命令检查日志。

```
kubectl logs <name of pod>
```

当你运行 kubectl get pod 时，状态将变为 “已完成”

## 使用带有预定义的 yaml 的 kubectl 启动训练作业
<a name="sagemaker-eks-checkpointless-recipes-peft-kubectl"></a>

另一种选择是使用预定义的作业 yaml 通过 kubectl 启动训练。

1. 更新 \$1gpt\$1oss\$1120b\$1check examples/gpt\$1oss/launch/peft pointless\$1p5.yaml
   + 图片：深度学习容器。要查找 checkpointless 训练容器的最新版本，请参阅 checkpo [intless](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-release-notes.html) 训练版本说明。
   + [resume.restore\$1config.path=：在 “先决条件” 步骤中以 Nemo 格式下载预训练模型权重的路径。](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-eks-checkpointless-recipes-peft.html#sagemaker-eks-checkpointless-recipes-peft-prereqs) <path\$1to\$1pretrained\$1weights>
   + dataset.dataset\$1path=<path\$1to\$1dataset>：存储在共享存储中的数据集的路径

1. 使用 kubectl 和 peft\$1gpt\$1oss\$1120b\$1checkpointless\$1p5.yaml 提交任务

   ```
   kubectl apply -f examples/gpt_oss/launch/peft_gpt_oss_120b_checkpointless_p5.yaml
   ```

提交训练作业后，可使用以下命令来验证您是否已成功提交该作业。

```
kubectl get pods

NAME                                             READY   STATUS             RESTARTS        AGE
gpt-120b-lora-checkpointless-worker-0             0/1    running               0            36s
```

如果状态为 PENDING 或 ContainerCreating，请运行以下命令以获取更多详细信息

```
kubectl describe pod <name of pod>
```

在作业 STATUS 更改为 Running 后，可使用以下命令检查日志。

```
kubectl logs <name of pod>
```

当你运行 kubectl get pod 时，状态将变为 “已完成”