想象你管理着一座城市快递网络。AI 大模型训练,就像几百分拣站(GPU)合力拆解一个巨大包裹:每个分拣站算一小块,然后反复把结果告诉伙伴。如果站与站之间的路太窄、太堵,哪怕每个站的工人手速再快,整体进度也会被“传纸条”卡住。在这个比喻里,NVLink 就是给两座分拣站之间修的专用高速传送带——点对点、不共享、极快;NVSwitch 则是一座中央转运枢纽——所有分拣站只需一根管道接入枢纽,就能和任意其他站快速互传,不必两两修路。GPU 集群的性能密码,一半在芯片算力,另一半就在这条“互连道路”上。从最早的环形小路,到今天的全互联高速网,再到用 InfiniBand 打通城市与城市,这篇文章带你从零看懂 NVLink 与 NVSwitch 到底是什么、如何演进、以及工程师如何在成本与带宽之间做权衡,把一张张 GPU 织成真正能打仗的算力集群。
对 AI 从业者来说,理解卡间互连是设计大模型训练集群、估算算力成本和诊断训练性能瓶颈的底层能力——这决定了你的集群是“满血输出”还是“望路兴叹”。
目录
可视化演示
演示NVLink点对点连接、NVSwitch全互联拓扑、PCIe vs NVLink带宽对比三大场景,点击步骤切换互连模式。
本节配有交互动效(进入视口后自动加载,约 3KB)。
NVLink点对点互联 GPU间直连高速通道,跳过PCIe瓶颈 每条NVLink带宽远超PCIe 4.0 BW = links × per_link_bw P2P模式下非全联通,需NVSwitch补充
初识NVLink:GPU间的专用快车道
假设你管着一座城市的快递网络,仓库 A 和仓库 B 每天要对账海量包裹。以前走普通马路(PCIe),路窄车多,高峰期堵得水泄不通。于是你给 A、B 之间修了一条专属传送带——不跟别人共享,想传就传。这就是 NVLink 的雏形:GPU 与 GPU 之间的专用快车道。
在 AI 服务器里,一张 GPU 卡就是一个“仓库”,大模型训练时它们要频繁交换中间结果和梯度。PCIe 是通用的“马路”,所有设备共享总线;而 NVLink 是 NVIDIA 私有的点对点直连协议,只服务 GPU 之间,占用独立通道、延迟极低,不会和其他设备抢带宽。
连接 A、B 两仓的传送带到底有多宽?NVLink 采用高速差分信号,每根物理链路可以同时双向收发。H100 单卡集成了 18 条 NVLink 链路,每条单向速率 25GB/s,双向翻倍后,这张卡与外界通信的总带宽达到惊人的 900GB/s——大约是 PCIe 5.0 x16 的 14 倍。
回到快递比喻,这条专用传送带让 A、B 两仓的对账从“堵在路上几小时”变成“几分钟完事”。这就是大模型训练离不开 NVLink 的原因——单卡算得再快,卡间传不动,训练就会在原地空转。
- 链路数 LGPU 上 NVLink 物理通道的条数,H100 集成了 18 条。
- 单链路单向速率 R每条通道一个方向每秒能传输的数据量,NVLink 4.0 为 25GB/s。
- 双向乘 2每根链路可同时收发,所以总带宽要在单向基础上翻倍。
NVSwitch枢纽:全互联的中央交换台
仓库从 2 个变成 8 个之后,你不可能给每两个仓库都修一条专线——算一下就知道要 28 条,占地又费钱。更聪明的做法是建一个中央转运枢纽:每个仓库只接一根管道进来,由枢纽内部负责把包裹转到目标仓库。NVSwitch 扮演的正是这个角色。
NVSwitch 是 NVIDIA 专门设计的 NVLink 交换芯片,内部集成了庞大的交叉开关(crossbar),可以把来自多个 GPU 的 NVLink 信号按需互相转发。GPU 不需要两两直连,只要连到 NVSwitch,就能和域内任意一张 GPU 通信。以 HGX H100 主板为例:8 张 GPU 各通过 18 条 NVLink 接到 4 颗 NVSwitch 芯片上,任意两张 GPU 之间互通都只需“一跳”,既没有中间转发损耗,也不经过 PCIe 的瓶颈。
如果不用交换机,8 张卡两两直连到底要多少根线?这个数字就是高中就学过的组合数。
中央枢纽建好后,8 个仓库之间互传包裹都只需“进枢纽、出枢纽”一步,这就是全互联(all-to-all)的威力。大模型训练里最频繁的“全卡同步梯度”操作,正是依赖这种一跳直达才跑得动。
- 组合数含义8 张卡中任取 2 张配对,每一对都要一条直连线。
- 公式展开组合数等于 N(N-1)/2,8 卡要 28 条两两直连。
- 枢纽改造后每张卡只连交换机,链路数从 28 降为 8,任意通信仍一跳直达。
拓扑结构:道路怎么修
修路有不同修法。最早 NVLink 一代的时候,GPU 像一座小城的环线公交:每站只能连接相邻两站,这就是环形拓扑。要从一站去对角那站,得绕大半个城,既慢又占路。
后来链路变多了:V100 每个 GPU 有 6 条 NVLink,能修成更高维的网格;到了 A100/H100 时代,NVSwitch 把拓扑升级成“星型+全互联”——每个 GPU 到中心只有一跳,但中心内部等效于全连接。除此之外,机房级组网常用胖树(fat-tree):每一层往上带宽逐层加宽,像一棵越往上越粗的树,避免上层成为瓶颈。
不同修路方案的成本和延迟差异很大。环形拓扑只要 N 条线路,但数据平均要绕 N/4 跳;全连接拓扑任何两台都直达,但线路数按组合数暴涨。
“道路怎么修”直接决定了通信延迟。对训练来说,每步迭代都要做一次全局同步,少一跳就是实打实的时间节省,这也是 NVSwitch 全互联能显著加速大模型训练的根本原因。
- 环形链路数N 台设备首尾相接,只需 N 条线。
- 全连接链路数两两相连需要 N(N-1)/2 条线。
- 平均跳数对比8 卡环形平均要绕 2 跳,全连接固定 1 跳。
带宽代际:传动带一代比一代宽
传送带也在不断升级。NVLink 1.0 时代是窄带,P100 总带宽只有 160GB/s;V100 提升到 300GB/s;A100 翻倍到 600GB/s;H100 达到 900GB/s;最新的 B200 直接突破到 1.8TB/s。短短几年,一条“传送带”的宽度翻了十倍以上。
每一代的提升来自两个方向:把单根链路加宽(提升单链路速率),或者增加链路数量。A100 是 12 条 × 25GB/s × 2;H100 是 18 条 × 25GB/s × 2;到了 NVLink 5.0,B200 用 18 条 × 50GB/s × 2 冲上 1.8TB/s。总带宽是“双向同时收发”口径下算出来的。
把相邻两代的总带宽放在一起相除,就能看出这条演进曲线的斜率。
传送带越来越宽的背后,是 AI 模型越来越大——训练千亿参数模型时,每次梯度同步的“包裹”多到惊人,带宽永远不嫌多。这也是为什么每代 GPU 都要把互连带宽同步翻倍。
- 相邻代比值用后一代总带宽除以前一代,V100→A100 得到 2。
- 增速区间A100→H100 得 1.5,H100→B200 得 2,总体落在 1.5~2 倍之间。
- 代际总增长从 V100 到 B200,带宽从 300GB/s 涨到 1800GB/s,扩大了 6 倍。
DGX与HGX:整机装配的智慧
传送带和枢纽修得再好,也得有人把它们组装成标准产品。NVIDIA 提供了两种形态:DGX 是“整机交付”,像买一套精装智能仓——机柜、8 张 GPU、NVSwitch、NVLink、散热全部装好,开箱即用;HGX 则像只卖发动机和底盘给汽车厂,服务器厂商自己配外壳和电源。
DGX H100 是 8 卡一体机:每卡 900GB/s NVLink 接入全互联网络,配合 4 颗 NVSwitch 芯片和工业级散热底座。HGX H100 主板把同样的"8 GPU + NVSwitch"电路做成标准板卡,浪潮、戴尔、超微等厂商把它装进各自的机架,用户因此有了更多选择。
衡量这套系统通信能力有个关键指标:对分带宽(bisection bandwidth)——把 8 卡从中间切成两半,两半之间能同时传输的总带宽。它比“单卡带宽 × 卡数”更真实地反映了全网能跑多快。
整机厂把最复杂的布线做完,用户完全不用关心哪根线连哪儿。正是这种“预制化”思路,让 NVLink/NVSwitch 技术能从实验室走向大规模集群。
- 对半切分8 卡网络从中间切开,分成交替的两组各 4 卡。
- 半侧总带宽每一半的 4 张卡各自都能向另一半跑满 900GB/s。
- 单位换算3600GB/s 折合 3.6TB/s,是衡量交换网络通畅度的核心数字。
组网成本:带宽与钱包的博弈
条条大路通罗马,但修路要花钱。全互联最爽,可每加一张卡,直连线路数按组合数暴涨:8 卡要 28 条,16 卡就要 120 条。NVSwitch 把“线路爆炸”变成“每卡一根 + 交换机芯片”,但交换芯片本身很贵、功耗也不低,于是就有了权衡。
小规模场景(4-8 卡)用 NVSwitch 性价比很高;再往上,几十上百卡需要多颗 NVSwitch 分级互连,或者引入 InfiniBand 做机间扩展;而小模型的推理场景,PCIe 也许就够。工程上还要看实际通信模式:张量并行(TP)要求高带宽低延迟,适合放 NVLink;数据并行(DP)的梯度同步量固定且可流水化,对带宽上限没那么敏感。买什么配置,先回答“我的负载到底怎么通信”。
把两种方案的线路成本写出来,权衡点一目了然。
好的架构师就像精明的城市规划师:不追求每条路都是八车道,而是让最堵的主干道满足峰值,把钱花在刀刃上。
- 全互联成本28 根直连线乘以单根成本,线路越多越贵。
- 交换式成本8 根到枢纽的线,加上 NVSwitch 芯片的成本。
- 规模拐点GPU 超过约 6 张时,交换式的综合成本开始优于全互联。
InfiniBand配合:跨机城际高速
一座城市再大,也装不下全国的包裹。当训练集群要扩展到几十台服务器时,必须靠城际高速把一座座“智能仓”连起来。这张城际网,就是 InfiniBand(简称 IB)。
NVLink/NVSwitch 管的是“服务器内部”(scale-up),InfiniBand 管的是“服务器之间”(scale-out)。两者不是替代关系,而是分工协作:单机内用 NVLink 全互联,机间用 IB 组网,形成分级路由——就像仓库内用传送带,城市之间走高速。
以 DGX H100 为例,每台配有 8 个 400Gbps 的 IB 端口,单向聚合带宽是 400GB/s,比单卡 NVLink 的 900GB/s 少一半多,说明“跨机通信依然是短板”。因此工程师会做通信与计算重叠(如梯度分桶、异步流水),尽量把跨机流量藏到计算后面。
大模型训练就像全国物流:仓库内部用传送带(NVLink),仓库之间靠城际高速(InfiniBand),分级路由、逐层接力,才能支撑起万亿参数的庞然大物。
- 单端口速率NDR InfiniBand 单端口 400Gbps,除以 8 得到 50GB/s。
- 端口聚合一台 DGX H100 配 8 个 IB 端口,单向总出口 400GB/s。
- 与 NVLink 对比400GB/s 不到单卡 NVLink 900GB/s 的一半,跨机仍是瓶颈。
AI 应用场景
大模型训练集群组网设计
阶段:集群基础设施规划(训练前)
解决的问题:传统以太网组网带宽低、延迟高,多卡并行训练时通信成为瓶颈。用 NVLink + NVSwitch 做机内全互联,配 InfiniBand 做机间扩展,把通信延迟压到最低。
具体案例:某团队要建 32 台 DGX H100(共 256 卡)集群训练千亿参数 MoE 模型。机内用 NVSwitch 保证 8 卡一跳直达,机间用 400Gbps InfiniBand 胖树组网,再按专家并行把通信频繁的卡放在同一 NVLink 域内,实测训练吞吐比“全以太网 + PCIe 互连”方案提升约 40%。
分布式训练性能调优
阶段:训练与调优
解决的问题:GPU 利用率低,大量时间花在梯度同步上。通过 NVLink 带宽利用率定位通信热点,再调整并行策略。
具体案例:训练 7B 模型时发现 nvidia-smi 中 NVLink 利用率长期在 90% 以上,而 GPU 算力只用了 60%。工程师把张量并行度从 2 提到 4,让高频通信留在 NVLink 域内,同时用梯度压缩减少跨机 InfiniBand 流量,每步迭代时间缩短了 35%。
算力采购与成本核算
阶段:成本规划
解决的问题:NVLink 和 NVSwitch 价格不菲,是否值得投入。需要按通信负载建模,对比 PCIe、NVLink、InfiniBand 不同组合的性价比。
具体案例:云服务商评估“8 卡 PCIe 机型”与“8 卡 NVLink 机型”:后者整机贵约 30%,但大模型预训练吞吐高出一倍;而对小模型推理场景,PCIe 绰绰有余。最终按业务画像分池采购,把钱花在真正吃带宽的工作负载上。
Python 演示
def avg_hop_ring(n_gpu): # 环形拓扑平均跳数: N 台围成环, 任意两台平均走 N/4 跳 return n_gpu / 4.0 def transfer_time(data_gb, bw_gb_s, hop): # 通信时间 = 数据量 * 跳数 / 每跳带宽 (单位: 秒) return data_gb * hop / bw_gb_s def main(): n_gpu = 8 data_gb = 24.0 # 一次梯度同步的数据量 (GB) bw_ring = 160.0 # NVLink 1.0 环形拓扑每卡总带宽 (GB/s) bw_switch = 900.0 # H100 NVSwitch 全互联每卡总带宽 (GB/s) hop_ring = avg_hop_ring(n_gpu) hop_switch = 1.0 t_ring = transfer_time(data_gb, bw_ring, hop_ring) t_switch = transfer_time(data_gb, bw_switch, hop_switch) print(f"GPU 数量: {n_gpu}, 同步数据量: {data_gb} GB") print(f"环形拓扑 (平均 {hop_ring:.2f} 跳, {bw_ring} GB/s): {t_ring:.4f} 秒") print(f"NVSwitch 全互联 (1 跳, {bw_switch} GB/s): {t_switch:.4f} 秒") print(f"新方案提速: {t_ring / t_switch:.2f} 倍") if __name__ == "__main__": main()
def avg_hop_ring(n_gpu):定义环形拓扑的平均跳数估算函数,把“绕路程度”变成数值。return n_gpu / 4.0环形网络里任意两台平均相距 N/4 跳,8 台就是 2 跳。def transfer_time(data_gb, bw_gb_s, hop):定义通信耗时函数,把数据量、带宽、跳数三者关系表达出来。return data_gb * hop / bw_gb_s时间 = 数据量 × 跳数 ÷ 带宽,跳数越多、带宽越小,耗时越长。bw_ring = 160.0模拟老一代环形拓扑的单卡带宽,只有 160GB/s。bw_switch = 900.0模拟 H100 + NVSwitch 全互联的带宽,900GB/s。hop_switch = 1.0交换拓扑任何两卡一跳直达,跳数为 1。t_switch = transfer_time(data_gb, bw_switch, hop_switch)计算 NVSwitch 方案需要多少秒。print(f"新方案提速: {t_ring / t_switch:.2f} 倍")输出提速倍数,量化拓扑与带宽升级的收益。
常见误区
误区我一直以为 NVLink 是像以太网一样的网络设备,插上网线就能把多台服务器连起来组集群。
正解NVLink 是服务器内部的 GPU 点对点直连链路,物理距离只有几十厘米,协议也是 NVIDIA 私有协议;它不负责跨机器通信。机器之间得靠 InfiniBand 或以太网。好比专用传送带只在仓库内部运转,城市之间的货物还要靠城际高速公路。
为何常见:两者都叫“连接”,加上厂商宣传都在讲“高速互联”,初学者很容易把机内互连和机间网络混为一谈。
误区H100 每卡 900GB/s,8 张卡就是 7200GB/s,整个集群的总带宽听起来巨大无比。
正解900GB/s 是单卡 NVLink 的双向总带宽,指的是“这张卡同时能收发的总和”。多卡并发通信时,交换网络是共享的,不能简单把单卡数字相加。衡量全网能力要看对分带宽——DGX H100 是 3.6TB/s,而不是 7.2TB/s。
为何常见:厂商宣传页只标单卡数字,用户容易用“单卡 × 卡数”做直觉外推,忽略了网络共享特性。
误区多加几颗 NVSwitch,集群带宽就应该成倍增长,性能问题就都能解决。
正解NVSwitch 解决的是“能不能全互联”和端口数量问题,总带宽还受每卡链路数、链路速率和功耗散热限制;而且 NVLink 域有规模上限,跨域必须走网卡与 InfiniBand。更多交换机只提升端口密度,不等于线性提升每张卡的可用带宽。
为何常见:把“更多硬件 = 更快”的直觉用在拓扑工程上,忽略了共享链路和真实瓶颈的位置。
误区PCIe 5.0 x16 双向也有 64GB/s,感觉大模型训练用 PCIe 完全够用。
正解大模型 3D 并行每步要同步 GB 级梯度,PCIe 的 64GB/s 只有 NVLink 900GB/s 的约 1/14;更关键的是 PCIe 是多设备共享总线,8 卡同时通信会互相争抢,而 NVLink 每条链路独享带宽。用 PCIe 做大规模训练,通信一定成为绝对瓶颈。
为何常见:只看规格表峰值,没考虑多卡并发时的共享竞争,也没估算训练的真实通信量。
误区选型时无脑选最高带宽的 NVLink + InfiniBand 组合,预算直接拉满,觉得数字大就稳了。
正解带宽越高成本越高,还要看工作负载的通信模式:小模型或推理可能 PCIe 就够;大模型预训练和 MoE 才需要满血 NVLink + InfiniBand 分级组网。正确做法是先分析通信占比(比如用 profiler 看通信时间比例),再决定把钱花在算力还是网络上。
为何常见:把“性能指标”直接当成“业务收益”,忽略了性价比和实际瓶颈所在的位置。
面试题
Q1. NVLink 的主要定位是什么?
- A.跨数据中心机间互联
- B.服务器内GPU点对点互联← 正确答案
- C.显示器视频输出接口
- D.CPU与硬盘间的存储总线
答案:B。NVLink 是 NVIDIA 私有的 GPU 间点对点高速互联,物理上只存在于服务器内部,不负责跨数据中心,也不连接显示器或硬盘。选择 B 是因为它准确描述了“服务器内 + 点对点直连”两个关键特征。
Q2. NVSwitch 的核心作用是什么?
- A.让多GPU实现全互联交换← 正确答案
- B.提升GPU浮点计算峰值
- C.负责服务器间的数据通信
- D.替代CPU执行通用计算
答案:A。NVSwitch 是一颗 NVLink 交换芯片,让多张 GPU 经它实现全互联,任意两卡一跳直达。它不参与计算,也不负责跨服务器通信(那是 InfiniBand 的职责),因此选 A。
Q3. H100 SXM 的 NVLink 双向总带宽约为多少?
- A.300GB/s
- B.600GB/s
- C.900GB/s← 正确答案
- D.1.8TB/s
答案:C。H100 有 18 条 NVLink 链路,每条单向 25GB/s,双向翻倍后为 900GB/s。300GB/s 是 V100,600GB/s 是 A100,1.8TB/s 是 B200 的 NVLink 5.0 带宽,注意区分代际数字。
Q4. 8 张 GPU 若不用 NVSwitch,实现两两全互联需要多少条直连线?
- A.需要 8 条直连线
- B.需要 16 条直连线
- C.需要 28 条直连线← 正确答案
- D.需要 64 条直连线
答案:C。两两直连数等于组合数 C(8,2) = 8×7/2 = 28。8 条只是环形拓扑的连线数,16 条和 64 条都不是组合数结果。这正是 NVSwitch 能把“28 条线”压缩成“8 根管道”的原因。
Q5. 下列哪项不属于 NVLink 带来的优势?
- A.相比PCIe带宽更高
- B.卡间低延迟直接通信
- C.取代InfiniBand跨机互联← 正确答案
- D.为并行训练提供高吞吐
答案:C。NVLink 的优势集中在服务器内部的高带宽与低延迟,它无法跨机器传输,跨机互联要靠 InfiniBand 或以太网。因此“取代 InfiniBand 跨机互联”不是 NVLink 的能力,属于常见误解。
Q6. DGX H100 的 NVLink 对分带宽约为多少?
- A.900GB/s
- B.1.8TB/s
- C.3.6TB/s← 正确答案
- D.7.2TB/s
答案:C。对分带宽 = 把 8 卡对半分后,两半之间能同时传输的总带宽 = 4 × 900GB/s = 3600GB/s = 3.6TB/s。900GB/s 是单卡带宽,7.2TB/s 是把单卡数字简单相加的错误算法,3.6TB/s 才是衡量全网能力的正确指标。
Q7. 大模型分布式训练中,GPU 间的“卡间通信”主要是为了什么?
- A.同步梯度更新模型← 正确答案
- B.渲染画面给用户看
- C.保存训练的日志文件
- D.加密传输用户数据
答案:A。并行训练中每步前向反向后,各卡要把梯度汇总并广播,这就是卡间通信的核心目的。渲染、日志、加密都与模型训练梯度同步无关。可以把梯度同步理解成“快递站每天早晨的批量对账”。
Q8. 相比 PCIe,NVLink 的优势包括哪些?
- A.单卡带宽更高← 正确答案
- B.通信延迟更低← 正确答案
- C.支持跨服务器组网
- D.多卡直连不共享带宽← 正确答案
答案:ABD。NVLink 是专用点对点链路,带宽高于 PCIe、延迟更低、且每对通信独享带宽,不会像 PCIe 那样多卡争抢共享总线。但 NVLink 仅限服务器内部,不支持跨服务器组网,所以 C 不选。
Q9. 关于 InfiniBand 与 NVLink 的配合,下列说法正确的是?
- A.NVLink负责服务器内互联← 正确答案
- B.InfiniBand负责服务器间互联← 正确答案
- C.两者互相替代完全对立
- D.分级组网可扩展集群← 正确答案
答案:ABD。标准做法是 NVLink + NVSwitch 做机内 scale-up,InfiniBand 做机间 scale-out,二者分工而非对立。分级组网(机内全互联 + 机间高速网)正是大规模训练集群的通用架构,因此 C 错误。
Q10. 设计 NVLink 集群时,需要权衡哪些因素?
- A.交换机芯片的成本← 正确答案
- B.每张卡上的链路数← 正确答案
- C.显卡外壳的颜色
- D.实际训练的通信模式← 正确答案
答案:ABD。组网成本取决于交换芯片价格与每卡链路数,性能收益取决于实际通信模式(如张量并行吃带宽、数据并行可流水化)。外壳颜色与性能无关。好的方案是在带宽、成本与负载之间找平衡点,而不是盲目堆配置。