昇腾社区首页
中文
注册
开发者
下载

弹性训练

当出现硬件故障,且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环境变量参考

更多使用约束可参考MindSpeed-LLM弹性训练功能使用约束

支持的产品型号和AI框架

表1 弹性训练支持的产品和框架

产品类型

硬件形态

训练框架

Atlas A2 训练系列产品

Atlas 800T A2 训练服务器

PyTorch

Atlas A3 训练系列产品

Atlas 900 A3 SuperPoD 超节点

PyTorch

弹性训练原理

图1 原理图

以上示意图仅以缩掉1个DP域为例,实际弹性训练过程中可能会一次缩掉多个DP域。图中每个方格代表一个rank。

  1. 按照TP(Tensor Parallelism,张量并行)、PP(Pipeline Parallelism,流水线并行)、DP(Data Parallelism,数据并行)正常进行分布式训练。
  2. 训练到某一时刻,若某张卡发生故障,且集群中无更多空闲资源可被调度进行断点续训,则按照DP域缩容,即缩掉1个DP域对应的Pod(可能包含多个Pod)后继续训练。
  3. 缩容训练到某一时刻,集群中有空闲资源时,缩掉的Pod会被重新调度,扩容恢复到原有规模继续训练。