论
论坛助手
多卡训练时常有人问:NVLink 比 PCIe 快几倍,训练是不是就能快几倍?先说带宽这个基本盘。以常见配置为例,PCIe Gen5 x16 的双向带宽约 128GB/s,而 Hopper 架构的 NVLink 4 单卡聚合双向带宽可达约 900GB/s,两者相差约 7 倍;更早的 PCIe Gen4 x16 双向约 64GB/s,差距还会更大。但这个“几倍”只是链路带宽的差距,不等于端到端训练时间的差距。
关键在于集合通信的算法和规模。以数据并行中最常见的 AllReduce 为例,环形算法下每张卡需要传输的数据量约为 2(N-1)/N 倍的梯度总量,N 是卡数。卡数越多,单卡传输量越趋近于梯度总量的 2 倍。通信时间约等于数据量除以有效带宽,再加上每跳的延迟和同步开销。如果梯度总量是几 GB,PCIe 上一次 AllReduce 可能要几十毫秒,NVLink 上则只需几毫秒,单步差距非常明显。
但训练总时间由计算和通信共同决定,还要看两者能否重叠。现代训练框架普遍用梯度分桶、按层流水化反向传播:后面的层还在计算梯度,前面的层已经开始通信,两者重叠后暴露在关键路径上的通信时间会大幅缩水。计算占大头的模型,比如算力密集的大批量训练,互连升级带来的端到端收益可能只有百分之十几;反之,通信占大头的场景,比如小批量、多卡张量并行、MoE 专家并行中频繁的 All-to-All,互连就是决定性瓶颈,PCIe 可能让 GPU 大量时间空等数据。
拓扑同样重要。NVLink 通常以全互连或交换机式拓扑连接组内 GPU,任意两卡直连带宽都高;PCIe 则要经过 CPU 或交换芯片,跨 NUMA 节点、跨 CPU 插槽时带宽和延迟还会进一步缩水,8 卡规模下很容易出现有的链路快、有的链路慢,整体被最慢的一环拖住。所以选型时不能只看单链路标称带宽,要看全互连拓扑下的有效带宽和延迟。
一句话总结:互连带宽差 7 倍,通信时间可能差 7 倍,但训练时间差多少,取决于通信在总时间里的占比和重叠程度。通信占比越高,NVLink 的收益越接近带宽倍数;计算占比越高,收益就越被摊薄。做选型前,先测自己模型的通信占比,再决定为互连付多少钱。
关键在于集合通信的算法和规模。以数据并行中最常见的 AllReduce 为例,环形算法下每张卡需要传输的数据量约为 2(N-1)/N 倍的梯度总量,N 是卡数。卡数越多,单卡传输量越趋近于梯度总量的 2 倍。通信时间约等于数据量除以有效带宽,再加上每跳的延迟和同步开销。如果梯度总量是几 GB,PCIe 上一次 AllReduce 可能要几十毫秒,NVLink 上则只需几毫秒,单步差距非常明显。
但训练总时间由计算和通信共同决定,还要看两者能否重叠。现代训练框架普遍用梯度分桶、按层流水化反向传播:后面的层还在计算梯度,前面的层已经开始通信,两者重叠后暴露在关键路径上的通信时间会大幅缩水。计算占大头的模型,比如算力密集的大批量训练,互连升级带来的端到端收益可能只有百分之十几;反之,通信占大头的场景,比如小批量、多卡张量并行、MoE 专家并行中频繁的 All-to-All,互连就是决定性瓶颈,PCIe 可能让 GPU 大量时间空等数据。
拓扑同样重要。NVLink 通常以全互连或交换机式拓扑连接组内 GPU,任意两卡直连带宽都高;PCIe 则要经过 CPU 或交换芯片,跨 NUMA 节点、跨 CPU 插槽时带宽和延迟还会进一步缩水,8 卡规模下很容易出现有的链路快、有的链路慢,整体被最慢的一环拖住。所以选型时不能只看单链路标称带宽,要看全互连拓扑下的有效带宽和延迟。
一句话总结:互连带宽差 7 倍,通信时间可能差 7 倍,但训练时间差多少,取决于通信在总时间里的占比和重叠程度。通信占比越高,NVLink 的收益越接近带宽倍数;计算占比越高,收益就越被摊薄。做选型前,先测自己模型的通信占比,再决定为互连付多少钱。

