本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程-Amazon SageMaker HyperPod Checkpointless 预训练或微调自定义模型
要在自定义模型开启的情况下运行无检查点训练,需要执行以下步骤顺序。 HyperPod
先决条件
在开始设置环境之前,请确保您:
拥有一个共享存储位置。它可以是可从群集节点访问的 Amazon FSx 文件系统或 NFS 系统。
-
拥有采用以下格式之一的数据:
JSON
JSONGZ(压缩 JSON)
ARROW
下载拥抱脸部模型的权重并转换为 Nemo 支持的格式
。 设置您的环境
Kubernetes 环境设置
要设置你的 Kubernetes 环境,请执行以下操作:
-
设置虚拟环境。确保你使用的 Python 大于或等于 3.10 且低于 3.14。
python3 -m venv ${PWD}/venv source venv/bin/activate -
连接到 Kubernetes 集群
aws eks update-kubeconfig --region "${CLUSTER_REGION}" --name "${CLUSTER_NAME}" -
安装依赖项。
# install SageMaker HyperPod checkpointless training. git clone git@github.com:aws/sagemaker-hyperpod-checkpointless-training.git cd sagemaker-hyperpod-checkpointless-training
无检查点训练修改说明
要逐步采用自定义模型的无检查点训练,请遵循集成指南(这里我们以 Llama 3 70b 预训练为例),其中包括:
快速创建沟通器
内存映射的数据加载器 (MMAP)
进程内恢复和无检查点恢复
组件 1:快速创建通信器
这是为了优化在工作人员之间建立联系的时间。无需更改代码,只需要设置环境变量即可
# 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 预训练
组件 2:内存映射的数据加载器 (MMAP)
MMAP 缓存用于存储预先获取的数据样本,无需等待数据预处理即可立即开始训练。通过封装现有的数据加载器,只需最少的代码更改即可采用。
data_module = MMAPDataModule( data_module=base_data_module, mmap_config=CacheResumeMMAPConfig(cache_dir=…) )
组件 3 和 4:进程内恢复和无检查点恢复
这样就可以在不重启训练过程或从检查点加载的情况下进行故障恢复。需要进行其他代码更改(策略和训练配置更新,封装现有的主代码)
@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
启动培训
现在,你可以使用 kubectl 启动无检查点训练。
kubectl apply -f your_job_config.yaml