MindSpore Transformers 断点续训介绍与实践:分布式策略
MindSpore Transformers(MindFormers)是昇思 MindSpore 面向大模型打造的开发套件,深度适配昇腾 NPU 集群多维混合并行训练场景。千亿、万亿参数大模型预训练、微调任务往往持续数天乃至数周,集群设备故障、网络波动、任务抢占中断等问题时有发生。在多维并行(TP 张量并行、PP 流水线并行、FSDP 分片、CP 上下文并行)场景下,模型权重、优化器状态被切分到不同 NPU 卡,传统续训方式极易出现权重加载错乱、训练步数错位、数据集游标偏移、收敛状态丢失等问题,若从头重新训练,会造成巨大算力损耗。MindSpore Transformers 提供分布式断点续训完整能力,支持 Step 级精确恢复,完整还原模型权重、优化器参数、学习率调度、数据集迭代位置,同时支持在线 Reshard 权重重分片,兼容修改分布式策略、集群扩缩容续训场景,广泛应用于 NLP、多模态大模型预训练、微调、对齐训练等国产化集群任务。
一、分布式断点续训核心能力
针对多维并行大模型训练,MindSpore Transformers 构建标准化断点续训体系,五大核心能力保障分布式场景训练可靠恢复。
一是Step 级完整状态保存与恢复,Checkpoint 同时落盘模型分片权重、优化器状态、学习率调度器、训练元信息、数据集游标,续训时精确恢复中断时的 Step,数据集自动跳过已经训练完成样本,避免样本重复训练,保证 Loss 收敛轨迹与未中断训练保持一致,支持 ckpt、safetensors 两种存储格式。
二是多维并行原生适配,原生兼容数据并行 DP、张量并行 TP、流水线并行 PP、FSDP/HSDP 混合分片、上下文并行 CP 等任意并行组合;每个 Rank 保存自身分片权重,配合共享存储,多机集群所有节点统一读取权重目录,无需手动合并分片权重即可完成续训。
三是在线 Reshard 权重重分片,支持扩缩容续训,训练中断后,修改并行策略、增减集群卡数,框架自动对分片权重做 Reshard 转换,适配新的分布式切分策略,无需用户手动转换权重文件,大幅提升集群调度灵活性。
四是故障容错与安全保护,支持临终 Checkpoint,任务收到终止信号时优先保存现场权重;当部分 Rank 权重文件损坏、缺失,框架自动回退到上一个完好 Checkpoint 版本,避免续训直接报错终止;支持异步保存 Checkpoint,降低权重落盘对训练吞吐的性能影响。
五是精度调试联动校验,可配合 MindStudio 精度调试工具,续训后 Dump 算子中间张量,和 GPU 基线做比对,校验续训之后 Loss、梯度、张量数值一致性,排查续训引入的数值漂移、收敛异常问题。
二、分布式断点续训全流程实施流程
MindSpore Transformers 分布式断点续训遵循“并行配置‑Checkpoint 保存配置‑正常训练‑任务中断‑续训拉起‑状态校验‑继续训练”闭环流程。
第一步分布式与 Checkpoint 工程配置,编写并行策略,设置 TP、PP、FSDP 等维度;配置 Checkpoint 保存参数,设置保存间隔、最大保留权重数量,开启优化器状态保存;集群多机场景配置共享存储路径环境变量SHARED_PATHS,所有 NPU 节点均可访问同一个权重目录,分布式断点续训需要开启数据下沉sink_mode=True。
第二步启动大模型分布式训练,使用 msrun 拉起多机多卡任务,训练过程按照设定 Step 间隔自动保存分布式分片 Checkpoint,目录下同时生成元信息文件,记录训练步数、分布式策略、数据集迭代位置。
第三步任务异常中断,当发生设备故障、任务被终止,框架会尽可能留存最新 Checkpoint;若开启临终 Checkpoint,收到终止信号会优先完成权重落盘。
第四步拉起断点续训任务,复用原有训练脚本,开启resume_training=True,指定 Checkpoint 根目录;若需要修改并行策略或者集群卡数,框架触发在线 Reshard 自动权重分片转换,无需额外手动转换。
第五步续训后状态校验,任务启动后观察日志,确认恢复 Step 与中断 Step 对齐;对比续训初始 Loss,和中断前最后一步 Loss 保持接近;配合 MindStudio 采集中间张量,校验梯度、Loss 数值,确认不存在数值漂移。
第六步持续训练与迭代,校验状态无误,任务持续执行,后续继续按配置保存 Checkpoint,完成完整预训练或微调任务。整套流程避免大模型任务中断后全量重训,把故障恢复的人力成本降到最低。
三、断点续训核心代码实操
下面为 MindSpore Transformers 分布式断点续训示例代码,包含多维并行配置、Checkpoint 保存、断点续训拉起、续训后精度校验逻辑,可直接用于昇腾 NPU 集群开发。
import os
import mindspore as ms
from mindspore import context
from mindformers import AutoModel, AutoDataset, Trainer
from mindformers.tools import CheckpointMonitor
from mindstudio_precision import PrecisionDebugger
# 设置共享存储路径,多机集群断点续训必须配置
os.environ["SHARED_PATHS"] = "/mnt/shared_storage"
context.set_context(mode=context.GRAPH_MODE, device_target="Ascend")
ms.set_seed(42)
def init_resume_debug():
"""续训后精度调试,校验续训数值无漂移"""
config = {
"common_dump_settings": {
"dump_mode": 0,
"enable_debug": True,
"dump_path": "./resume_dump",
"iteration": "0|1‑10"
},
"overflow_detect": {
"enable": True,
"error_stop": False
},
"precision_compare": {
"baseline_device": "gpu",
"compare_metrics": ["cosine", "mse", "rel_err"]
}
}
debugger = PrecisionDebugger(config=config)
return debugger
if __name__ == "__main__":
# 多维混合并行配置
parallel_config = {
"data_parallel":4,
"tensor_parallel":2,
"pipeline_parallel":1
}
ms.set_auto_parallel_context(**parallel_config)
# 加载模型、数据集
model = AutoModel.from_pretrained("llama2_7b")
train_dataset = AutoDataset.from_pretrained("wikitext_pretrain")
# Checkpoint监控回调:控制权重保存行为
ckpt_cb = CheckpointMonitor(
prefix="llama2_7b",
save_checkpoint_steps=500,
keep_checkpoint_max=3,
no_save_optim=False, # 保存优化器状态,断点续训必需
save_path="./output/ckpt"
)
# Trainer配置,开启断点续训
trainer = Trainer(
model=model,
args={
"sink_mode": True, # 分布式续训要求开启数据下沉
"resume_training": True, # 开启断点续训
"load_checkpoint": "./output/ckpt",
"ignore_data_skip": False # 不忽略数据跳过,恢复数据集游标
},
train_dataset=train_dataset,
callbacks=[ckpt_cb]
)
# 执行训练,中断后再次运行脚本自动续训
trainer.train()
# 续训后执行数值校验,验证续训无精度漂移
debug_tool = init_resume_debug()
debugger = debug_tool
debugger.start()
for batch in train_dataset.create_tuple_iterator():
loss = model(*batch)
debugger.step()
break
debugger.stop()
result = debugger.compare_result()
print("====断点续训数值校验报告====")
print(f"Loss相对误差:{result['loss_rel_err']:.4f}")
print(f"张量最小余弦相似度:{result['min_cosine']:.4f}")
配套断点续训 json 配置文件,管控并行策略、Checkpoint、续训参数,集群部署直接加载使用:
{
"parallel_config":{
"data_parallel":4,
"tensor_parallel":2,
"pipeline_parallel":1
},
"checkpoint":{
"enable_save":true,
"save_path":"./output/ckpt",
"save_checkpoint_steps":500,
"keep_checkpoint_max":3,
"no_save_optim":false
},
"resume":{
"resume_training":true,
"load_checkpoint":"./output/ckpt",
"sink_mode":true,
"ignore_data_skip":false
}
}
四、调试价值与应用总结
大模型多维并行分布式训练,权重被切分到多张 NPU 设备,传统续训方案容易出现优化器丢失、数据集重复采样、并行切分不匹配、续训后 Loss 突变等问题。如果缺少可靠断点续训,一旦任务中断,需要从头重启训练,消耗大量集群算力与时间成本。
MindSpore Transformers 分布式断点续训实现并行配置‑Checkpoint 保存‑训练执行‑中断‑续训拉起‑状态校验完整闭环。支持多维混合并行、在线 Reshard 扩缩容续训,完整恢复模型、优化器、数据集迭代状态;配合 MindStudio 工具可校验续训之后数值一致性,识别续训带来的收敛漂移,将故障恢复调试周期由数天缩短至小时级。
该能力广泛适用于十亿至万亿参数大模型预训练、SFT 微调、RLHF 对齐训练,适配单机多卡、多机万卡昇腾集群,提升大规模训练任务长稳可靠性,保障国产化大模型训练高效落地。
更多推荐




所有评论(0)