更新时间:2025-08-18 GMT+08:00

开启超节点HCCL通信算子级重执行机制

场景描述

针对Snt9B23超节点下光模块故障率高的问题,通过在HCCL通信算子级引入重执行机制,提升系统的稳定性和可靠性。

HCCL(Huawei Collective Communication Library,华为集合通信库)是华为专为昇腾(Ascend)AI处理器设计的分布式通信库,旨在优化多设备间的高效协作,以加速深度学习模型的分布式训练,适用于需要大规模算力的AI场景。在分布式训练中,HCCL负责协调多个昇腾处理器之间的数据同步(如梯度聚合、参数更新),减少通信开销,提升训练效率。

约束限制

  • 仅Snt9b23超节点支持。
  • 开启算子重执行会对性能带来轻微的影响。
  • 重执行依赖VPC平面(非参数面)网络进行通信域内状态协商,如果VPC平面不同,则无法重执行。
  • 对于HCCS平面,如果链路没有恢复,路由未收敛,则无法重执行。
  • 重执行依赖故障发生时一个通信域中所有卡都停在同一通信算子处,否则无法重执行,成功率约为95%。
  • 使用inplace方式的通信算子可能导致UserIn数据被污染,从而影响重执行的可靠性。尽管重执行支持约80%通信算子的inplace方式,但对于Torch框架中的all_reduce、all_gather和reduce_scatter等算子,重执行仍不支持其inplace操作。
  • RoH/RoCE平面因为闪断或断链触发的借轨,在同一通信域只允许执行一次,且不支持回切。借轨状态下,业务可持续,但应尽快保存checkpoint,维修故障。
  • 对于目前昇腾的执行模式,HCCL重执行的支持范围如下:
    表1 HCCL重执行的支持范围

    模式

    HCCL通信算子展开方式

    是否支持

    单算子

    Stars

    支持

    Ffts+

    支持

    Aicpu展开

    支持

    通信计算融合(mc2)

    不支持

    图模式

    全下沉模式,通信算子以展开的tasks合入图

    不支持

    全下沉模式,HCCL不参与图执行过程,无法进行重执行

    Aicpu展开

    支持

原理说明

Snt9B23超节点的连接系统主要包含HCCS平面和RoH/RoCE平面两个数据传输平面。

在HCCS平面中,L1-1520与L2-1520之间采用光互联技术;在RoH/RoCE平面,超出NPU范围的部分均使用光互联。由于电互联域的故障率相对较低,本机制主要针对光互联域的光模块故障进行处理。具体而言:

  • HCCS平面L1-1520和L2-1520之间的光模块故障。
  • RoH/RoCE平面出Snt9B23超节点的光模块故障。

HCCS平面

针对HCCS平面,L1和L2之间的光模块如果发生闪断或断链,1520设备将自动完成路径切换(前提是存在多路径)。然而,断链可能导致丢包,进而引发业务中断。此时,框架层将回退至上一个checkpoint进行断点续训。通过引入HCCL重执行机制,在1520完成路径切换后,重执行功能可有效降低回退至checkpoint进行断点续训的概率,从而进一步提升业务的连续性和可靠性。

RoH/RoCE平面

针对RoH/RoCE平面,协议内置传输层重传机制,可对丢包或闪断提供一定的修复能力。然而,该机制的可靠性仍存在局限性。为提升整体可靠性,本功能在HCCL层面引入了一层重执行机制:当检测到闪断持续超过30秒或发生断链时,系统将通过建立新的传输路径(借轨),在算子级启动重执行流程,进一步保障业务的稳定运行。

参数配置(HCCL_OP_RETRY_ENABLE)

环境变量HCCL_OP_RETRY_ENABLE用于配置是否开启HCCL算子的重执行特性。重执行是指当通信算子执行报SDMA或RDMA CQE类型的错误时,HCCL会尝试重新执行此通信算子。通过此特性,可以有效避免硬件闪断导致的通信中断,提升通信稳定性。

支持在以下三个物理层级的通信域中配置重执行特性:

  • L0:Server内通信域
  • L1:Server间通信域
  • L2:超节点间通信域

配置方法

在运行训练任务前,在Server节点中执行以下命令。

export HCCL_OP_RETRY_ENABLE="L0:0, L1:1, L2:1"
表2 参数说明

参数

含义

取值范围

默认值

建议取值

L0

Server内通信域

  • 0:Server内通信域的通信任务不开启重执行。
  • 1:Server内通信域的通信任务开启重执行。

0

0

L1

Server间通信域

  • 0:Server间通信域的通信任务不开启重执行,默认值为0。
  • 1:Server间通信域的通信任务开启重执行。

0

1

L2

超节点间通信域

  • 0:超节点间通信域的通信任务不开启重执行,默认值为0。
  • 1:超节点间通信域的通信任务开启重执行。

0

1

注意事项

  • 当L2配置为1时,超节点间通信支持在某一Device网卡故障时使用备用Device网卡进行通信。备用网卡为同一NPU中的另一个Die网卡。
  • 如果通信域的创建方式为“基于ranktable”创建通信域,需要在ranktable文件中通过"backup device ip"参数配置备用网卡。
  • 如果通信域的创建方式为“基于root广播式”创建通信域,会自动将同一NPU下的两个Die互为备用网卡,无需手动配置。

参数配置(HCCL_OP_RETRY_PARAMS)

环境变量HCCL_OP_RETRY_ENABLE用于配置HCCL算子重执行的具体参数,包括最大重执行次数、第一次重执行的等待时间以及两次重执行的间隔时间。

配置示例

export HCCL_OP_RETRY_PARAMS="MaxCnt:3, HoldTime:5000, IntervalTime:1000"
表3 参数说明

参数

含义

类型

取值范围

默认值

单位

建议值

MaxCnt

最大重执行次数

uint32

[1, 10]

3

保持默认值3

HoldTime

从检测到通信算子执行失败到开始第一次重执行的等待时间

uint32

[0, 60000]

5000

ms

保持默认值5000

IntervalTime

两次重执行之间的间隔时间

uint32

[0, 60000]

1000

ms

保持默认值1000

使用约束

仅当通过HCCL_OP_RETRY_ENABLE环境变量开启了HCCL的重执行特性(任一层级的重执行特性开启即可)时,此环境变量才生效。