分布式训练与通信

共 19 题
📑 题目列表 19 题
#
★★★

1. 数据并行(Data Parallel, DP)、模型并行(Tensor/Pipeline Parallel, TP/PP)、专家并行(Expert Parallel, EP)的工程取舍?

请说明数据并行(DP)、模型并行(Tensor/Pipeline Parallel, TP/PP)、专家并行(Expert Parallel, EP)的工程取舍?

  • 理解各并行策略的原理
  • 掌握各策略的通信与显存特征
  • 理解组合使用与取舍

数据并行(DP)把数据分到各设备,每设备有完整模型副本,梯度 All-Reduce 同步,通信量随模型大小增长,适合显存够用、模型不大时;模型并行把模型切分:张量并行(TP)把一层的权重矩阵切到多设备,计算前需通信,适合单节点内(NVLink);流水线并行(PP)把层按顺序分配到多设备,按阶段流水执行,通信量小但存在 bubble。专家并行(EP)用于 MoE 模型,把 expert 分配到不同设备,token 通过 all-to-all 路由到 expert,通信量较大但显存高效。取舍:DP 通信简单但显存受限;TP 适合不可切分的层内并行但通信频繁;PP 节省显存但需填 bubble;EP 适合 MoE 但通信开销高。实际大模型常组合使用(如 DP+TP+PP 的 3D 并行),根据显存、通信拓扑与集群规模权衡。

各并行策略的本质是"切什么":DP 切数据、TP 切层内权重、PP 切层、EP 切 expert。取舍看显存、通信带宽与扩展性,大模型用组合并行在各维度平衡。

#
★★

2. ZeRO-1/2/3(DeepSpeed)与 FSDP(Fully Sharded Data Parallel, PyTorch)的显存优化原理与适用规模?

请说明 ZeRO-1/2/3(DeepSpeed)与 FSDP(Fully Sharded Data Parallel, PyTorch)的显存优化原理与适用规模?

  • 理解 ZeRO 各阶段切分内容
  • 理解 FSDP 的分片机制
  • 理解显存优化与通信的权衡

ZeRO 是 DeepSpeed 的显存优化方案,通过把训练状态分片来减少显存:ZeRO-1 分片优化器状态(Adam 的动量/方差),ZeRO-2 进一步分片梯度,ZeRO-3 还分片模型参数(权重)。分片后各设备只持有部分状态,前向/反向时按需通过通信收集(gather)缺失部分,用完即释放。FSDP(PyTorch 的 Fully Sharded Data Parallel)本质上与 ZeRO-3 类似,把模型参数、梯度、优化器状态都分片,前向/反向时按需 gather 参数,用后释放。ZeRO 与 FSDP 的显存节省随模型规模增大而显著,但分片引入了通信开销(gather/reduce-scatter)。适用规模:模型参数超过单卡显存时,ZeRO/FSDP 能在数据并行下训练超大规模模型;ZeRO-1/2 显存节省较小、通信较省,适合中等规模;ZeRO-3/FSDP 节省最大、通信最多,适合超大规模。FSDP 已内置 PyTorch,易用性优于 DeepSpeed 的 ZeRO。

ZeRO/FSDP 的核心是"分片训练状态 + 按需 gather",用通信换显存。分片越深(参数/梯度/优化器状态)显存越省、通信越多,必要时配合其他并行(TP/PP)以及混用。

#
★★

3. All-Reduce 的 Ring 算法通信量推导,与 Tree/PS 方案对比?

请推导 All-Reduce 的 Ring 算法通信量,并与 Tree/PS 方案对比?

  • 理解 Ring-AllReduce 的两个阶段
  • 推导通信量公式
  • 对比 Tree/PS 方案

Ring-AllReduce 把设备连成环,每个节点只与相邻节点通信。分两个阶段:ReduceScatter 阶段,数据分 N 份,每轮每个节点向相邻节点发送一份并累加接收的数据,共 N-1 轮,每轮传输数据量 2*(数据总量/N)(每个节点发一份、收一份),此阶段总通信量约 2*(N-1)/N * 数据量;随后 AllGather 阶段,同样 N-1 轮,每个节点把累加后的分片广播给全环,总通信量约 2*(N-1)/N * 数据量。两阶段合计,每个节点的总通信量约 2*(N-1)/N * D(设数据量为 D),随 N 增大接近 2D,且每个节点带宽利用率均衡(无单点瓶颈)。Tree/PS 方案:树形(主从树)每个节点向父节点汇总,带宽瓶颈在根节点,通信量随层数增加但根成为瓶颈;参数服务器(PS)所有节点与中心节点通信,负载集中在 server,带宽受限、扩展性差。Ring 相比 Tree/PS 的优势是带宽利用均衡、无单点瓶颈,通信量随规模增长可扩展。

Ring 的核心是"把大数据分片、每轮只传小片、消除单点瓶颈"。通信量约 2(N-1)/N*D,随 N 增大趋近 2D。Tree/PS 因根节点瓶颈在规模大时受限,Ring 是 NCCL 中大规模 AllReduce 的主流选择。

#
★★

4. 流水线并行的 bubble 占比,为什么 P 段流水线的 bubble 约为 (P-1)/(3P-1),1F1B 调度如何降低内存峰值?

请说明流水线并行的 bubble 占比,解释为什么 P 段流水线的 bubble 约为 (P-1)/(3P-1),以及 1F1B 调度如何降低内存峰值?

  • 理解流水线并行 bubble 的成因
  • 掌握 bubble 占比公式推导
  • 理解 1F1B 调度节省显存

流水线并行把模型层分成 P 段,每段一个设备。若按朴素调度(先填满前向再反向),大量设备处于空闲等待(bubble)。设一个微批每段前向+反向处理时间为 1,按 GPipe 论文的经典公式,bubble 占比 = (P-1)/(M+P-1),M 为微批数;当微批数 M=2P 时,bubble 占比即约为 (P-1)/(3P-1)。直观上,P 越大、微批数越少,流水线填满/排空的时间占比越高,bubble 越大。1F1B(one-forward-one-backward)调度把前向与反向交错执行:每个设备在完成一个微批的前向后立即开始其反向,而不是等所有前向完成。由于反向的激活可被及时释放,峰值的激活显存从 O(P) 个微批降到 O(1) 个,显著降低内存峰值;同时 1F1B 也能保持较高的计算利用率,是当前主流调度。

bubble 是流水线固有的空闲代价,公式 (P-1)/(3P-1) 反映 P 越大 bubble 越大。1F1B 通过交错前向/反向降低激活显存峰值,是显存与利用率的折中优化。

#
★★

5. NCCL 的集合通信原语,AllReduce、AllGather、ReduceScatter、Ring/Tree 算法与跨节点带宽优化如何实现?

请说明 NCCL 的集合通信原语(AllReduce、AllGather、ReduceScatter)与 Ring/Tree 算法,以及跨节点带宽优化?

  • 理解各集合原语的语义
  • 掌握 Ring/Tree 算法选择
  • 理解跨节点带宽优化

NCCL 提供集合通信原语:AllReduce 让所有节点得到全局归约结果;AllGather 让每个节点收集所有节点的数据;ReduceScatter 把数据分片后各节点归约自己负责的分片。实现上,AllReduce 常由 ReduceScatter + AllGather 组合(Ring 算法),或在树形(Tree)算法下按层次归约。Ring 算法带宽均衡、适合大规模多节点;Tree 算法利用多级带宽、延迟可控,适合节点数成组或跨机场景。跨节点带宽优化包括:利用 NVLink 做机内高带宽、用 InfiniBand/RoCE 做机间通信,选择与拓扑匹配的算法(如在每个节点内用 Ring、跨节点用 Tree 的混合),启用通信与计算重叠、使用通信多流(多通道)并行、把通信数据分段提高并行度。NCCL 会根据拓扑与规模自动选择算法与网络路径,优化带宽利用率。

集合原语是训练通信的基础。Ring 适合大规模、带宽均衡,Tree 适合层次化、可控延迟。跨节点优化在于"拓扑感知 + 算法选择 + 通信计算重叠",是分布式训练性能的关键。

#
★★

6. 3D 并行(DP+TP+PP)在大模型(>100B)训练中的组合与 Pipeline Bubble 优化?

请说明 3D 并行(DP+TP+PP)在大模型(>100B)训练中的组合方式与 Pipeline Bubble 优化?

  • 理解 3D 并行的组合关系
  • 掌握各维度承担的角色
  • 理解 pipeline bubble 优化

3D 并行把数据并行(DP)、张量并行(TP)、流水线并行(PP)组合,用于超大规模模型训练。通常 TP 在节点内(依赖 NVLink 高带宽),PP 跨节点(按层切分,通信量小),DP 在 PP 组间复制(各 DP 副本独立训练、梯度同步)。三者的显存与通信角色:TP 处理单层过大、用层内通信;PP 处理层数多、用流水线;DP 处理数据集并行、用梯度 AllReduce。对 >100B 模型,单卡无法容纳,需 TP 切层内权重、PP 切层、DP 提供数据并行。Pipeline Bubble 优化:增加微批数(更多微批填满流水线)、用 1F1B 调度降低 bubble 与内存峰值、用异步/交错调度(如 interleaved)减少 bubble,或减少 PP 段数让 TP 承担更多。目标是让 bubble 占比 (P-1)/(3P-1) 尽量小,同时平衡各维度的通信与显存。

3D 并行是"三维分工":TP 管层内、PP 管层、DP 管数据。bubble 优化在于填满流水线(微批数)与调度(1F1B/interleaved),并合理分配 TP/PP 配比以最小化通信与 bubble。

#
★★

7. 张量并行/流水线并行/数据并行/专家并行的显存与通信特征对比?

请对比张量并行、流水线并行、数据并行、专家并行的显存与通信特征?

  • 理解各并行策略的显存分摊方式
  • 掌握各策略的通信量特征
  • 理解适用场景

张量并行(TP):把单层权重切分到多设备,每个设备只存权重分片,显存分摊;但每层前向/反向需 AllReduce 通信,通信量大且频繁,适合节点内(NVLink 高带宽)。流水线并行(PP):把层分配到多设备,每个设备只存部分层,显存分摊;设备间只需传输层间激活(point-to-point),通信量小,但存在 pipeline bubble。数据并行(DP):每个设备存完整模型副本,显存不省(除非配 ZeRO);梯度 AllReduce 通信与模型大小成正比,适合显存足够、扩展数据吞吐。专家并行(EP):用于 MoE,把 expert 分配到多设备,每个设备只存部分 expert;token 需 all-to-all 路由到 expert,通信量较大,但显存按 expert 分摊。对比:显存节省上 TP/PP/EP 都分摊权重大、DP 不省;通信上 TP 最频繁、PP 最小、DP 中等、EP 依赖 all-to-all。选择取决于模型结构与集群拓扑。

各并行的"显存-通信"特征差异明显:TP 通信重、PP 通信轻但有 bubble、DP 不省显存、EP 适合 MoE。理解特征才能在组合并行时合理分配维度。

#
★★

8. NCCL 的通信拓扑(环形/树形)、NVLINK/IB 带宽与通信计算重叠如何配置?

请说明 NCCL 的通信拓扑(环形/树形)、NVLink/IB 带宽与通信计算重叠如何配置?

  • 理解 NCCL 拓扑选择
  • 掌握 NVLink/IB 带宽利用
  • 理解通信计算重叠配置

NCCL 通信拓扑选择:树形(Tree)算法适合层级结构(节点内/跨节点),利用多级带宽、延迟可控;环形(Ring)算法带宽均衡,适合大规模同构集群。NCCL 会根据拓扑自动选择。带宽利用上,NVLink 提供机内高带宽(如 H100 900GB/s),InfiniBand 提供机间带宽(如 400/800Gbps),配置时让通信尽量走 NVLink 高速路径、跨节点走 IB,并利用多通道(多个集合通信并行)提升带宽利用率。通信计算重叠(overlap)配置:把梯度按层分桶(gradient bucketing),每个桶反向计算完成后立即发起通信,使通信与反向计算并行,避免等待全部反向完成再通信;NCCL 支持异步通信与多流,配合梯度分桶可实现通信与计算重叠。正确配置需考虑拓扑感知、桶大小与流调度,以最大化隐藏通信时间。

通信优化在"拓扑选择 + 带宽最大化 + 通信计算重叠"。Ring 大集群、Tree 层级;NVLink 机内、IB 机间;梯度分桶让通信与反向并行。理解这些才能配置高效 NCCL 训练。

#
★★

9. 分布式训练的通信原语,All-Reduce 的 Ring 与 Tree 实现有何差异?

请说明分布式训练中 All-Reduce 的 Ring 与 Tree 实现?

  • 理解 Ring 实现的两个阶段
  • 理解 Tree 实现的层次归约
  • 对比两者适用场景

All-Reduce 的 Ring 实现:把设备连成环,数据分为 N 份。第一阶段 ReduceScatter,每轮节点把第 i 份数据发给相邻节点并累加收到的数据,N-1 轮后每个节点持有某个分片的全局归约结果;第二阶段 AllGather,再把每个分片结果广播给环上所有节点,N-1 轮后所有节点得到完整结果。Ring 通信量约 2(N-1)/N*D,带宽均衡、无单点瓶颈。Tree 实现:构建一棵归约树,叶节点先把自己的数据归约到父节点,逐层向上归约到根,根得到完整结果后再广播回所有节点。Tree 的通信量在每层每个节点传输部分数据,根节点承担较多通信,可能成为瓶颈,但延迟随层数对数增长,适合节点数呈层次组织的场景。NCCL 根据拓扑与规模选用 Ring 或 Tree。Ring 适合大规模、带宽均衡;Tree 适合层级拓扑、延迟可控。

Ring 用"分片 + 两阶段"消除单点瓶颈,Tree 用"层次归约"控制延迟。选择取决于集群拓扑与规模:Ring 大集群、Tree 层级组织。理解两者是配置高效 AllReduce 的基础。

#
★★

10. All-Reduce 的实现,Ring-AllReduce 的通信量如何分析?

请分析 Ring-AllReduce 的通信量?

  • 理解 Ring 算法的两阶段
  • 推导通信量公式
  • 理解带宽利用率

Ring-AllReduce 的通信量分析:设数据总量为 D,设备数为 N。第一阶段 ReduceScatter:数据分成 N 份,N-1 轮,每轮每个节点向相邻节点发送一份(D/N)并接收一份(D/N),即每轮每节点传输 2D/N,共 N-1 轮,总通信量约 2(N-1)/N * D。第二阶段 AllGather:同样 N-1 轮,每轮每节点传输 2D/N,总通信量约 2(N-1)/N * D。两阶段合计,每个节点共发送约 2(N-1)/N * D(每个阶段每节点发送 (N-1)/N * D),即每节点通信量约 2(N-1)/N * D,随 N 增大趋近 2D,即每节点约传输 2 倍数据量,带宽利用率高、无单点瓶颈。相比朴素算法(每节点都与中心全量通信),Ring 的通信量随规模增长可扩展,是大规模 AllReduce 的理论基础。

Ring 用"分片流水"把通信量维持在每节点约 2D 的水平,随 N 增大近 2D,避免单点瓶颈。理解通信量公式是评估通信瓶颈与扩展性的基础。

#
★★

11. 梯度分桶(gradient bucketing)如何实现通信与反向计算重叠,桶大小对带宽利用率的影响?

请说明梯度分桶如何实现通信与反向计算重叠,以及桶大小对带宽利用率的影响?

  • 理解梯度分桶的机制
  • 掌握通信与反向重叠的原理
  • 理解桶大小对带宽利用率的影响

梯度分桶(gradient bucketing)把模型参数按层/张量划分为多个桶(bucket),反向传播时每个桶的梯度计算完成后立即发起该桶的通信(如 AllReduce),而不是等全部反向完成再一次性通信。这样通信与后续反向计算并行进行,隐藏了通信时间,实现通信-计算重叠。桶大小影响带宽利用率:桶太小,通信启停频繁,未充分利用带宽,且每次通信的固定开销占比高;桶太大,通信碎片化减少、带宽利用率高,但需等更久才发起通信,重叠收益下降(延迟更大)。因此存在最优桶大小:在通信带宽利用率与重叠及时性之间平衡。实践中常用默认分桶(如 pytorch 的 bucket_cap),或按拓扑/模型结构调优桶大小,使通信与反向的流水线紧密。

梯度分桶的核心是"边算边通信":把通信拆成小桶随反向进度发起,实现重叠。桶大小是带宽利用与重叠延迟的权衡,过大/过小都非最优。

#
★★

12. 张量并行的列/行切分,为什么列并行加 AllReduce、行并行加 AllGather,MoE 专家并行的 all-to-all 通信如何运作?

请说明张量并行的列/行切分为何分别加 AllReduce 与 AllGather,以及 MoE 专家并行的 all-to-all 通信如何运作?

  • 理解列并行与行并行的通信需求
  • 掌握 AllReduce/AllGather 的选择逻辑
  • 理解 MoE 的 all-to-all 通信

张量并行中,列并行把权重矩阵按列切分(每个设备持有部分列),输入 x 复制到各设备,各设备做部分矩阵乘得到部分输出,所有设备的部分输出需要相加得到完整输出,因此需要 AllReduce(对部分输出求和)。行并行把权重按行切分(每个设备持有部分行),输入 x 也按列切分,各设备用各自输入分片与权重分片做局部计算,得到的是输出的一部分(列维的下采样),各设备的结果需要拼接成完整输出,因此需要 AllGather(收集各设备的部分输出拼接)。简言之:列并行做"求和"故 AllReduce,行并行做"拼接"故 AllGather。MoE 专家并行中,token 需要被路由到负责它们的 expert 所在的设备,因为不同 token 路由到不同 expert,设备间需要交换 token 数据,这种一对多、多对多的通信由 all-to-all 实现:每个设备把本应发给其他设备的 token 发送过去,同时接收其他设备发来的 token;all-to-all 通信量与 token 分布和 expert 分配相关,是 MoE 训练/推理的主要通信开销。

列并行是"各算各的部分和"需 AllReduce 求和,行并行是"各算各的输出列"需 AllGather 拼接。MoE 因为 token 需跨设备路由到 expert,用 all-to-all 交换 token。理解通信语义即可选对原语。

#

13. Megatron-LM、DeepSpeed、ColossalAI 的并行策略实现差异?

请说明 Megatron-LM、DeepSpeed、ColossalAI 的并行策略实现差异?

  • 理解各框架的核心并行能力
  • 掌握各自的实现特色
  • 理解适用场景

Megatron-LM(NVIDIA)核心是张量并行(TP)与流水线并行(PP),实现了层内权重切分与层间流水,通信高效、性能强,是 TP/PP 的参考实现,与 NVIDIA 硬件深度优化。DeepSpeed(Microsoft)核心是 ZeRO 优化(ZeRO-1/2/3)与混合并行,聚焦显存优化与训练稳定性,支持 ZeRO 与 TP/PP/DP 组合,并引入 ZeRO-Offload、梯度压缩等。ColossalAI(HPC-AI Tech)强调"一键并行"的自动化与多种并行(数据、张量、流水线、序列与 MoE 并行),内置多项先进技术(如 Gemini 显存管理、sequence parallel),易用性高、自动化程度高。差异:Megatron 强在 TP/PP 性能与参考实现,DeepSpeed 强在 ZeRO 显存优化,ColossalAI 强在自动化与多并行整合。选择取决于对性能、显存优化与易用性的需求。

三个框架解决不同重点:Megatron 性能(TP/PP)、DeepSpeed 显存(ZeRO)、ColossalAI 自动化(多并行整合)。它们常被组合使用(如 Megatron+DeepSpeed),理解各自强项即可选型。

#

14. ZeRO 系列优化(ZeRO-1/2/3)与混合并行的组合使用场景?

请说明 ZeRO 系列优化(ZeRO-1/2/3)与混合并行的组合使用场景?

  • 理解 ZeRO 各阶段适用场景
  • 掌握 ZeRO 与 TP/PP 的组合
  • 理解组合原则

ZeRO-1 只分片优化器状态,显存节省较小、通信开销小,适合显存略紧张、只想省优化器状态的场景。ZeRO-2 分片优化器状态+梯度,显存节省更多,通信略有增加,适合中等规模。ZeRO-3 分片参数+梯度+优化器状态,显存节省最大但通信最多,适合超大规模模型。与混合并行组合使用:ZeRO-3 可与 TP/PP 组合,TP 处理单层过大、PP 切层,ZeRO 处理显存分片;当模型超大、单卡放不下时,ZeRO-3 结合 TP/PP 是常用组合。组合原则:ZeRO 解决"显存不够",TP/PP 解决"单算子/层过大",DP 提供数据并行。实际中 DeepSpeed 的 ZeRO-3 + Megatron TP/PP 组合训练百亿级模型是常见做法,同时需注意 ZeRO 分片与 TP/PP 的通信叠加,合理配置以减少通信开销。

ZeRO 层层加深分片,显存越省通信越多。组合使用按"显存瓶颈"与"单层过大"分别用 ZeRO 与 TP/PP。理解组合原则能合理规划大规模训练的资源与通信。

#

15. ZeRO 与模型并行/流水线并行中显存优化的思路如何?

请说明 ZeRO 与模型并行/流水线并行在显存优化上的思路?

  • 理解各方法的显存优化来源
  • 掌握 ZeRO 的分片思路
  • 理解与模型并行的互补

ZeRO 与模型并行(TP)和流水线并行(PP)的显存优化思路不同:ZeRO 通过"分片复制"(sharding)把训练状态(参数、梯度、优化器状态)分布到各设备,每个设备存部分,用通信按需 gather,显存按设备数分摊,但依赖通信收集;TP/PP 通过"切分计算"(partitioning)把模型权重或层切到不同设备,每个设备只负责并保存部分权重,显存按设备数分摊。思路差异:ZeRO 是"数据/状态分片 + 全量计算",TP/PP 是"计算切分 + 状态归属"。二者互补:ZeRO 解决"状态显存",TP 解决"单层过大装不下",PP 解决"层数多"。组合时,ZeRO 分片减少每设备状态占用,TP/PP 减少每设备权重占用,共同降低单卡显存需求,支撑超大规模模型。ZeRO 的通信是 gather 状态,TP/PP 的通信在层内/层间,二者叠加需要合理规划带宽。

ZeRO 分片"状态"、TP/PP 切分"计算与权重",是两种不同的显存优化哲学。理解差异才能正确组合:ZeRO 应对显存总量,TP/PP 应对单层/层数过大。

#

16. 梯度压缩与异步训练如何缓解通信瓶颈?

请说明梯度压缩与异步训练如何缓解通信瓶颈?

  • 理解梯度压缩的原理
  • 理解异步训练的机制
  • 理解两者的权衡

梯度压缩通过减少通信数据量缓解通信瓶颈:对梯度做量化(如 1-bit/低比特)、稀疏化(只传输显著梯度)、或 top-k 选取(只传最重要的梯度),高压缩比可显著降低通信量,但会引入误差,需配合误差补偿(如纠偏、误差反馈)来保持收敛。异步训练(async training)让各设备不等其他设备梯度就绪,各自独立更新参数,从而减少同步等待,提升通信效率与吞吐;但异步会导致参数版本不一致(stale gradient),可能影响收敛稳定性,需要适度控制异步程度或采用延迟补偿。两者权衡:梯度压缩以精度换带宽,异步以收敛风险换吞吐。实践中常结合使用,在保证收敛的前提下压缩通信、异步化减少等待,从而缓解通信瓶颈、提升大规模训练的可扩展性。

通信瓶颈的缓解靠"减量"(压缩)与"去同步"(异步)。压缩引入误差需补偿,异步引入 stale 梯度需控制。理解权衡才能在优化带宽时不牺牲收敛质量。

#

17. 梯度同步的同步/异步模式,收敛与通信如何权衡?

请说明梯度同步的同步/异步模式在收敛与通信上的权衡?

  • 理解同步/异步模式的机制
  • 掌握收敛与通信的权衡
  • 理解适用场景

同步梯度同步(sync)中,所有设备计算完梯度后由 AllReduce 汇总,再统一更新参数,保证各设备参数版本一致,收敛稳定、易调试,但受最慢设备(straggler)拖累,通信等待多、吞吐受限。异步梯度同步(async)中,各设备独立计算与更新,无需等待其他设备,通信等待少、吞吐高,但可能使用过时梯度(stale)更新,参数版本不一致,收敛可能不稳定甚至发散。权衡:同步收敛好但通信等待多;异步吞吐高但收敛风险大。折中方案包括"半同步"(限制异步滞后范围)、"梯度累积"(本地累积多个梯度再同步)等。选择取决于:训练稳定性要求高选同步,通信瓶颈严重、可容忍轻微收敛波动时用异步。大规模训练常以同步为主,用通信优化(重叠、压缩)缓解等待,而非彻底异步。

同步/异步是"收敛稳定性 vs 通信等待"的权衡。同步稳定但慢、异步快但险。理解权衡才能选对模式,实践常用同步 + 通信优化,异步用于特定场景。

#

18. 通信与计算重叠,pipeline 并行与梯度异步如何结合?

请说明通信与计算重叠在 pipeline 并行与梯度(异步)中的体现?

  • 理解 pipeline 并行中的通信重叠
  • 理解梯度通信与计算重叠
  • 掌握重叠的收益

通信与计算重叠的目标是让通信时间不被计算时间"感知",从而隐藏通信开销。在 pipeline 并行中,设备的层间通信(发送激活/接收激活)可以与当前阶段的计算重叠:设备在计算本阶段微批的同时,把前一阶段的输出发送给下一设备、接收下一设备的输入,通过流水线化让通信与不同微批的计算并行。在梯度通信中,梯度分桶让每个桶的梯度完成即发起 AllReduce,与剩余反向计算重叠;异步梯度更新则让通信与后续迭代计算重叠。重叠的收益是让通信利用率与计算利用率都提升,缩短整体训练时间。实现重叠需要多流/多通道、异步通信 API、以及合理的流水线调度(如 1F1B 与异步通信结合)。重叠优化是分布式训练提升扩展性的关键手段。

重叠的本质是"用计算的 busy 掩盖通信的 idle"。pipeline 用阶段间通信与计算并行,梯度用分桶与反向并行。重叠效果取决于通信与计算的相对时间与调度。

#

19. GPU CUDA ROCm SYCL interoperability 的多 GPU 通信(NCCL、RCXL、RCCL)在 NVLink、Infinity Fabric、RoCE 上的差异?

请说明多 GPU 通信(NCCL、RCXL、RCCL)在 NVLink、Infinity Fabric、RoCE 上的差异?

  • 理解各通信库的归属
  • 掌握各互联技术的差异
  • 理解跨厂商生态

NCCL 是 NVIDIA 的集合通信库,深度优化 NVLink(机内)与 InfiniBand/RoCE(机间),是 CUDA 生态的标准通信库。RCCL 是 AMD 的对应集合通信库,基于 ROCm 生态,优化 AMD GPUs 的机内互联(Infinity Fabric)与机间网络(RoCE/InfiniBand)。RCXL 是 AMD 新推出的多 GPU 通信库,旨在替代/增强 RCCL,提供更优的 Peers Direct 与跨代支持。互联差异:NVLink 是 NVIDIA 机内高带宽(如 900GB/s),Infinity Fabric 是 AMD 机内互联(用于 CPU-GPU 与 GPU-GPU,带宽低于 NVLink),RoCE 是通用以太网 RDMA 实现,用于机间通信,带宽与延迟取决于网络。三者在软件上分别由 NCCL/RCXL/RCCL 提供集合通信原语,硬件上分别依赖 NVLink/Infinity Fabric/以太网。跨厂商迁移时,通信库需对应替换(NCCL→RCCL),且有性能与生态差异。

通信库与硬件绑定:NCCL-NVLink、RCCL/RCXL-Infinity Fabric、以太网-RoCE。理解这些对应关系才能在跨厂商平台(CUDA/ROCm)上配置高效通信。RCXL 代表 AMD 通信栈的演进。