本文基于CANN开源社区的ascend-boost-comm仓库进行技术解读

  • CANN组织链接:https://atomgit.com/cann
  • 仓库链接:https://atomgit.com/cann/ascend-boost-comm

前言

在分布式训练中,通信往往是瓶颈。模型越大、卡数越多,通信开销越明显。

之前聊过hcomm和shmem这些通信基础库。ascend-boost-comm则是更高层的通信加速方案,专注于提升分布式场景下的通信效率。

分布式通信的挑战

多卡训练时,通信涉及:

梯度同步\nAllReduce

通信开销

参数广播\nBroadcast

数据分发\nScatter

结果收集\nGather

随着规模增大,这些通信操作的时间占比越来越高。

ascend-boost-comm做了什么

从名字来看:ascend + boost + comm = 通信加速

主要方向:

1. 计算通信重叠

计算和通信同时进行,不互相等待:

重叠执行

计算N

计算N+1

通信N

通信N+1

串行执行

计算

通信

下一轮计算

重叠后,一边算一边传,整体时间更短。

2. 通信压缩

传输前压缩,接收后解压:

原始数据\n1GB

压缩

传输\n0.3GB

解压

还原数据

代价是压缩/解压的计算,但如果带宽是瓶颈,压缩是值得的。

3. 分层通信

不同层级用不同策略:

机器间

网络\nRoCE/IB

机器A

机器B

机器内

高速\nNVLink/HCCS

卡0

卡1

卡2

机器内用高速互联,机器间用网络。不同层级不同策略。

4. 异步通信

不阻塞等待通信完成:

# 同步方式
all_reduce(grad)  # 阻塞等完成
compute_update()

# 异步方式
handle = all_reduce_async(grad)  # 立即返回
compute_something_else()         # 做其他事
wait(handle)                     # 需要时再等

使用场景

大模型训练

大模型梯度量大,通信压力大。需要各种优化手段。

超大规模训练

几百上千卡的训练,通信成为主要瓶颈。

跨数据中心训练

带宽有限,压缩和调度优化更重要。

和其他项目的关系

PyTorch DistributedDataParallel

torch.distributed

HCCL

ascend-boost-comm\n加速优化

hcomm\n基础通信

硬件

ascend-boost-comm在通信栈中起加速作用。

总结

ascend-boost-comm是分布式通信的加速方案,主要技术:

  • 计算通信重叠
  • 通信压缩
  • 分层通信策略
  • 异步通信

对于大规模分布式训练,这些优化能显著提升效率。

相关链接

  • ascend-boost-comm仓库:https://atomgit.com/cann/ascend-boost-comm
  • hcomm仓库:https://atomgit.com/cann/hcomm
  • 分布式训练相关文档

这篇是我学习分布式通信优化时的笔记,如有错误欢迎指正。

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐