配置HCCL主动触发建链
当故障发生在HCCL建链阶段时,会导致进程级别重调度或进程级别在线恢复失败。如果除训练初始化的HCCL建链外,还存在其他训练阶段存在HCCL建链,可参考以下步骤进行提前建链,防止故障出现在HCCL建链阶段。
PyTorch单算子场景
PyTorch单算子场景HCCL建链为懒加载模式,当建立torch通信组后,该通信组下发的第一个算子将触发HCCL通信域的创建,创建后完成卡间建链。因此,如果需要在训练初始化阶段完成所有通信域的建链,只需要在初始化阶段给每个通信组下发一个通信算子。
以下为创建通信组主动创建的示例:
rank = 0 # 设置本进程rank sub_ranks = [0, 1, 2] # 假设为一个包含0、1、2的通信组 groupX = torch.distributed.new_group(ranks=sub_ranks,...) # 创建通信组X test_tensor = torch.ones(1).to(f'npu:{rank}') * (rank + 1) # 构建一个测试数据tensor torch.distributed.all_reduce(test_tensor, op=dist.ReduceOp.SUM, group=groupX) # 在通信组X执行all reduce算子
父主题: 配置训练恢复