弹性训练
当出现硬件故障,且K8s集群中无可用备份资源时,MindCluster会先按照数据并行域缩掉部分节点继续训练,当集群中有可用空闲资源时,再触发扩容恢复原有规模训练。相比于进程级别重调度,解决了集群中无可用备份资源被重调度的问题。
使用约束
- 仅支持PyTorch配合MindSpeed-LLM master版本使用,版本配套请参见MindSpeed-LLM。
- 仅支持acjob类型训练任务。
- 依赖于MindIO的优化器副本,需要存在全量优化器副本,故需要安装MindIO和TaskD配合使用。
- 不能和优雅容错功能同时开启。
- 当训练任务的annotation中hccl/rankIndex字段为0的Pod发生故障时,不支持触发弹性训练。
- 不支持开启watchdog功能。
- 由于弹性训练会额外创建新的通信组,因此可能会导致片上内存占用增加。
增加内存大小计算公式:增加内存最大值(MB) = HCCL_BUFFSIZE * 2 * 9,其中,HCCL_BUFFSIZE默认为200MB,HCCL_BUFFSIZE的说明详细请参见CANN环境变量参考。
支持的产品型号和AI框架
产品类型 |
硬件形态 |
训练框架 |
|---|---|---|
Atlas A2 训练系列产品 |
Atlas 800T A2 训练服务器 |
PyTorch |
Atlas A3 训练系列产品 |
Atlas 900 A3 SuperPoD 超节点 |
PyTorch |
弹性训练原理
图1 原理图


以上示意图仅以缩掉1个DP域为例,实际弹性训练过程中可能会一次缩掉多个DP域。图中每个方格代表一个rank。
- 按照TP(Tensor Parallelism,张量并行)、PP(Pipeline Parallelism,流水线并行)、DP(Data Parallelism,数据并行)正常进行分布式训练。
- 训练到某一时刻,若某张卡发生故障,且集群中无更多空闲资源可被调度进行断点续训,则按照DP域缩容,即缩掉1个DP域对应的Pod(可能包含多个Pod)后继续训练。
- 缩容训练到某一时刻,集群中有空闲资源时,缩掉的Pod会被重新调度,扩容恢复到原有规模继续训练。
父主题: 故障处理