大模型集合通信
CCL与AI框架、通信原语、并行方式、CCL后端等
大模型集合通信学习笔记
原学习视频链接
ZOMI老师讲的超好!!!
笔记略长,把各方面的内容都涉及了,对于建立概念来说比较好用。
大模型业务全流程

大模型集合通信

XCCL基本架构
1.计算与通信的解耦


分布式加速库
DeepSpeed Megatron-LM MindSpeed ColossalAI
HPC到AI的基本框架

XCCL在AI系统中的位置

通信原语(通信算子)

point to point (P2P)
broadcast

scatter(较少用)

gather(少用)
reduce

all to all
all reduce

all gather

reduce scatter

all to all(MOE兴起后用的很多)

AI对集合通讯算法的需求

1.大带宽(大流量、高频次通信)
2.强同步(单卡故障拖慢全网)
大模型流量相对明确

集合通信的难点:
1.需要在固定的网络互联结构约束下进行高效通信
2.集合通信算法与物理网络互联结构强相关,需要充分发挥网络的通信效率
3.在效率、成本、带宽与时延间进行取舍
!!!!!topo之上的通信算法!!!!!
ALL Reduce通信算法
ring all reduce 通常适用于star、tree等小规模拓扑,因为其通信延迟会随着节点数线性增加

halving-doubling算法
每次选择节点距离倍增的节点相互通信,每次通信量倍减(或倍增),访问步长按照2的N次增加,昇腾HCCL和阿里ACCL均采用该算法
适用Fat-Tree等拓扑,通信步骤少,只有2lbN次(N为通信Rank数)
但采用固定的并行算法,每一个步骤相互通信的Rank均不同,链路来回切换会带来额外的开销。



拓扑感知all reduce算法

nvidia

!!!!组网拓扑不同-》并行配置不同-》通信算法不同!!!!
通信域与Rank
通信域包括上下文(context)进程组(group)【表示通信域中所有进程的集合,一个通信域对应一个进程组】虚拟处理器拓扑(topology)
进程客观上是唯一的,有自己的Process ID,同一个进程可以对应多个进程组,在每个组有自己的Rank ID,也可以属于多个通信域


MP:模型并行组(Model Parallism)。
假设一个完整的模型需要布在8块GPU上,则如图所示,我们共布了2个model replica(2个MP)。MP组为:[[g0, g1, g4, g5, g8, g9, g12, g13], [g2, g3, g6, g7, g10, g11, g14, g15]]
TP:张量并行组(Tensor Parallism)。
对于一个模型的每一层,我们将其参数纵向切开,分别置于不同的GPU上,则图中一共有8个TP组。TP组为:[[g0, g1], [g4, g5],[g8, g9], [g12, g13], [g2, g3], [g6, g7], [g10, g11], [g14, g15]]
PP:流水线并行组(Pipeline Parallism)。
对于一个模型,我们将其每一层都放置于不同的GPU上,则图中一共有4个PP组。PP组为:[[g0, g4, g8, g12], [g1, g5, g9, g13], [g2, g6, g10, g14], [g3, g7, g11, g15]]
DP:数据并行组(Data Parallism)。
经过上述切割,对维护有相同模型部分的GPU,我们就可以做数据并行,则图中共有8个DP组。DP组为[[g0, g2], [g1, g3], [g4, g6], [g5, g7], [g8, g10], [g9, g11], [g12, g14], [g13, g15]]
上述组就是进程组(通信域)
PyTorch分布式训练依赖

但是不同后端(backend)在提供的通信与一上具有一定的差异性

其中NCCL\GLOO等是后端提供的通信库
注意:windows没有NCCL支持
集群间的互联
节点间NPU互联:
- Pcle
- 共享内存
- 私有协议
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)