昇腾社区首页
中文
注册

配置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算子