

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

# 教程-Amazon SageMaker HyperPod Checkpointless 预训练或微调自定义模型
<a name="sagemaker-eks-checkpointless-recipes-custom"></a>

要在自定义模型开启的情况下运行无检查点训练，需要执行以下步骤顺序。 HyperPod

## 先决条件
<a name="sagemaker-eks-checkpointless-recipes-custom-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
+ [下载拥抱脸部模型的权重](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-custom-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. 连接到 Kubernetes 集群

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

1. 安装依赖项。

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

## 无检查点训练修改说明
<a name="sagemaker-eks-checkpointless-recipes-custom-modification-instructions"></a>

要逐步采用自定义模型的无检查点训练，请遵循集成指南（这里我们以 Llama 3 70b 预训练为例），其中包括：
+ 快速创建沟通器
+ 内存映射的数据加载器 (MMAP)
+ 进程内恢复和无检查点恢复

### 组件 1：快速创建通信器
<a name="sagemaker-eks-checkpointless-recipes-custom-component1"></a>

这是为了优化在工作人员之间建立联系的时间。无需更改代码，只需要设置环境变量即可

```
  # Enable Rootless features
  export HPCT_USE_ROOTLESS=1 && \
  sysctl -w net.ipv4.ip_local_port_range="20000 65535" && \

  hyperpodrun --nproc_per_node=8 \
              ...
              --inprocess-restart \
              ...
```

完整的更改可以在 [llama3 70 预训练](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/launch/pretrain_llama3_70b_checkpointless_p5.yaml)启动任务配置中找到。

### 组件 2：内存映射的数据加载器 (MMAP)
<a name="sagemaker-eks-checkpointless-recipes-custom-component2"></a>

MMAP 缓存用于存储预先获取的数据样本，无需等待数据预处理即可立即开始训练。通过封装现有的数据加载器，只需最少的代码更改即可采用。

```
data_module = MMAPDataModule(
  data_module=base_data_module,
  mmap_config=CacheResumeMMAPConfig(cache_dir=…)
)
```

### 组件 3 和 4：进程内恢复和无检查点恢复
<a name="sagemaker-eks-checkpointless-recipes-custom-components3-4"></a>

这样就可以在不重启训练过程或从检查点加载的情况下进行故障恢复。需要进行其他代码更改（策略和训练配置更新，封装现有的主代码）

```
@HPWrapper(
  health_check=CudaHealthCheck(),
  hp_api_factory=HPAgentK8sAPIFactory(),
  abort_timeout=60.0,
...)
def run_main(
  cfg,
  caller: Optional[HPCallWrapper] = None):
...


CheckpointlessMegatronStrategy(
  **self.cfg.strategy,
  ddp=self.ddp,
)
```

完整的更改可以在 [llama3 70 预训练入门脚本中找到，相应的训练配置更改可以在 [ll](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/config/llama3_70b_peft_checkpointless.yaml) ama3 70](https://github.com/aws/sagemaker-hyperpod-checkpointless-training/blob/main/examples/llama3/llama3_70b_pretrain_checkpointless.py) b 训练配置中找到。

### 启动训练
<a name="sagemaker-eks-checkpointless-recipes-custom-launch"></a>

现在，你可以使用 kubectl 启动无检查点训练。

```
kubectl apply -f your_job_config.yaml
```