多网卡不是「插满就行」——GPU-NIC 对等映射、NUMA 亲和与多轨独立才是正解
上一篇讲清了 RoCE 网络的「道路」——无损以太网与组网拓扑;这一篇讲「车道」——一台服务器里的多张网卡如何组队,把通信带宽榨干。
一台 8 卡 GPU 服务器的网络出口是它的生死线:单张 400G 网卡看似很宽,但对 8 卡聚合通信需求来说远远不够。于是主流方案是每 GPU 对应一张网卡,一台 8 卡机插满 8×400G 网卡,单机网络带宽 3.2Tbps(腾讯星脉同款配置)。
但多网卡绝不是「插上去就完事」,三个容易被忽略的事实:
搞对之后的效果也很直接:Mooncake Transfer Engine 借助多网卡聚合(最高 8×400Gbps),在 RoCE 网络下实测 KV Cache 传输速度达 190GB/s,驱动了 Kimi K2(1T 参数)在 128 张 H200 上的 PD 分离部署。
数据并行的梯度同步时间可以近似为:通信时间 ≈ 数据量 / 有效带宽。8 张卡做一次 AllReduce,每个 step 要搬运的梯度数据动辄 GB 级;模型越大、卡越多,单次同步的数据量越大。
单张 400G 网卡的理论带宽约 50GB/s(单向),扣掉协议开销后更少。当 8 卡聚合通信需求达到数百 GB/s 量级时,单网卡直接成为全机瓶颈——通信占比冲上 40%(训练 profiling 的典型案例)也就不奇怪了。
PD 分离场景更夸张:一次长上下文的 KV Cache 搬运就是几 GB 到几十 GB,还要满足「不拖慢 TTFT」的低延迟要求。单网卡既吃不下带宽,也扛不住突发。
结论很朴素:网卡数量要和 GPU 数量对齐,1 GPU : 1 NIC 是对等设计的基准线。
多网卡方案的第一步,是看懂 8 卡服务器的内部骨架(以 DGX/HGX 基板为例):
| 组件 | 作用 |
|---|---|
| GPU ×8 | 算力主体,两两之间通过 NVSwitch 全互联 |
| NVSwitch | NVLink 交换芯片(A100 时代 6 颗、H100 时代 4 颗),实现 GPU 间高速全互联 |
| PCIe Switch | GPU 与 CPU、NVMe、网卡之间的通用连接通道 |
| 双路 CPU(两侧 NUMA) | 通用计算与调度,各自管理一半 PCIe 资源 |
| NIC ×8 | 对外 RDMA 出口,理想情况每 GPU 对一张 |
一句话总结:多网卡不是「插得满」,而是「插得对」——每张网卡必须站在自己 GPU 的 PCIe 根与 NUMA 域内。
| 方案 | 做法 | 适用场景 | 评价 |
|---|---|---|---|
| ① LACP 链路聚合(bonding) | 多张网卡绑定为一个逻辑口,交换机侧聚合 | 通用业务、主备冗余 | 不适合 RDMA 集合通信:哈希极化、单流无法叠加带宽 |
| ② 多轨独立(multi-rail) | 每 NIC 独立 IP、各自挂一个 Rail,上层库按对分配 | GPU 集群主流 | 带宽线性叠加、路径隔离、故障影响面小 |
| ③ 端到端多路径 | NCCL channel 分配 + PXN 转发 + Transfer Engine 多网卡池化 | 训练与推理全场景 | 把多网卡优势发挥到极致 |
LACP 的本质是「把多条链路伪装成一条」,靠哈希把不同流摊到不同成员口。但 AllReduce/KV Cache 大块传输往往是数量少、单流极大的流型:一条流只会被哈希到一张网卡上,永远吃不到第二张卡的带宽。加上哈希不均带来的极化问题,bonding 在 RDMA 集合通信里是典型的「负优化」。
正确姿势:每张网卡独立 IP、独立路由表项,让上层通信库(NCCL / Transfer Engine)显式地把不同的通信对分配到不同的网卡上。
实践中最常见的坑:8 张网卡都通了,跑 AllReduce 却只跑满一两张。排查顺序应该是 Rail、HCA、拓扑三对齐:
NCCL_IB_HCA 显式指定参与通信的网卡列表,防止 NCCL 误选NCCL 内部把通信拆成多个 channel,不同 GPU 对之间的流量分配到不同 NIC 上。拓扑对齐后,每张网卡各司其职,总带宽随网卡数量线性增长。
跨 NUMA 是 NCCL 多网卡场景的头号性能杀手。PXN 机制的核心思路:数据先通过 NVSwitch 全互联转发到目标网卡同轨的 GPU,再从那张 GPU 对应的网卡出去。全程 GPU 直连转发,规避 CPU 内存拷贝与跨 NUMA 的 QPI/UPI 转发瓶颈,最大化每张网卡的满带宽利用率。
8 张网卡意味着 8 个独立网络出口。为避免回包走错出口导致通信失败,服务器需要配置 Linux 多路由表 + 策略路由:按源 IP/网卡把流量锁定在各自 Rail 平面内——这与传统云网的配置方式完全不同,是智算网络运维的基本功。
训练看 NCCL,推理看传输引擎。PD 分离的 KV Cache 搬运是推理网络最大的流量,Mooncake Transfer Engine 把多网卡用到了极致:
| 能力 | 说明 |
|---|---|
| 多网卡聚合 | 最高聚合 8×400Gbps,RoCE 网络下实测传输速度 190GB/s |
| 拓扑自动发现 | 初始化时探测 CPU/CUDA/RDMA 设备拓扑,自动安装合适的 Transport |
| 全链路零拷贝 | GPUDirect RDMA 直传 DRAM/VRAM,CPU 开销可忽略 |
| 多网卡池化 | 单机多 RDMA 网卡统一池化管理,带宽充分打满 |
| 路径容错 | 单张 RDMA 网卡故障时自动识别替代路径,请求重提交到其他网卡 |
真实案例:MooncakeConnector 基于 Transfer Engine 的多网卡 RDMA 聚合带宽,驱动了 Kimi K2(1T 参数)在 128 张 H200 上的 PD 分离部署——这是多网卡方案在超大规模推理上的实战背书。
| 阶段 | 网卡速率 | 单机 8 卡带宽 | 关键点 |
|---|---|---|---|
| 当前主流 | 400G | 3.2Tbps | 星脉同款配置,推理/训练通用 |
| 正在上量 | 800G | 6.4Tbps | 需 PCIe 5.0 更宽通道,Spectrum-X/Quantum-X 支持 |
| 下一跳 | 1.6T | 12.8Tbps | 液冷 + 更高密度端口 |
演进的核心约束始终是那句老话:网卡带宽、PCIe 带宽、交换机端口速率三者必须同步升级,任何一环掉队都会卡住整机通信。
NCCL_IB_HCA 锁定网卡列表,杜绝「插满跑不满」多网卡架构的真相是:带宽是物理的,利用率是设计的。插满 8 张 400G 网卡只是开始,把 3.2Tbps 的每一分带宽都变成通信能力,靠的是拓扑对齐、NUMA 亲和、多轨独立与 PXN 这一整套组合拳——差一步,钱就白花了。
多网卡的隐性成本极高:PCIe 根规划、NUMA 亲和、策略路由、HCA 对齐、逐卡调优,每一项都是资深 Infra 工程师的活。对绝大多数应用团队来说,自己攒 8×400G 的推理节点既不经济也不必要。向量云(向量云南京科技有限公司)依托字节跳动火山方舟官方授权,把「多网卡 + RoCE 网络 + GPU 算力 + 调度」全部打包成开箱即用的推理服务:
| 向量云能力 | 说明 |
|---|---|
| 官方授权接入 | 火山方舟官方授权,提供官方 API 与官方 Key |
| 低折扣 Token | 专属折扣价,用量越大越划算 |
| 独享接入点 | 独立接入点,配额与稳定性更有保障 |
| 缓存隔离降本 | 缓存隔离机制,把缓存命中红利吃到最大 |
| 计费灵活 | 按量计费、即用即扣、不设账期,注册充值 10 元起 |
| 协议兼容 | OpenAI 兼容协议,业务代码几乎零改动 |
接入方式:注册后获取官方 API Key,把 base_url 指向向量云接入点即可直接调用火山方舟官方模型——网卡拓扑的复杂性交给平台,稳定性和成本优势留给你的业务。
获取 API Key:https://ark.tokenrize.cn/ · 火山方舟官方 API 与 Key 直连,注册即用
一句话总结:多网卡的价值不在「插满」,而在「对齐」——拓扑对齐、NUMA 对齐、Rail 对齐三件套齐了,3.2T 才是真的 3.2T;不想费这个劲,就用向量云把带宽焦虑彻底外包。
面向大模型应用落地的技术服务型企业,依托字节跳动火山方舟能力,为合作方提供低折扣模型 Token、可独立部署的运营支撑平台及全链路运营支持。
火山方舟官方 API 与官方 Key 直连 · 向量云 · 大模型部署降本
A. 因为单张 400G 网卡撑不住 8 卡的聚合通信需求。数据并行 AllReduce 的通信时间 ≈ 数据量 / 有效带宽,8 卡每个 step 搬运的梯度数据动辄 GB 级;单张 400G 网卡约 50GB/s(单向),会成为全机瓶颈——典型案例中通信占比可冲上 40%。PD 分离的 KV Cache 搬运同理(几 GB 到几十 GB 的大块突发)。因此主流方案是每 GPU 对应一张网卡(1 GPU : 1 NIC),8×400G 合计 3.2Tbps(腾讯星脉同款配置)。
A. 8 卡服务器的 GPU 与网卡通过 PCIe 根复杂度(Root Complex)挂在双路 CPU 两侧。如果 GPU 与它通信的网卡不在同一 PCIe 根 / 同一 NUMA 域,数据就要跨 CPU 走 QPI/UPI 转发,带宽打折、延迟上升,网卡等于白插。此外插槽带宽也要匹配:400G 网卡通常需要 PCIe 5.0 x16,插到低带宽槽位,超出部分全是浪费。所以「插得满」不如「插得对」。
A. 大模型场景普遍放弃 bonding(LACP 链路聚合)。LACP 靠哈希把不同流摊到不同成员口,而 AllReduce/KV Cache 大块传输是「数量少、单流极大」的流型:一条流只会被哈希到一张网卡,永远吃不到第二张卡的带宽,还有哈希极化风险。正确姿势是多轨独立(multi-rail):每张网卡独立 IP、各自挂一个 Rail,由 NCCL / Transfer Engine 显式把不同通信对分配到不同网卡,带宽线性叠加、故障影响面小。
A. 不会。NCCL 不会自动聚合多网卡,需要 Rail、HCA、拓扑三对齐:同卡号 GPU 的网卡接同组交换机(Rail 对齐)、用 NCCL_IB_HCA 显式指定网卡列表(HCA 对齐)、确认 NCCL 感知的 GPU-NIC 邻接关系与实际布线一致(拓扑对齐)。对齐后 NCCL 按 channel 把不同 GPU 对的流量分配到不同网卡。PXN(PCI×NVLink)则是规避跨 NUMA 的转发优化:数据先经 NVSwitch 全互联转发到目标网卡同轨的 GPU,再从对应网卡出去,全程 GPU 直连、不经过 CPU 内存拷贝,最大化每张网卡的满带宽利用率。
A. 8 张网卡 = 8 个独立网络出口,各自位于自己的轨道(Rail)平面。如果不做出口规划,回包可能走错网卡导致通信失败。因此智算服务器需要配置 Linux 多路由表 + 策略路由,按源 IP/网卡把流量锁定在各自 Rail 平面内。这与传统云网的配置方式完全不同——DeepSeek 私有化部署的公开经验就特别强调这一点。
A. 训练看 NCCL,推理看传输引擎。Mooncake Transfer Engine 提供多网卡聚合能力:最高聚合 8×400Gbps,RoCE 网络下实测 KV Cache 传输速度达 190GB/s;初始化时自动探测 CPU/CUDA/RDMA 拓扑并安装合适 Transport;GPUDirect RDMA 全链路零拷贝;单张网卡故障时自动切换到其他 RDMA 网卡。实战背书:MooncakeConnector 基于多网卡 RDMA 聚合带宽,驱动了 Kimi K2(1T 参数)在 128 张 H200 上的 PD 分离部署。
A. 八条要点:① 1 GPU : 1 NIC 对等映射;② NUMA 与 PCIe 根亲和,杜绝跨 CPU 转发;③ 400G 网卡用足 PCIe 5.0 x16 插槽;④ 放弃 bonding 走多轨独立;⑤ Rail 对齐 + NCCL_IB_HCA 显式指定;⑥ 策略路由锁定各自 Rail 平面;⑦ 开启 PXN 转发优化;⑧ 逐网卡监控 + 容错切换。带宽演进路径为 400G(3.2T)→800G(6.4T)→1.6T(12.8T)。不想自建的团队可选用向量云:火山方舟官方授权、官方 API 与官方 Key、低折扣 Token、独享接入点、缓存隔离降本、按量计费即用即扣,注册充值 10 元起,OpenAI 兼容协议几乎零改动。获取 API Key:https://ark.tokenrize.cn/