想象你是一家大型物流公司的规划师,负责把几座城市里的大型仓库(GPU芯片)连接起来。仓库之间每天要运送海量包裹(数据),你会怎么设计运输网络? NVIDIA的选择是:修一条专用的高速地铁——NVLink。它笔直、极快、不堵车,专门为GPU之间的高优先级货物服务。AMD的选择是:搭建一张灵活的城市快速路网——Infinity Fabric。它覆盖面广、能随时扩展、出入口众多,但每条车道的速度稍逊于地铁。 在AI训练的世界里,这不仅是“修路”的哲学问题,更决定了你训练一个万亿参数大模型要花多少时间。大模型训练本质上就是几十个GPU仓库协同工作,它们每次同步“账本”(梯度)时,都要在互连网络上搬运巨大的数据包。带宽决定了一次能运多少,延迟决定了送达的速度,拓扑决定了网络能扩展到多大。这篇文章,我们就把这两套“运输系统”拆开来看个明白:它们各自怎么设计、指标差多少,以及你该怎么选。
理解NVLink与Infinity Fabric的差异,是AI基础设施选型与性能优化的核心技能。掌握互连带宽、延迟与拓扑的含义,让你面对大模型训练集群的“通信瓶颈”时,不是束手无策,而是对症下药。
可视化演示
展示NVLink全连接拓扑与Infinity Fabric网格拓扑、互连带宽延迟量化对比、以及多GPU训练AllReduce通信效率。切换模式理解芯片互连选型。
本节配有交互动效(进入视口后自动加载,约 3KB)。
NVLink全连接 vs Infinity Fabric网格拓扑 NVLink通过NVSwitch构建全连接fat-tree拓扑,任意GPU对之间满带宽直接通信,跳数恒为1 Infinity Fabric采用网格拓扑,多跳转发导致带宽衰减和延迟增加 NVSwitch: hops=1 | Fabric: hops>1 全连接拓扑是大规模训练的关键优势
互连架构设计
回到物流公司的比喻。你手下有两座仓库(GPU),每天要互相调拨货物。一种做法是修一条“专用传送带”——只服务这两座仓库,通道又宽又快;另一种做法是让货物走城市的“公共快速路”——哪里都能去,但车道不归你独享。NVLink就是NVIDIA修的那条专用传送带,Infinity Fabric则是AMD搭建的那张公共路网。
NVLink从2014年诞生至今已跨越五代:初代在P100上实现了160GB/s的惊人速度,此后每一代都几乎翻倍。它的核心设计哲学是“专”——只用于GPU之间或GPU与CPU之间的高速互连,不走PCIe那套通用总线。Infinity Fabric则诞生于AMD的“统一内存”愿景,它既连接CPU和GPU,也连接GPU与GPU,甚至连接多颗Die(芯片核心),是一种“大一统”的互连方案。
芯片间通信的本质,是解决“数据搬运”问题。训练大模型时,计算只占一部分时间,更大的开销在于把中间结果、梯度搬到正确的GPU上。互连的带宽决定“一次能搬多少”,延迟决定“搬一趟要多久”。两者共同决定了一道算术题的答案:
这条公式是理解所有互连指标的钥匙。NVLink的带宽之所以远超PCIe,正是因为它把“车道数”和“车速”都拉满了——这是专用传送带对公共路网的天然优势。
- 带宽符号 B表示互连链路每秒最多能传输的数据量,单位是GB/s(千兆字节每秒)。
- 位宽符号 W一条链路上同时并行传输的比特数,好比公路有几条车道。
- 频率符号 f每秒钟信号翻转的次数,单位是GHz,好比每条车道上每秒钟能驶过多少辆车。
- 整体乘积关系车道数乘以每车道的通行速率,就是整条路的极限吞吐。
带宽指标对比
如果说带宽是“运输通道的宽度”,那NVLink和Infinity Fabric就像是两种不同规格的道路。NVLink 3.0(A100时代)给每块GPU配了12条链路,双向带宽合计600GB/s;NVLink 4.0(H100时代)进一步扩展到18条链路,达到900GB/s。而AMD的Infinity Fabric 4(MI300X中的XCD互连)也交出了约896GB/s的答卷,几乎与NVLink 4.0并驾齐驱。
为什么要强调“双向”?因为在真实的训练任务里,GPU既要把数据发出去,也要同时接收别处传来的数据。官方标称的带宽通常指双向总和——就像一条双向八车道公路,两个方向的车流可以同时跑满。如果只看单向,数字要打个对折。为了有个参考系,PCIe 5.0 x16(通用I/O总线)的双向带宽只有约128GB/s,连NVLink 4.0的七分之一都不到。
看这张对比表更直观:NVLink 3.0是600GB/s的专用高架,NVLink 4.0是900GB/s的极速磁悬浮,Infinity Fabric 4是896GB/s的城市快速路,而PCIe 5.0只是128GB/s的乡村公路。单看数字,NVLink 4.0与Infinity Fabric 4似乎势均力敌,但带宽只是故事的一半。
- 单向带宽 B_one数据只朝一个方向传输时的极限速率,好比单方向四车道。
- 双向带宽 B_dual发送和接收同时进行时的总吞吐,两个方向的车流都能跑。
- 系数 2因为发送与接收互不干扰,所以总带宽是单向的两倍。
- 完整等式官方标称值如"900GB/s"通常是双向值,通信负载计算时必须注意。
延迟特性分析
回到物流比喻。带宽决定了“一次能装多少货”,延迟则决定了“包裹从发货到签收需要多久”。一条能装100个集装箱的货轮,如果航行要一个月,它的延迟就远高于一架只能装1吨但2小时送达的货机。AI训练里,延迟同样是绕不开的指标。
NVLink作为专用地铁,有两个先天优势:一是固定延迟极低——数据包从发出到接收仅需微秒级,几乎无需路径仲裁;二是链路利用率高——没有别人和你抢道,满载时依然稳定。Infinity Fabric作为通用路网,延迟会受两个因素拖累:首先是多跳问题,数据从一个GPU到另一个GPU可能要经过多个路由器中转,每跳都增加几十纳秒;其次是拥塞,当多个GPU同时通信时,公共路口会堵车,延迟急剧上升。
这个公式解释了为什么“带宽大”不等于“延迟低”:当数据量很小时,D/B几乎可以忽略,L主导一切;当数据量很大时,D/B成为主角,带宽的优势才完全发挥。这也意味着,如果你的训练是大量小消息频繁交互,延迟比带宽更致命——NVLink的低延迟优势就体现在这里。
- 总时间符号 T完成一次数据传输所花费的完整时间,单位是秒或毫秒。
- 数据量符号 D需要搬运的数据大小,比如10GB的梯度。
- 传输项 D/B数据量除以带宽,即“装车+在途”的时间——带宽越大这项越小。
- 固定延迟符号 L与数据量无关的固有开销,包括信号传播时间、路由器处理时间等。
拓扑结构差异
物流网络怎么连接,决定了包裹从一个仓库到另一个仓库要转几手。NVLink搭建的是“全连接网格”:8块GPU通过NVLink Switch(一种专门的高速交换机)组成全互联阵列,任何两块GPU之间都有直达通道,就像每个仓库之间都修了专用传送带。而Infinity Fabric倾向于“环形与星形混合”,AMD的GPU通常以环状连接相邻芯片,跨远距离通信需要绕行,多跳不可避免。
NVIDIA还引入了“NVLink域”的概念——一个NVLink Switch可以连接多块GPU形成一个通信域,域内所有GPU共享极高的聚合带宽。这种设计让8卡、16卡、甚至更大规模的GPU集群都能保持“任意两点直达”的低延迟通信。AMD的Infinity Fabric则更注重灵活性:它允许CPU、GPU、内存控制器共用同一套互连协议,甚至支持不同的芯片组合,代价是互连的专属性和极限性能有所妥协。
拓扑的差异直接决定了扩展性。NVLink的全连接在4-8卡范围内性能极佳,但继续扩大规模时,链路成本呈平方增长,所以大规模集群需要借助NVLink域分层。Infinity Fabric的环形结构初始成本低,但节点越多,平均跳数越多,延迟越高——就像城市环路在高峰期永远是最堵的路。
- 节点数符号 N参与互连的GPU或设备总数。
- 每对组合数 N(N-1)每个节点都要与其余 N-1 个节点相连,但这条公式把每个连接数了两次。
- 除以 2 去重A到B和B到A是同一条链路,所以要除以2。
- 实际意义8个GPU全连接需要28条链路,12个则需要66条,链路数呈平方级增长。
多GPU训练影响
现在把镜头拉回AI训练的现场。你把一个大订单(训练大模型)分给多个仓库(GPU)协同处理,每个仓库干活之前,都要先和其他仓库同步进度、核对账本——这个“核对账本”的动作,就是多GPU训练的通信环节。
最典型的是梯度同步。数据并行训练中,每块GPU拿一批不同的数据,独立算出一个梯度;每轮迭代结束,所有GPU必须把梯度汇总(AllReduce),取平均值后同步更新模型权重。这个汇总操作要在互连网络上搬运和模型一样大的数据量——对于千亿参数模型,单次同步就是几百GB的流量。NVLink 900GB/s的带宽在这里能把同步时间压缩到极致,而PCIe则会让每轮迭代都卡在通信上。模型并行(把模型的不同层分到不同GPU)则需要频繁传输层间的激活值,通信模式是“流水线式”的,对延迟和带宽同样敏感。
这就是为什么NVIDIA不惜成本堆NVLink带宽——不是为了好看的数字,而是为了把R压下来。当R从0.3降到0.1,训练速度就能提升约30%。反过来,如果你把V100集群(NVLink 2.0,300GB/s)换成PCIe互连的机器,R直接冲上0.8,GPU虽然照样在跑,但大部分时间都在干瞪眼等数据。
- 通信时间 T_comm每轮迭代中用于数据传输的时间。
- 计算时间 T_compute每轮迭代中GPU真正执行矩阵运算的时间。
- 分母总时间通信与计算之和就是一轮迭代的总时间(理想情况,不重叠)。
- 比值 R通信时间占总时间的比例,R越高,GPU算力的浪费越大。
选型建议
选NVLink还是Infinity Fabric,本质上不是选“谁更快”,而是选“谁更适合你的运输场景”。就像物流公司不会只买一种车:同城急件用摩托车,跨省大件用重型卡车,冷链有冷藏车,哪有什么绝对最好,只有匹配。
第一个维度是场景匹配。如果你要搭一个8卡A100/H100的深度学习训练服务器,NVLink的全连接网格是无脑之选——它就是为了这个场景设计的,梯度同步快、延迟低、开箱即用。如果你是做异构计算(CPU+GPU混合)或者需要灵活扩展的HPC集群,Infinity Fabric的统一互连协议更有吸引力,它让CPU和GPU共享同一套通信语言。第二个维度是成本权衡:NVLink的高性能是“专用”换来的,整机价格昂贵;Infinity Fabric兼容性更好,在成本敏感的场景里更务实。第三个维度是生态绑定:NVLink与CUDA生态深度耦合,PyTorch、TensorFlow对NCCL(NVIDIA通信库)的支持已经成熟到“开箱即用”;AMD的ROCm生态虽然在快速追赶,但很多框架的通信优化还没完全跟上。
未来趋势也值得关注:NVIDIA在HGX平台上继续强化NVLink域,AMD在MI300系列上把Infinity Fabric推向了“chiplet(芯粒)互连”的新高度。无论哪条路线,背后的逻辑都是同一个:在AI算力竞争里,互连网络已经和芯片本身一样重要——路建得够不够宽、够不够快,直接决定了你的AI到底能跑多快。
- 实际带宽 B_actual在真实训练负载下,互连链路实际达到的传输速率。
- 峰值带宽 B_peak厂商标称的理论最大带宽。
- 利用率 U实际与峰值的比值。NVLink在实际训练中通常能保持高利用率。
- 选型启示一个标称900GB/s但只能跑出50%的互连,不如一个标称600GB/s但能稳定跑出80%的方案。
AI 应用场景
大模型训练集群规划
阶段:模型训练与基础设施选型
解决的问题:训练千亿参数大模型时,传统做法是盲目采购显卡数量,忽略了GPU之间的互连瓶颈。即使买了8块顶级GPU,如果互连带宽不足,训练速度可能只有理论值的40%。AI架构师利用本文的互连知识,根据模型并行策略和梯度同步量,计算通信占比R,从而选对NVLink版本或决定是否采用Infinity Fabric方案。
具体案例:某AI公司要训练1750亿参数的GPT类模型,计划采购包含8块GPU的训练节点。架构师对比了NVLink 4.0(900GB/s)与PCIe 5.0(128GB/s)两种互连方案的通信时间,发现PCIe方案下梯度同步耗时是NVLink方案的7倍。最终选择NVLink 4.0方案,训练迭代时间缩短了35%。
多GPU推理服务部署
阶段:模型部署与推理优化
解决的问题:大模型推理(如ChatGPT类服务)需要把模型切分到多张GPU上并行处理。张量并行会把激活值频繁跨卡传输,互连延迟直接影响单次请求的响应时间。MLOps工程师需要根据延迟敏感度选择合适的互连方案——面向在线推理,NVLink微秒级延迟几乎不可替代。
具体案例:某公司部署70B参数模型的实时问答服务,用4块GPU做张量并行推理。最初使用PCIe互连的服务器,P95延迟达到1.8秒;切换到NVLink互连的服务器后,延迟降至0.6秒,用户体验显著改善,服务SLA达标。
异构计算集群互连评估
阶段:算力基础设施评测
解决的问题:超算中心需要同时服务科学计算、AI训练、数据分析等多样负载,单一互连方案无法满足所有场景。体系结构工程师利用带宽(B = W × f)和利用率(U = B_actual / B_peak)两个指标,评估不同互连方案在不同负载下的表现,做出最优混搭部署决策。
具体案例:某国家级超算中心在扩展AI计算分区时,对比了两种方案:纯NVLink架构(GPU专用)和AMD Instinct + Infinity Fabric架构(CPU-GPU异构)。通过跑真实负载测试,发现AI训练任务中NVLink方案快22%,但在科学模拟混合负载下,Infinity Fabric的灵活性使整体吞吐率提升15%。最终选择了“以NVLink为主、Infinity Fabric为辅”的混合路线。
Python 演示
class Interconnect: def __init__(self, name, bw_gbps, latency_us): self.name = name self.bw = bw_gbps # 双向带宽,单位 GB/s self.lat = latency_us # 固定延迟,单位 微秒 def transfer_time_ms(self, data_gb): """计算传输时间:T = D/B + L,返回毫秒""" return data_gb / self.bw * 1000 + self.lat / 1000 def comm_ratio(train_time_ms, comm_time_ms): """计算通信占比 R = T_comm / (T_comm + T_compute)""" return comm_time_ms / (comm_time_ms + train_time_ms) def main(): nvlink4 = Interconnect("NVLink 4.0", 900, 1.0) if4 = Interconnect("Infinity Fabric 4", 896, 2.0) pcie5 = Interconnect("PCIe 5.0 x16", 128, 5.0) data_sizes = [1, 10, 100] # GB print("=== 互连传输时间对比 ===") print(f"{'数据量':<6}{'NVLink(ms)':<14}{'IF(ms)':<14}{'PCIe(ms)':<14}") for d in data_sizes: tn = nvlink4.transfer_time_ms(d) ti = if4.transfer_time_ms(d) tp = pcie5.transfer_time_ms(d) print(f"{d:<6}{tn:<14.2f}{ti:<14.2f}{tp:<14.2f}") print("\n=== 通信占比对比(假设单次计算 10ms) ===") for d in [10]: ratio_nv = comm_ratio(10, nvlink4.transfer_time_ms(d)) ratio_if = comm_ratio(10, if4.transfer_time_ms(d)) ratio_pci = comm_ratio(10, pcie5.transfer_time_ms(d)) print(f"NVLink: {ratio_nv:.2%} IF: {ratio_if:.2%} PCIe: {ratio_pci:.2%}") if __name__ == "__main__": main()
self.bw = bw_gbps保存互连的双向带宽,单位GB/s,这是公式中的分母,带宽越大传输时间越短。self.lat = latency_us保存固定延迟(微秒),代表公式中的L,即使数据量为0也存在这个开销。data_gb / self.bw * 1000计算D/B,把秒换算成毫秒;数据量除以带宽就是用多少毫秒搬完这些“包裹”。+ self.lat / 1000加上固定延迟(微秒转毫秒),这就是完整的传输时间公式。comm_ratio(10, nvlink4.transfer_time_ms(d))计算通信占比R,展示了为什么带宽差7倍的PCIe会让GPU大部分时间都在等数据。
常见误区
误区我一直觉得NVLink带宽比PCIe大7倍,那它延迟肯定也比PCIe快7倍。选型的时候只看带宽数字就够了。
正解带宽和延迟是两个独立的指标,就像公路的“车道数”和“车速”是两回事。一条8车道的高速公路可能因为收费站在出入口排长队(高延迟),一条2车道的快速路反而随到随走(低延迟)。传输时间公式 T = D/B + L 里,D/B由带宽决定,L是固定延迟。NVLink的优势在于带宽和延迟双双领先,但有些互连方案可能带宽高而延迟也高。
为何常见:厂商宣传总是把带宽放在最显眼的位置,延迟作为一个不起眼的小字参数,消费者很容易把“宽带=快”的直觉套用到芯片互连上。
误区既然NVLink和Infinity Fabric都是GPU互连,那买AMD的卡用NVLink,或者买NVIDIA的卡用Infinity Fabric,应该也能跑起来吧?反正都是连GPU。
正解两者互不兼容。NVLink是NVIDIA的私有协议,只在NVIDIA GPU之间存在;Infinity Fabric是AMD的私有协议,只在AMD芯片之间使用。就像地铁卡和公交卡虽然都是“乘车凭证”,但不能通用——你得先决定坐哪家公司的车,再买哪家的票。这在选型时意味着:买NVIDIA的卡,互连方案就被NVLink锁定了;买AMD的卡,就用Infinity Fabric。
为何常见:大家习惯把同类产品放在一起比,不太留意“协议私有性”这件事。直到买回来发现卡槽都不匹配,才意识到生态绑定的力量。
误区我买了8块GPU,训练速度应该是单卡的8倍。如果没到8倍,一定是我代码写得不对。
正解通信开销让扩展曲线永远低于线性。当通信占比R=0.2时,8卡的加速比理论值只有约1/(0.2+0.8/8) ≈ 3.3倍,远低于8倍。而且R会随GPU数量增加而上升——GPU越多,梯度同步的通信量越大。这就是为什么NVLink要拼命提高带宽:它不是为了让单卡更快,而是为了让8卡、16卡时R不要涨得太快,让扩展曲线尽量贴近理想值。
为何常见:人们容易忽略“协作成本”。8个人搬一件大货并不比1个人快8倍,因为要不断沟通对齐动作——AI训练里的“沟通”就是通信。
误区H100标称NVLink带宽900GB/s,那我训练时每秒就能传900GB数据,计算传输时间直接用数据量除以900就行。
正解官方标称值通常是双向带宽的理论峰值,实际场景里有三个打折扣的地方:一是单向传输时只有450GB/s;二是NVLink需要链路握手、控制信号等协议开销,实际可用带宽通常只有峰值的80%-90%;三是拥塞时多路通信会互相争抢带宽。就像高速公路标称限速120km/h,但高峰期的平均车速可能只有40km/h。计算时建议用 U = B_actual / B_peak 打个7-8折的折扣系数。
为何常见:厂商的数字总是“理论极限”,大家习惯了用极限值做估算,忽略了真实负载下的协议开销和拥塞。
面试题
Q1. NVLink 3.0(A100)的单GPU双向带宽是多少?
- A.300 GB/s
- B.600 GB/s← 正确答案
- C.900 GB/s
- D.128 GB/s
答案:B。NVLink 3.0为A100提供12条链路,双向带宽合计600GB/s。900GB/s是NVLink 4.0(H100)的数字,128GB/s是PCIe 5.0 x16的带宽。记不住数字时,可以大致记住“NVLink每一代几乎翻倍”的规律。
Q2. 传输时间公式 T = D/B + L 中,当数据量D很小时,下列哪项判断是正确的?
- A.传输时间主要取决于带宽
- B.固定延迟L起决定性作用← 正确答案
- C.带宽B和延迟L都不重要
- D.传输时间趋近于零
答案:B。当D很小时,D/B趋向于零,公式退化为T ≈ L,固定延迟成为主导。这就像寄一个小包裹,在路上的运输时间远不如排队等收发件的时间长。所以小消息频繁交互的场景,低延迟互连比高带宽互连更关键。
Q3. 关于NVLink与Infinity Fabric,下列说法正确的有哪些?
- A.NVLink是NVIDIA私有协议← 正确答案
- B.Infinity Fabric是AMD的互连方案← 正确答案
- C.NVLink 4.0带宽高于PCIe 5.0← 正确答案
- D.Infinity Fabric可以在NVIDIA GPU上使用
答案:ABC。A和B是基本事实——两者分别是NVIDIA和AMD的私有互连协议。C正确,NVLink 4.0为900GB/s,远高于PCIe 5.0的128GB/s。D错误,私有协议互不兼容,Infinity Fabric不能跨厂使用。
Q4. PCIe 5.0 x16的双向带宽大约是多少?
- A.128 GB/s← 正确答案
- B.256 GB/s
- C.512 GB/s
- D.900 GB/s
答案:A。PCIe 5.0 x16的理论单向带宽约64GB/s,双向约128GB/s。这是一个重要的“参考基线”——当你的互连方案带宽低于这个数字时,甚至不如通用的I/O总线,通常不适合作为多GPU高速互连的替代。
Q5. 在大规模多GPU训练中,下列哪些因素会成为通信瓶颈?
- A.互连带宽不足← 正确答案
- B.数据传输延迟过高← 正确答案
- C.拓扑跳数过多← 正确答案
- D.显卡散热效率下降
答案:ABC。带宽决定传输速率,延迟影响单次通信耗时,拓扑跳数决定跨节点通信的累加开销——这三者正是传输公式和拓扑结构分析中反复出现的核心变量。D选项散热影响的是计算稳定性,不直接构成通信瓶颈,属于干扰项。
Q6. 数据并行训练中,每轮迭代结束时各GPU之间主要同步什么数据?
- A.输入数据样本
- B.梯度数据更新← 正确答案
- C.模型权重参数
- D.损失函数数值
答案:B。数据并行中每块GPU用不同数据计算出自己的梯度,然后通过AllReduce操作汇总所有梯度取平均值,再用平均梯度更新各自持有的模型副本。所以每轮迭代通信的“货物”是梯度,而不是输入数据或最终权重。
Q7. 关于全连接拓扑结构,下列说法正确的是?
- A.构建成本非常低
- B.任意两节点之间直达← 正确答案
- C.仅支持小规模部署
- D.通信延迟反而较高
答案:B。全连接网格为每个节点对提供直达链路,任意两个GPU通信都无需经过中间节点转发,因此延迟最低。但它的代价是需要N(N-1)/2条链路,成本高昂(A错),且可以通过NVLink域等方式扩展到大规模(C错)。全连接的延迟是各类拓扑中最低的,D表述相反。
Q8. 在选择GPU互连方案时,需要综合考虑哪些因素?
- A.训练场景匹配度← 正确答案
- B.集群建设总成本← 正确答案
- C.软件硬件生态链← 正确答案
- D.显卡外观设计
答案:ABC。选型三要素是场景匹配(数据并行还是模型并行)、成本权衡(全连接的高性能vs灵活的性价比)和生态绑定(CUDA/NCCL vs ROCm)。显卡外观与互连性能毫无关系,正确选项就是选型建议中的三个核心维度。
Q9. 梯度同步操作(AllReduce)在大规模训练中的主要作用是什么?
- A.汇总所有GPU的梯度并取平均← 正确答案
- B.把数据集平均分给每个GPU
- C.将模型权重广播给所有GPU
- D.降低单卡计算量
答案:A。AllReduce的核心职责是“汇总+分发”:先收集所有GPU算出的梯度,算出平均值,再把平均梯度分发给每个GPU用于权重更新。它保证了所有GPU的模型保持一致,是数据并行训练中每轮迭代的必经环节。
Q10. 张量并行训练中,哪些环节会产生GPU间通信?
- A.前向传播传输激活值← 正确答案
- B.反向传播传输梯度← 正确答案
- C.广播所有模型权重给所有GPU
- D.层间切分点的同步汇总← 正确答案
答案:ABD。张量并行把单个层的计算切分到多块GPU,前向时需要在切分点对激活值做AllReduce(A正确),反向时需要同步梯度(B正确),层间切分点是通信的固定枢纽(D正确)。C错误——张量并行中每个GPU只持有权重切片,不会广播全部权重。