文档
注册

集合通信简介

HCCL(Huawei Collective Communication Library)是基于昇腾AI处理器的高性能集合通信库,提供单机多卡、多机多卡集合通信原语,在PCIe、HCCS和RoCE高速链路实现集合通信功能,实现分布式训练。

HCCL API概览

图1 集合通信API概览

HCCL提供了Python与C++两种语言的接口,其中Python语言的接口用于实现TensorFlow网络在昇腾AI处理器执行分布式优化;C++语言接口用于实现OPBase模式下的框架适配,实现分布式能力,例如HCCL单算子API嵌入到PyTorch后端代码中,PyTorch用户直接使用PyTorch原生集合通信API,即可实现分布式能力。

HCCL执行流程

训练场景中,HCCL提供了服务器间高性能集合通信功能,其执行流程如图2所示。

图2 分布式训练场景集合通信流程

服务器间通信过程分为三个阶段:
  1. 通信初始化:获取必要的集合通信配置参数并初始化网络设备。

    通信初始化阶段不涉及昇腾设备之间的交互。

  2. 建立通信连接:建立socket连接并交换通信两端的通信参数和内存信息。

    建立通信连接阶段,HCCL根据用户提供的集群信息并结合网络拓扑与其他NPU设备建链并交换用于通信的参数信息。如果在建链超时时间阈值(默认120s,可通过环境变量HCCL_CONNECT_TIMEOUT配置)内未得到其他NPU设备的及时响应,会上报建链超时错误并退出训练。

  3. 执行通信操作:通过Notify同步设备执行状态,传递内存数据。

    通信操作执行阶段HCCL会根据通信算法编排NOTIFY/SDMA等任务,并通过runtime下发给昇腾设备任务调度器,设备根据编排信息调度并执行任务。其中Notify类的任务用于卡间同步,Notify wait会阻塞任务流执行直到对应的Notify record到达,以确保后续的通信操作执行时彼此的内存处于ready状态。

分布式训练场景下集合通信异常流程如图3所示。

图3 分布式训练场景集合通信异常流程

单卡问题、通信链路问题均可能会导致集群出现大量的超时错误,在定位集群问题时需要锁定问题出现位置,因此需要收集整个集群的日志信息。

相关概念

表1 相关概念

概念

介绍

ranktable文件

ranktable文件,用于描述参与集合通信的集群信息,包括Server,Device,容器等的组织信息。

rank

rank,指参与集合通信的进程。

group

group,指参与集合通信的进程组,包括:

  • hccl world group:默认的全局group,包含所有参与集合通信的rank,通过ranktable文件创建。
  • 自定义group:hccl world group包含的进程组的子集,可以通过create_group接口将ranktable中的rank定义成不同的group,并行执行集合通信算法。

rank size

  • rank size,指整个group的rank数量。
  • local rank size,指group内进程在其所在Server内的rank数量。

rank id

  • rank id,指进程在group中对应的rank标识序号。范围:0~(rank size-1)。对于用户自定义group,rank在本group内从0开始进行重排;对于hccl world group,rank id和world rank id相同。
  • world rank id,指进程在hccl world group中对应的rank标识序号,范围:0~(rank size-1)。
  • local rank id,指group内进程在其所在Server内的rank编号,范围:0~(local rank size-1)。

梯度切分

在训练神经网络的反向计算阶段,将GE优化计算图中多个参数的allreduce融合分段。按梯度产生顺序,逐段进行allreduce更新网络反向计算参数,实现计算资源优化及通信时间与反向计算时间的并行优化。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词