断点续训2.0
概述
MindSpore Transformers 具备完备的断点续训能力,核心功能与适用场景如下:
核心功能:支持加载已保存的checkpoint,快速恢复训练进度,无需从零开始;
多场景适配:覆盖四大主流续训场景
中断续训:正常训练任务异常中断(如设备故障、网络波动)后,基于已保存的checkpoint重新恢复训练流程;
扩缩容续训:训练过程中调整卡数(扩容 / 缩容),基于已保存的checkpoint继续训练;
增量续训:在已有训练成果基础上,补充训练数据集,基于已保存的checkpoint继续训练;
自动恢复续训:支持平台无需人工干预自动拉起断点续训;
对于大规模训练任务(训练周期长、资源投入大),可避免意外中断导致的进度丢失,显著减少时间与计算资源浪费。
本文档仅适用于使用 Checkpoint 2.0 版本进行续训的场景;若用户使用Checkpoint 1.0 版本,需参考旧版断点续训文档。
checkpoint介绍
MindSpore Transformers 的训练checkpoint默认存储于 output/checkpoint 目录,每个checkpoint独立保存为以 iteration 命名的子文件夹。以 8 卡任务第 1 步生成的checkpoint为例,其保存格式如下:
output
├── checkpoint
├── iteration_0000001
├── metadata.json
├── common.json
├── {prefix}-model-0000000-0000008.safetensor
...
├── {prefix}-model-0000007-0000008.safetensor
├── {prefix}-opt-0000000-0000008.safetensor
...
└── {prefix}-opt-0000007-0000008.safetensor
...
└── latest_checkpointed_iteration.txt
可参考checkpoint保存和加载,获取更多checkpoint相关信息。
配置说明
参数名称 |
描述 |
取值说明 |
|---|---|---|
load_checkpoint |
checkpoint文件夹路径,可填写 |
(str,可选) - 默认值: |
resume_training |
断点续训功能开关,设置为 |
(bool,可选) - 默认值: |
场景介绍
中断续训
概述:正常训练任务异常中断后,在不改变分布式策略的前提下,基于已保存的checkpoint重新恢复训练流程。
MindSpore Transformers 支持用户使用以下两种方式启动断点续训:
基于
latest_checkpointed_iteration.txt中记录的迭代步数续训load_checkpoint: /path/to/checkpoint resume_training: True
基于指定迭代步数续训
load_checkpoint: /path/to/checkpoint/iteration_{x} resume_training: True
x 代表checkpoint对应的训练迭代步数,例如 "0000001" 即表示第 1 步训练对应的checkpoint。
扩缩容续训
概述:需要扩大/缩小集群规模或修改分布式策略继续训练任务,配置方式和中断续训一致。MindSpore Transformers 依托在线 Reshard 机制,可确保checkpoint权重自动适配任意分布式策略,保障续训顺畅。
基于
latest_checkpointed_iteration.txt中记录的迭代步数续训load_checkpoint: /path/to/checkpoint resume_training: True
基于指定迭代步数续训
load_checkpoint: /path/to/checkpoint/iteration_{x} resume_training: True
x 代表checkpoint对应的训练迭代步数,例如 "0000001" 即表示第 1 步训练对应的checkpoint。
增量续训
概述:训练数据集需要边生产边训练,当前数据集训练结束后,加入新生产的数据集继续训练,直到所有数据集训练完毕。该场景需要用户根据训练的总数据量,提前预设学习率曲线的总步数。
假设一共训练10T tokens数据,每次生产的数据集只包含1T tokens数据,整个训练过程分10个epoch训完,一共需要花费100000steps。
步骤1:预设总训练步数,固定整个训练流程的学习率曲线
lr_schedule: total_steps: 100000
步骤2:设置足够大的epoch值,确保能够训完所有数据集
runner_config: epochs: 15
整个训练过程的学习率曲线已固定,epochs值设置不会影响学习率,可以设置较大值,确保能训完10个数据集。
步骤3:数据集训完1个epoch后,可以更换数据集续训,如下为基于
latest_checkpointed_iteration.txt中记录的迭代步数续训,其他续训方式请参考中断续训或扩缩容续训。load_checkpoint: /path/to/checkpoint resume_training: True
更换数据集续训时,因各数据集样本数量不同,显示的 epoch 和单批次 step 可能变化,但训练总 step 数保持不变,这属于正常现象。
自动恢复续训
概述:为支持平台无人工干预自动拉起断点续训,可将 load_checkpoint 配置为checkpoint保存目录路径:首次训练时目录为空,模型随机初始化参数;续训时则基于该目录下最后保存的完整checkpoint恢复训练。
load_checkpoint: /path/to/output/checkpoint
resume_training: True
约束说明
多机场景下,断点续训需将所有checkpoint文件存放于同一共享目录,用户需将该共享路径配置至环境变量
SHARED_PATHS;建议优先配置最上层共享目录,示例:共享目录为/data01时,执行export SHARED_PATHS=/data01即可。