硬件

NVLink 与 PCIe 对比:带宽、拓扑,以及何时真正重要

NVLink 为每张 GPU 提供的带宽是 PCIe 插槽的数倍,但很多涉及多张 GPU 的工作根本用不上它。本文给出具体数字、依赖互联的工作负载,以及如何查看您的服务器用的是哪种互联。

阅读约 7 分钟

NVLink 与 PCIe 的区别,说到底是 GPU 之间交换数据的速度问题。PCIe 是把 GPU 连接到服务器其余部分的通用总线。NVLink 则是 NVIDIA 专为 GPU 间通信设计的链路,每张 GPU 的带宽约为 PCIe Gen5 x16 插槽的 7 到 14 倍。您是否需要它,取决于 GPU 之间的通信量有多大:对张量并行和大规模训练而言,它起决定性作用;对单卡任务和数据并行推理服务而言,它几乎无关紧要。下面给出具体数字,以及分属两边的工作负载。

先说一个陷阱:PCIe 的数字通常按单向给出,而 NVIDIA 给出的 NVLink 数字是双向合计。比较时要统一口径。表中 PCIe 和 NVLink 的数字按每张 GPU 计,网络链路按每块网卡计。

链路双向合计单向见于
PCIe Gen4 x16≈ 64 GB/s≈ 32 GB/sL40S
PCIe Gen5 x16≈ 128 GB/s≈ 64 GB/sRTX PRO 6000、RTX 5090
NVLink 4900 GB/s450 GB/sHGX 基板上的 H100 和 H200
NVLink 51.8 TB/s900 GB/sHGX 基板上的 B200 和 B300;GB300 NVL72
400G 网卡≈ 100 GB/s50 GB/s服务器之间
800G 网卡≈ 200 GB/s100 GB/s服务器之间

因此,NVLink 4 为每张 GPU 提供的带宽约为 PCIe Gen5 x16 插槽的 7 倍,NVLink 5 约为 14 倍。PCIe 的数字依据 PCIe 规范推算(Gen5 每通道 32 GT/s,Gen4 每通道 16 GT/s,已扣除编码开销),均为峰值;实际传输速率会略低一些。NVLink 的数字来自 NVIDIA。

NVSwitch、HGX 基板与 NVL72 机架

每张 GPU 的带宽只是问题的一半。另一半是拓扑,也就是哪张 GPU 能以全速访问哪些其他 GPU。

  • PCIe 服务器。GPU 挂在 CPU 根端口或 PCIe 交换芯片上。GPU 之间的流量要经过这些交换芯片;跨 CPU 插槽时,还要经过 CPU 之间的链路。此外,这些流量可能与网卡和 NVMe 硬盘共享带宽。
  • HGX 基板。8 张 SXM GPU 位于同一块基板上,由 NVSwitch 芯片以完整的 NVLink 带宽把每张 GPU 与其余每张 GPU 连接起来。全部 8 张 GPU 可以同时以任意模式交换数据,这正是集合通信所需要的。
  • NVL72 机架。GB300 NVL72 把 NVLink 域从 8 张 GPU 扩展到整个液冷机架中的 72 张 GPU;根据 NVIDIA 的数据,NVLink 总带宽为 130 TB/s。跨全部 72 张 GPU 的集合通信完全不经过网络。
  • AMD MI355X。AMD 的 8 卡平台采用了第三种方案:不用交换芯片,而是每张 GPU 配备 7 条 Infinity Fabric 链路,分别连向其余 7 张 GPU;根据 AMD 的数据,每条链路的带宽为 153.6 GB/s。

什么时候互联至关重要

以下三种模式会让 GPU 间带宽成为瓶颈。

张量并行

张量并行把每一层都切分到多张 GPU 上,在标准方案中,每次前向传播的每个 Transformer 层都需要两次 all-reduce 操作。以一个 70B 级模型(80 层,隐藏维度 8,192)为例:用张量并行部署在 8 张 GPU 上,以 BF16 处理一个 8K token 的提示词。每次 all-reduce 涉及 8,192 个 token × 8,192 个值 × 2 字节 = 128 MiB。按标准的环形算法估算,每次 all-reduce 中每张 GPU 要发送其中的 2 × 7/8,共 160 次:一次预填充(prefill)下来,每张 GPU 约传输 37.6 GB。按理想的单向带宽计算:

链路单向带宽传输 37.6 GB 的理想耗时
PCIe Gen5 x1664 GB/s≈ 0.59 s
NVLink 4450 GB/s≈ 0.08 s
NVLink 5900 GB/s≈ 0.04 s

这些都是下限,没有计入延迟,也没有考虑与计算的重叠,但关键在于比值。在解码(decode)阶段,消息非常小,因此起主导作用的是延迟而不是带宽;在 PCIe 上,每个解码步骤 160 次小规模 all-reduce 累积起来,开销也相当可观。

训练中的大规模 all-reduce

数据并行训练在每一步都要同步梯度。7B 模型的 BF16 梯度约为 14 GB,在 8 张 GPU 上做一次环形 all-reduce,每张 GPU 约传输 24.5 GB:按 PCIe Gen5 的单向速率约需 0.38 s,而在 NVLink 4 上约为 0.05 s,而且每一步都是如此。框架会让通信与反向传播重叠进行,因此只有当通信时间超过计算时间时才会造成影响;但 FSDP 和 ZeRO-3 等分片方法还要额外执行参数 all-gather,进一步增加通信量。

混合专家模型的 all-to-all

在专家并行中,每个 token 的隐藏状态要发送到存放其所选专家的 GPU 上,再传回来:每个 MoE 层需要两次 all-to-all 交换。all-to-all 会同时占用每一对 GPU 之间的链路,这恰恰是交换式 NVLink 互联擅长、而 PCIe 树形结构不擅长处理的。

工作负载GPU 间流量对互联的敏感度
张量并行每一步、每一层两次 all-reduce高
全分片训练(FSDP、ZeRO-3)逐层执行参数 all-gather 和梯度 reduce-scatter高
专家并行(MoE)每个 MoE 层两次 all-to-all 交换高
数据并行训练每一步一次梯度 all-reduce,与计算重叠进行中;大模型为高
流水线并行在各阶段边界传递激活值低到中
数据并行推理,每张 GPU 一个模型副本无无
单卡任务、渲染、批处理无无

什么时候 PCIe 就够用

  • 对单卡装得下的模型做数据并行推理。每张 GPU 运行自己的模型副本,由负载均衡器分发请求。GPU 之间从不交换张量,因此无论用什么连接,吞吐量都会随副本数量增长。我们的大语言模型推理最佳 GPU 选型指南列出了哪些模型单卡就能装下。
  • 单卡工作。对单卡装得下的模型做 LoRA 微调、图像和视频生成、渲染、嵌入向量计算,以及大部分开发工作。
  • 流水线并行。当一个模型确实需要多张 GPU 时,按层切分只需在每个边界传递激活值:同样是在 70B 级模型上处理 8K token 的提示词,每个边界约 134 MB,按 PCIe Gen5 的速度约需 2 ms,而张量并行下每张 GPU 要传输 37.6 GB。代价是延迟,因为对每个请求而言,各个阶段是依次执行的。
  • 易并行任务。批量推理、超参数搜索和渲染农场都能干净利落地拆分到多张 GPU 上。

无论是 HGX 服务器还是 PCIe 服务器,GPU 都要通过 PCIe 与主机通信,以加载数据和权重,因此主机侧的 PCIe 在任何服务器上都很重要。NVLink 从总线上移走的,是 GPU 之间的流量。

两类 8 卡服务器我们都出租,而互联方式正是它们之间的一大区别。

服务器GPU 间互联显存网络月价
HGX H100NVLink 4,每张 GPU 900 GB/s8 × 80 GB8 × 400G ConnectX-7US$16,900
HGX H200NVLink 4,每张 GPU 900 GB/s8 × 141 GB8 × 400G ConnectX-7US$23,900
HGX B200NVLink 5,每张 GPU 1.8 TB/s8 × 180 GB8 × 400G ConnectX-7US$34,900
HGX B300NVLink 5,每张 GPU 1.8 TB/s8 × 288 GB8 × 800G ConnectX-8US$39,900
8× MI355XInfinity Fabric 全互联,7 × 153.6 GB/s8 × 288 GB8 × 400G RoCEUS$19,900
8× RTX PRO 6000PCIe Gen5,无 NVLink8 × 96 GB2 × 100 GbEUS$10,490

RTX PRO 6000 服务器是我们产品目录中价格最低的 8 卡服务器,配备 768 GB 显存;对于合适的工作负载,没有 NVLink 不会带来任何损失。它适合:

  • 运行 8 个相互独立的模型副本(模型需能装入 96 GB),例如每张卡运行一个 FP8 精度的 70B 模型。
  • 渲染、图像和视频生成,以及其他按 GPU 独立进行的工作。
  • 以流水线并行方式为单卡装不下的模型提供推理服务。

如果您依赖大规模张量并行、要训练必须跨 GPU 分片的模型、运行专家并行的 MoE 模型,或者计划进行多节点训练,请改选 HGX 服务器:HGX 服务器配备 8 块 400G 或 800G 网卡,而这台 PCIe 服务器只有 2 个 100 GbE 端口。我们的 RTX PRO 6000 与 H100 对比从单卡的角度分析了同一个选择。

跨服务器:InfiniBand 与 RoCE

除 NVL72 机架外,NVLink 止步于服务器边界。在服务器之间,GPU 通过网卡使用 RDMA 通信,底层可以是 InfiniBand,也可以是采用 RoCE(RDMA over Converged Ethernet,融合以太网上的 RDMA)的以太网。一块 400G 网卡的单向带宽为 50 GB/s,因此即使每张 GPU 配备一块网卡,GPU 与另一台服务器通信时,也只能获得其 NVLink 4 带宽的约九分之一。

这一差距决定了多节点训练的标准布局:把张量并行限制在服务器内部,也就是 NVLink 所在的地方;跨服务器则采用流水线并行和数据并行。NCCL(AMD 平台上为 RCCL)会自动选择传输方式:节点内走 NVLink,节点之间走网络。设置 NCCL_DEBUG=INFO 可以查看它选择了什么;当服务器有多个网络接口时,可以用 NCCL_IB_HCA 和 NCCL_SOCKET_IFNAME 来引导它。您的服务器之间的私有网络可应要求开通,我们的多 GPU 与 NCCL 指南详细介绍了相关配置。

如何查看 GPU 之间的互联方式

不要轻信规格表。在 NVIDIA 服务器上,三条命令就能告诉您实际拿到的是什么:

# Connection matrix: NV# means NVLink; PIX, PXB, PHB, NODE and SYS are
# paths of increasing distance through PCIe switches, host bridges and CPUs
nvidia-smi topo -m

# State and speed of each NVLink link (HGX servers)
nvidia-smi nvlink --status

# Measured all-reduce bandwidth across all eight GPUs, from NVIDIA's nccl-tests
./build/all_reduce_perf -b 8M -e 4G -f 2 -g 8

在 all-reduce 的输出中,“busbw”一列经过归一化,可以直接与链路带宽比较,因此能直观地看出您得到的是 NVLink 级还是 PCIe 级的性能。在 MI355X 服务器上,rccl-tests 提供同样的基准测试。请在交付时运行一次,之后每当性能看起来不对劲时再运行一次:在这里发现性能下降的链路,比在训练日志里容易得多。

常见问题

NVLink 比 PCIe 快吗?

是的,而且快得多。根据 NVIDIA 公布的数据,H100 和 H200 上的 NVLink 4 每张 GPU 为 900 GB/s,B200 和 B300 上的 NVLink 5 为 1.8 TB/s;而一个 PCIe Gen5 x16 插槽的双向合计带宽约为 128 GB/s。

LLM 推理需要 NVLink 吗?

只有当模型必须通过张量并行拆分到多张 GPU 上时才需要。如果模型单卡就能装下,每张 GPU 运行一个副本,GPU 之间不会产生流量,PCIe 就足够了。

RTX PRO 6000 支持 NVLink 吗?

不支持。RTX PRO 6000 Blackwell Server Edition 通过 PCIe Gen5 连接,没有 NVLink,因此我们的 8× RTX PRO 6000 服务器更适合相互独立的副本、渲染和流水线并行推理服务,而不是高强度的张量并行。

NVSwitch 是什么?

NVSwitch 是 NVIDIA HGX 基板上的交换芯片,它以完整的 NVLink 带宽把全部 8 张 GPU 两两互联,使每一对 GPU 都能同时通信。NVL72 机架把同样的思路扩展到由 72 张 GPU 组成的 NVLink 域。

服务器之间没有 NVLink,也能跨多台服务器训练吗?

可以。NVLink 连接的是一台服务器或一个 NVL72 机架内部的 GPU,服务器之间的流量则通过 InfiniBand 或 RoCE 网卡传输。请把张量并行限制在服务器内部,跨服务器则采用数据并行或流水线并行。

独享 GPU,按月计费

整卡 GPU US$449/月起,含 root 权限和流量,支持加密货币支付。

查看 GPU 与价格 用显存计算器估算所需 GPU

部署 GPU 服务器

本月即可用上您的 GPU 服务器。

选择配置,在同一表单中创建账户,并用余额支付首月费用。承诺交付日期会在您付款前显示,未能按期交付即全额退款。

  • 付款前显示承诺交付日期
  • 任何月份均可取消
  • 加密货币支付,最高加赠 50%

登录 FullGPU

管理您的 GPU 服务器、余额和账单。

首次使用 FullGPU? 创建账户