大模型训练 | 通信原语介绍(一)

大模型训练 | 通信原语介绍(一)

原创 大K向前冲 科技词话 2025年04月04日 12:34 广东

在大模型训练过程中,通信原语起着举足轻重的作用。大模型训练涉及海量数据和复杂计算,需要多节点协作。通信原语能保障各节点间高效数据交互,像All-Reduce可实现全局梯度同步,让各节点获取相同规约结果,保证模型参数更新一致性;Reduce-Scatter能将规约结果分块到各节点,便于并行计算。

合理运用通信原语可优化训练流程,减少通信延迟,提升计算资源利用率,加速训练速度。若通信原语使用不当,会出现数据传输瓶颈、训练效率低下等问题,影响大模型训练效果和性能。 

图片

售前一定要懂通信原语

云计算/智算解决方案售前人员懂大模型训练通信原语十分必要,作为售前,第一要能准确理解客户需求,能通过通信原语与客户探讨训练规模、架构,识别通信方面痛点,如数据并行时的All - Reduce操作,可评估资源需求。

第二,售前也要能提供专业方案,可根据不同通信原语为客户设计合理架构和网络拓扑,优化资源配置,像针对超大模型训练采用的Reduce - Scatter和All - Gather操作。

第三,有利于与研发团队协作,使用共同技术语言,准确传达客户需求,避免沟通障碍。同时,熟悉掌握通信原语,还能与建立客户信任,展示专业能力,深入讨论通信原语让客户感受公司实力,同时能准确解答客户疑问,帮助客户做出明智决策,确保为客户提供贴合需求的云计算/智算解决方案。

图片

|| 集合通信与通信原语  

分布式训练过程中设计到许多通信上的操作, 每个操作有其不同的术语并且有所区别。

集合通信(Collective Communications)是一种涉及进程组内所有进程的全局通信操作。在这一操作体系中,发送(send)、接收(receive)、复制(copy)、组内进程栅栏同步(Barrier)以及节点间进程同步(signal + wait)是最为基础的操作。

这些基础操作经过有机组合,形成了一组通信模板,即通信原语。例如

  • 1对多的广播(Broadcast)

  • 多对1的收集(Gather)

  • 多对多的收集(All-Gather)

  • 1对多的发散(Scatter)

  • 多对1的规约(Reduce)

  • 多对多的规约(All-Reduce)

  • 组合的规约与发散(Reduce-Scatter)

  • 以及多对多的(All-to-All)等

图片

集合通信面临的挑战主要在于如何提升通信效率,以及怎样适配最佳的网络硬件连接拓扑结构。

图片

|| Broadcast 广播

Broadcast是一种1对多的通信原语,即存在一个数据发送者和多个数据接收者。在集群环境中,该原语可将一个节点自身的数据广播至其他节点。如示意图所示,以集群中的训练加速卡节点为例,用圈圈表示节点,相同颜色的小方块代表相同的数据。当主节点0执行Broadcast操作时,数据便会从主节点0传播至其他节点。

图片

在分布式机器学习的实际应用场景中,网络参数的初始化是一个关键环节,而广播操作在其中扮演着重要角色。如图所示,在数据传输过程里,单个sender(发送端)承担着数据发送的任务,它将存储于0卡上、尺寸规格为1xN的Tensor(张量)数据,以广播的形式传递至其他各个节点。经过这一广播过程,最终,每个节点所对应的计算卡均会输出一个尺寸为[1xN]的矩阵数据,实现了数据在各节点间的同步与共享,为后续的分布式计算提供了统一的参数基础 。 

图片

|| Scatter 发散

Scatter同样属于1对多的通信原语,有一个数据发送者和多个数据接收者,可在集群内将一个节点自身的数据发散到其他节点上。与Broadcast不同的是,Broadcast是将主节点0的数据完整发送给所有节点,而Scatter则是先将数据进行切片,再分发给集群内的所有节点。如示意图所示,不同颜色的小方块代表不同的数据,主节点0将数据分成四份分别发送到节点0-3。其反向操作是Gather。

图片

Scatter的应用场景包括:

1. 在ReduceScatter组合操作中,承担其中的Scatter操作部分;

2. 在模型并行初始化时,将模型scatter到不同的GPU上。

图片

|| Gather 收集

Gather操作是多对1的通信原语,具有多个数据发送者和一个数据接收者,能够在集群内将多个节点的数据收集到一个节点上。如示意图所示,不同颜色的小方块代表不同的数据。

图片

Gather是数据的多对1收集,它将多张GPU卡上的数据集中收集到1张GPU卡上,其反向操作是Scatter。在ReduceScatter组合里的 Scatter操作中,Gather扮演着重要角色。这个机制对很多平行算法很有用,比如并行的排序和搜索。

图片

|| All-Gather 全收集

All-Gather属于多对多的通信原语,存在多个数据发送者和多个数据接收者。在集群内,它先将多个节点的数据收集到一个主节点上(Gather操作),然后再把收集到的数据分发到其他节点上(broadcast操作),实现了将集群内所有数据收集到所有节点的功能。

图片

All-Gather是数据的多对多同步全收集,可看作是Gather + Broadcast的操作组合,其反向操作是ReduceScatter。它在模型并行领域应用广泛,例如在模型并行的前向计算中,需要用allgather把模型并行里切分到不同GPU上的参数全同步到一张GPU上,以便进行前向计算。

图片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值