2026 年 7 月 27 日,Kimi K3 正式开放完整模型权重。
这是近期大模型领域最值得关注的事件之一。
K3 拥有 2.8T 总参数、约 104B 激活参数、896 个路由专家,每个 Token 选择其中 16 个专家,同时支持最高 100 万 Token 上下文。按照官方公布的评测结果,它已经进入全球最强模型的第一梯队,也因此被很多人直接称为“世界第三的大模型”。
但比“世界第三”更有冲击力的,是另一件事:
这样一个第一梯队模型的完整权重,真的被放出来了。
很多开发者看到这里,第一反应是:
权重开放 = 可以下载 = 可以私有部署 = 终于不用调用闭源 API然而,AMD 随后公布的 Day-0 部署方案,却给这种兴奋泼了一盆冷水。
K3 当前公开验证过的最低整机配置之一,是:
8 张 AMD Instinct MI355X 每张 288GiB HBM3E 总 HBM 超过 2TB TP8 张量并行即便如此,AMD 也明确说明:
这次验证的目标不是追求峰值性能,而是确认模型权重为什么能装进去、如何在 8 张 GPU 之间分配,以及能否完成最小正确性测试。
换句话说,这套配置证明的是:
K3 能加载 K3 能生成 K3 能完成正确性验证但它没有证明:
K3 的首字延迟是多少 每秒能够生成多少 Token 可以支持多少并发用户 长上下文性能如何 单位 Token 成本是多少 是否适合长期生产运行AMD 没有在这次验证中公布这些生产指标。
这就产生了一个非常有意思的矛盾:
一个被认为进入世界前三、已经开放完整权重的模型,为什么绝大多数企业还是部署不了?
答案并不只是显卡太贵。
真正的问题是:
当模型大到必须跨越多张 GPU 时,部署就不再是一道显存加法题,而变成了一道分布式系统题。
一、K3 开放的是模型权重,不是一条廉价部署捷径
过去部署 7B、14B、32B 模型时,我们通常只需要回答一个问题:
模型需要多少显存?如果模型能装进显存,推理框架又支持相应架构,那么部署大概率就能继续进行。
但 K3 已经完全不是这个尺度。
它的模型 Checkpoint 大约为 1.56TB。
即使使用 8 张每张拥有 288GiB HBM 的 MI355X,也需要通过 TP8,把模型权重分散到所有 GPU 上。
这意味着一个请求不再由一张 GPU 独立完成。
而是可能变成:
GPU 0 计算一部分 GPU 1 计算一部分 GPU 2 计算一部分 …… GPU 7 计算一部分 ↓ 所有 GPU 交换结果 ↓ 完成同步 ↓ 继续计算下一层从这一刻开始,决定系统性能的就不只是 GPU 算力。
而是:
GPU 计算能力 × 并行策略 × GPU 通信带宽 × PCIe / 高速互联拓扑 × P2P 能力 × 请求调度 × 推理引擎优化任何一项严重退化,整套系统都会被拖慢。
所以,K3 真正值得研究的地方,不只是它拥有 2.8T 参数。
而是它把一个事实暴露得非常彻底:
前沿大模型已经不再只是一份神经网络权重,而是一台由模型、GPU、互联、通信库和调度系统共同组成的分布式计算机器。
二、为什么会出现“GPU 没跑满”?
这是很多多卡用户最困惑的问题。
明明服务器里安装了四张 GPU:
- 四张卡都被正确识别;
- 显存也全部占用了;
- 模型成功启动;
- 没有出现 OOM。
但运行模型时,却发现:
GPU 利用率忽高忽低 有的 GPU 长期等待 Token 生成速度没有明显提升 从两张卡增加到四张卡,延迟反而升高很多人会认为:
是不是显卡算力不够? 是不是 CUDA 没安装好? 是不是量化模型有问题?但真实原因可能恰恰相反:
GPU 计算得太快,剩下的大量时间都暴露成了通信和等待。
假设一个 Transformer 层被切分到四张 GPU:
GPU 0:计算矩阵的一部分 GPU 1:计算矩阵的一部分 GPU 2:计算矩阵的一部分 GPU 3:计算矩阵的一部分 ↓ 等待所有 GPU 完成局部计算 ↓ All-Reduce / All-Gather ↓ 合并计算结果 ↓ 进入下一层一张 GPU 即使已经完成自己的部分,也不能直接进入下一层。
因为下一层需要的是完整结果。
它必须等待其他 GPU 完成,并等待集合通信结束。
NCCL 的集合通信要求参与操作的各个 Rank 共同完成相应操作。All-Reduce 会聚合所有 Rank 的结果,并将结果返回给各个 Rank;All-Gather 则会收集各 Rank 的数据,并将完整结果分发给所有参与者。
假设某一次执行周期是:
有效计算:10ms 跨卡通信:15ms 同步等待:5ms那么总时间为:
10 + 15 + 5 = 30ms真正用于 GPU 有效计算的时间占比是:
有效计算利用率 = 10 ÷(10 + 15 + 5) = 33.3%也就是说,剩下约三分之二的时间,GPU 并不是没有任务。
它是在等待。
整个执行过程可能不断重复:
计算 10ms 通信 15ms 等待 5ms 计算 10ms 通信 15ms 等待 5ms 计算 10ms 通信 15ms 等待 5ms于是,你在nvidia-smi中看到的 GPU 利用率可能是:
100% → 20% → 0% → 100% → 15% → 0%GPU 可能在等待:
- 其他 GPU 完成局部计算;
- NCCL 集合通信;
- PCIe 数据传输;
- CPU 内存中转;
- 跨 NUMA 节点传输;
- 上一个 Pipeline Stage;
- 最繁忙的 MoE 专家;
- 推理框架完成调度。
因此,GPU 利用率出现波动,不一定说明 GPU 算力不足。
更准确的判断是:
GPU 的计算阶段很短,通信和同步阶段太长。
多卡执行时间可以粗略理解为:
总执行时间 = 有效计算时间 + 数据传输时间 + 集合通信时间 + 同步等待时间 + 调度开销当通信和等待时间超过计算时间时,继续增加 GPU 数量并不会自动提升速度。
因为 GPU 越多:
- 通信参与者越多;
- 同步点越多;
- 通信路径越复杂;
- 最慢 GPU 拖累全局的概率越高。
这就是多卡系统最反直觉的现象:
显卡越快,通信瓶颈反而可能越明显。
三、8 张 GPU 能运行,为什么不能证明 K3 能服务?
评价一次大模型部署,至少应该分成三个层次。
第一层:能加载
模型权重能够进入显存 不会发生 OOM第二层:能生成
模型可以完成前向传播 能够正确输出 Token第三层:能服务
TTFT 达标 TPOT 达标 吞吐量达标 并发能力达标 稳定性达标 单位成本达标其中:
- TTFT 是从请求发出到第一个 Token 出现的时间;
- TPOT 是开始生成后,每个新 Token 所需的时间;
- Throughput 是整个系统每秒能够为所有用户生成多少 Token;
- Concurrency 是系统在延迟不失控的前提下,可以同时服务多少请求。
很多所谓的“最低配置”,只能证明前两层。
它证明模型能装进去,也能输出答案。
但如果没有公布:
TTFT TPOT 单请求 Tokens/s 总吞吐量 并发用户数 P95 / P99 延迟 长时间运行稳定性 单位百万 Token 成本就不能直接得出“适合生产部署”的结论。
AMD 的 8 张 MI355X 方案,本质上是一次 Day-0 容量与正确性验证,而不是完整的生产性能报告。AMD 还特别说明,模型在 TP8 下每张 GPU 约占用 190.974GiB 权重;一条百万 Token 序列的已知额外运行状态,估算还会占用每张 GPU 约 14.427GiB,但这尚未包括通信缓冲区、Kernel Workspace、CUDA Graph、内存碎片和框架运行时开销。
所以,“8 卡能跑”的准确含义是:
8 张 MI355X 能够容纳 K3 并完成最小功能验证它不等于:
8 张 MI355X 已经能以合理成本 高并发、低延迟地服务 K3“能运行”和“能服务”之间,隔着一整套推理系统工程。
四、多卡性能不能只看显卡,还要看整台机器的拓扑
很多人购买 GPU 服务器时,只看四件事:
有几个 PCIe 插槽 可以安装几张显卡 总显存有多少 电源功率够不够但这些信息只能说明:
显卡能不能物理安装进去。
它不能说明:
这些显卡能不能高效协同。
真正决定多卡训练和推理性能的,是:
GPU 型号 + PCIe 代际 + 每张 GPU 的实际通道数 + PCIe 交换芯片 + CPU 数量 + NUMA 结构 + GPU P2P 能力 + NCCL 实际通信路径例如,主板上虽然有四个物理 x16 插槽,但实际运行状态可能是:
GPU 0:PCIe 4.0 x16 GPU 1:PCIe 4.0 x16 GPU 2:PCIe 4.0 x8 GPU 3:PCIe 4.0 x8物理上是 x16 长度的插槽,不代表它真的获得了 16 条 PCIe Lane。
有些主板会因为 CPU 可用 PCIe Lane 数量有限,在安装多张 GPU 后自动降速。
所以,看到“4 个 PCIe x16 插槽”时,还要继续问:
四张卡同时安装后 每张卡实际运行在 x16 还是 x8?双路 CPU 服务器还可能出现另一种结构:
CPU 0 ├── GPU 0 └── GPU 1 CPU 1 ├── GPU 2 └── GPU 3GPU 0 和 GPU 1 通信时,路径可能是:
GPU 0 → PCIe Switch → GPU 1但 GPU 0 和 GPU 2 通信时,路径可能变成:
GPU 0 → PCIe → CPU 0 → CPU 间互联 → CPU 1 → PCIe → GPU 2这条路径跨越了两颗 CPU 和两个 NUMA 域。
通常意味着:
- 传输路径更长;
- 延迟更高;
- 可用带宽更低;
- CPU 间互联也会成为共享瓶颈;
- NUMA 内存访问更复杂。
NVIDIA 的nvidia-smi topo -m会显示 GPU、CPU、NUMA 和网络设备之间的拓扑关系。其中,PIX 表示经过单个 PCIe Switch;PXB 表示经过多个 PCIe Switch;PHB 表示经过 CPU 的 PCIe Host Bridge;SYS 则表示路径还需要穿越 NUMA 节点之间的 CPU 互联。
因此,可以粗略理解为:
NV#:通常最好 PIX:路径较短 PXB:经过多个 PCIe Switch PHB:经过 CPU Host Bridge NODE:同一 NUMA 节点内跨 Host Bridge SYS:跨 NUMA 或 CPU 间互联假设拓扑结果是:
GPU0 GPU1 GPU2 GPU3 GPU0 X PIX SYS SYS GPU1 PIX X SYS SYS GPU2 SYS SYS X PIX GPU3 SYS SYS PIX X这说明:
GPU0 和 GPU1 路径较近 GPU2 和 GPU3 路径较近 两组 GPU 之间需要跨 NUMA 或 CPU 互联那么更合理的 TP2 组合是:
GPU0 + GPU1:实例 A GPU2 + GPU3:实例 B而不是:
GPU0 + GPU2 GPU1 + GPU3必须记住:
GPU 编号相邻,不代表物理路径相邻。
多卡性能不是由显卡列表决定的。
它是由显卡之间的数据路径决定的。
五、最危险的情况:GPU 之间不能直接 P2P
理想的 GPU 间通信路径是:
GPU 0 显存 ↓ GPU P2P ↓ GPU 1 显存GPU 0 可以直接访问或传输数据到 GPU 1 的显存。
CUDA 是否支持两张 GPU 直接访问彼此显存,可以通过cudaDeviceCanAccessPeer()判断,并通过cudaDeviceEnablePeerAccess()启用。它是否可用,取决于具体的 GPU、PCIe 或 NVLink 拓扑以及系统配置。
如果 P2P 无法使用,数据传输可能需要经过主机内存:
GPU 0 显存 ↓ PCIe ↓ CPU 内存 ↓ PCIe ↓ GPU 1 显存这会带来两个直接问题。
第一,多了一次或多次数据复制。
第二,CPU、系统内存带宽和 PCIe 会同时成为瓶颈。
原本应该由 GPU 直接完成的数据交换,现在需要 CPU 内存参与中转。
如果每生成一个 Token,都要在几十层甚至上百层模型中反复进行这种传输,性能损失会被不断放大。
NVIDIA 的 CUDA 文档明确说明,启用 P2P 后,GPU 间复制不再需要通过 Host Staging,也就是不必经过主机内存中转,因此通常会更快。
但 P2P 并不是“显卡插在同一台机器里”就自动成立。
它还可能受到以下因素影响:
- GPU 是否支持相应 P2P 路径;
- PCIe 拓扑;
- 驱动版本;
- BIOS 配置;
- 虚拟机环境;
- 容器对系统拓扑的暴露;
- IOMMU;
- ACS;
- GPU 与 PCIe Switch 的连接方式。
NCCL 官方文档指出,NCCL 会优先使用 GPU Direct 和 P2P 进行 GPU 间通信。但错误的虚拟机、容器、BIOS 或 PCIe 配置都可能导致 P2P 不可用或性能很差。
其中 ACS 是一个非常典型的坑。
ACS 可能把原本可以直接进行的 PCIe 点对点流量,强制重定向到 CPU Root Complex。
结果就是:
原本: GPU 0 → PCIe Switch → GPU 1 变成: GPU 0 → CPU Root Complex → GPU 1NVIDIA 的 NCCL 故障排查文档明确指出,VT-d、IOMMU 和 ACS 可能干扰 GPU Direct,把点对点流量重定向到 CPU Root Complex,从而造成显著性能下降,严重时甚至可能导致任务挂起。
所以,绝对不能简单认为:
四张卡都插在同一台服务器里,就一定可以高速互访。
物理上位于同一台服务器,不等于逻辑上能够直接访问彼此显存。
六、不同并行方式,对通信的敏感度完全不同
很多多卡性能问题,本质上不是显卡性能差,而是并行策略和硬件条件不匹配。
常见并行方式至少包括:
数据并行 DP 张量并行 TP 流水线并行 PP 专家并行 EP它们对 GPU 通信的依赖程度完全不同。
1. 数据并行:最适合消费级多卡推理
推理场景中的数据并行,可以理解为每张 GPU 保存一份完整模型,然后分别处理不同请求。
GPU 0:完整模型副本,处理用户 A GPU 1:完整模型副本,处理用户 B GPU 2:完整模型副本,处理用户 C GPU 3:完整模型副本,处理用户 D不同 GPU 之间几乎不需要频繁交换中间状态。
它的优点是:
- 单卡利用率通常更稳定;
- 总并发能力强;
- 对 PCIe 和 NVLink 要求较低;
- 单个请求不需要跨 GPU 同步;
- 某张 GPU 故障不一定影响全部服务;
- 尾延迟更容易控制。
缺点也很明显:
每张 GPU 都必须完整保存一份模型。
但只要模型能放进单卡,这通常就是四卡服务器最高效的使用方式。
例如,企业内部的:
- RAG;
- 知识库问答;
- Agent;
- 代码助手;
- 文档分析;
- OCR;
- Embedding;
- Reranker。
这些系统通常面对的是多个并发用户。
真正需要优化的是:
同时服务更多请求而不是:
让一个请求同时占满所有 GPU所以,只要模型能放进一张卡,优先考虑多个模型副本。
2. 张量并行:最容易被通信拖死
张量并行会把同一层中的矩阵计算切分到多张 GPU。
一层 Transformer ├── GPU 0 计算 25% ├── GPU 1 计算 25% ├── GPU 2 计算 25% └── GPU 3 计算 25%每张 GPU 完成自己的局部计算以后,还需要交换和合并结果。
因此,几乎每一层都可能执行:
- All-Reduce;
- All-Gather;
- Reduce-Scatter。
假设模型有 80 层。
那么生成一个 Token 的过程中,就可能发生大量跨 GPU 同步。
张量并行最麻烦的地方,不一定是单次传输量特别大。
而是:
通信发生得非常频繁。
所以它非常依赖:
- NVLink;
- NVSwitch;
- 高质量 PCIe P2P;
- 良好的 GPU 拓扑;
- NCCL 拓扑优化;
- 足够大的 Batch;
- 计算与通信重叠。
在只有 PCIe、没有 NVLink 的消费级多卡服务器上,经常会出现:
TP1:速度最快,但模型放不下 TP2:模型能运行,性能尚可 TP4:模型终于能放下,但生成速度下降原因是 TP 从 2 增加到 4 后:
每张 GPU 的计算量减少了 但通信参与者增加了 同步点增加了 数据路径更加复杂 最慢 Rank 的影响更明显了所以:
TP4 很多时候不是性能优化,而是显存不足时的容量妥协。
3. 流水线并行:通信少一些,但容易出现气泡
流水线并行按照模型层数进行切分。
GPU 0:第 1~20 层 GPU 1:第 21~40 层 GPU 2:第 41~60 层 GPU 3:第 61~80 层GPU 0 完成前 20 层后,将 Hidden State 发送给 GPU 1。
GPU 1 再计算第 21~40 层。
与张量并行相比,它不需要在每一层内部进行完整的 All-Reduce。
相邻 Stage 主要传递 Hidden State。
但它存在一个严重问题:
Pipeline Bubble,也就是流水线气泡。
例如:
时间 1: GPU0 工作 GPU1、GPU2、GPU3 等待 时间 2: GPU0、GPU1 工作 GPU2、GPU3 等待 时间 3: GPU0、GPU1、GPU2 工作 GPU3 等待 时间 4: 四张 GPU 才全部进入工作状态想要减少流水线气泡,就需要持续输入多个 Micro-batch,让不同 Stage 同时处理不同批次。
但对于单用户、本地聊天和低并发推理:
请求数量不足 Batch 太小 Micro-batch 不够流水线就很难被填满。
于是,即使安装了四张 GPU,也可能不断出现部分 GPU 空转。
4. 专家并行:对通信最凶险
专家并行是 K3 这类 MoE 模型最需要警惕的部分。
K3 拥有 896 个路由专家,每个 Token 选择其中 16 个专家。
这些专家会被分布到不同 GPU。
Router 完成选择后,可能得到:
Token 1 → GPU 0 上的专家 Token 2 → GPU 3 上的专家 Token 3 → GPU 1 上的专家 Token 4 → GPU 2 上的专家系统先执行 Token Dispatch:
把 Token 发送到专家所在 GPU专家完成计算后,再执行 Expert Combine:
把专家结果发送回来 重新恢复原来的 Token 顺序 合并计算结果这个过程通常依赖 All-to-All 通信。
All-to-All 的意思是:
每张 GPU 都可能向其他所有 GPU 发送数据 同时 每张 GPU 也可能从其他 GPU 接收数据NCCL 对 All-to-All 的定义是:每个 Rank 都提供面向所有目标 Rank 的数据块,并将对应数据块发送给相应 Rank。
专家并行还有一个比通信更加麻烦的问题:
专家负载不均衡。
例如,某个 Batch 的路由结果是:
专家 A:收到 10000 个 Token 专家 B:收到 8000 个 Token 专家 C:收到 100 个 Token 专家 D:收到 20 个 Token专家 C 和专家 D 很快就计算完成。
但整个系统不能直接继续。
因为专家 A 还没有完成。
结果可能变成:
GPU 0:完成,等待 GPU 1:完成,等待 GPU 2:仍在处理热门专家 GPU 3:完成,等待整个系统的速度,最终由最慢的那个 Rank 决定。
这就是分布式计算中的 Straggler,也就是掉队者问题。
因此,四种并行方式的通信敏感度可以粗略排序为:
数据并行 较低 流水线并行 中等 张量并行 较高 专家并行 最高这也解释了为什么 K3 这种拥有 896 个专家的模型,需要高带宽、低延迟的高速互联域。
而不能简单地认为:
找几十张消费级 GPU 把显存加起来 就等于拥有一套 K3 推理集群显存容量可能够了。
但通信系统很可能完全撑不住。
七、为什么 104B 激活参数不等于一个普通的 104B 模型?
很多人看到 K3 的参数配置:
总参数:2.8T 激活参数:104B会下意识认为:
虽然 K3 有 2.8T 参数,但每次只用 104B,所以部署难度应该和一个 104B Dense 模型差不多。
这个结论不成立。
可以把 K3 想象成一家拥有 896 名专家的公司。
每次处理一个任务,只邀请 16 名专家参加。
这样做的好处是:
公司可以拥有巨大的知识容量 但不需要每个任务都让全部专家参与这就是 MoE 的价值。
但是,虽然一次只邀请 16 名专家开会,896 名专家依然都需要办公室。
同样:
总参数量 决定所有模型权重需要占用多少空间 激活参数量 决定一个 Token 大约需要执行多少计算2.8T 总参数解释了为什么 K3 的 Checkpoint 接近 1.56TB。
104B 激活参数解释了为什么每个 Token 不必让全部 2.8T 参数参与计算。
但 104B 激活参数没有包括:
- Router 计算;
- Token Dispatch;
- Expert Combine;
- All-to-All 通信;
- 专家负载不均衡;
- 跨卡同步;
- 通信缓冲区;
- 等待最慢 Rank。
因此:
激活参数描述的是“算多少”,不是“搬多少”,更不是“等多久”。
K3 每个 Token 的计算量可能接近一个超大 Dense 模型。
但它的系统行为和普通 Dense 模型完全不同。
八、看 K3 这样的超大模型,必须同时算四本账
以后看到一个超大模型,不能只看参数量。
至少要同时计算四本账。
第一笔账:权重存储
理论权重大小可以粗略估算为:
权重大小 ≈ 参数数量 × 每个参数位数 ÷ 8K3 有 2.8T 参数。
假设全部按照 4bit 保存:
2.8T × 4bit ÷ 8 ≈ 1.4TB但真实模型中还包括:
- 部分高精度参数;
- 量化 Scale;
- Embedding;
- Norm 参数;
- 视觉编码器;
- 元数据;
- 文件格式开销;
- 内存对齐。
因此,K3 实际 Checkpoint 大约为 1.56TB。
这笔账决定的是:
模型权重能不能放进显存?第二笔账:每个 Token 的计算量
激活参数决定一次前向传播中,大约有多少参数真正参与计算。
MoE 的价值可以理解为:
很大的总参数容量 + 相对受控的单 Token 计算量但它没有完整计算:
路由开销 通信开销 同步开销 负载不均衡所以这笔账回答的是:
大约需要算多少?而不是:
最终需要运行多久?第三笔账:KV Cache 和运行状态
生产环境中的显存占用,不只有模型权重。
完整占用更接近:
总显存占用 = 模型权重 + KV Cache + KDA / MLA 运行状态 + 活跃请求状态 + 通信缓冲区 + Kernel Workspace + CUDA Graph + 框架运行时 + 内存碎片K3 支持最高 100 万 Token 上下文,但“一条百万 Token 请求能够运行”,不代表“几十条百万 Token 请求能够同时运行”。
并发环境中,运行状态还会受到以下因素影响:
上下文长度 × 模型层数 × 隐藏状态规模 × 活跃请求数量所以,支持百万上下文是模型能力。
能否以合理成本并发服务百万上下文,则是系统能力。
第四笔账:GPU 通信
多卡总时间可以粗略理解为:
总时间 = 计算时间 + 数据传输时间 + 集合通信时间 + 同步等待时间 + 调度开销这笔账最容易被忽略。
却经常决定模型最终到底能跑多快。
一个模型可能已经成功放进显存:
模型加载成功 GPU 全部识别 显存全部占用但系统仍然可能处于:
GPU 很快完成计算 然后长时间等待通信所以:
能不能装下,是容量问题;能不能高效运行,是系统问题。
九、没有 NVLink,消费级多卡还有价值吗?
当然有。
但必须用对方式。
以 RTX 4090 为例,它没有 NVLink,多卡之间主要依赖 PCIe。
这意味着它不适合所有跨卡并行方式。
如果一个模型可以装进单张 GPU,可以让多张 GPU 分别处理不同请求:
GPU 0:处理用户 A GPU 1:处理用户 B GPU 2:处理用户 C GPU 3:处理用户 D这种情况下,不同 GPU 之间几乎不需要频繁交换中间状态。
四张 GPU 仍然可以显著提高总吞吐。
所以,真正应该问的不是:
服务器里有几张 GPU?而是:
一个请求需要跨越几张 GPU?一个请求跨越的 GPU 越多,对通信的要求通常越高。
因此,消费级多卡最重要的原则不是:
尽量让所有 GPU 都参与同一个请求而是:
尽量减少一个请求 需要跨越的 GPU 数量十、四张消费级 GPU,应该怎么分配?
假设你有四张 GPU,可以根据模型容量分成三种情况。
场景一:模型可以装进一张 GPU
优先部署四个独立副本:
GPU 0:模型副本 A GPU 1:模型副本 B GPU 2:模型副本 C GPU 3:模型副本 D然后通过 API Gateway、LiteLLM 或负载均衡器分发请求。
如果并发量不高,也可以按照服务拆分:
GPU 0:主语言模型 GPU 1:视觉语言模型 GPU 2:Embedding + Reranker GPU 3:OCR、批处理或备用实例这通常比强行把四张卡绑成一个 TP4 实例更加稳定。
场景二:模型必须两张 GPU 才能装下
优先考虑两个 TP2 实例:
GPU 0 + GPU 1:模型实例 A GPU 2 + GPU 3:模型实例 B而不是一个 TP4 实例:
GPU 0 + GPU 1 + GPU 2 + GPU 3两个 TP2 通常意味着:
- 每个实例参与通信的 GPU 更少;
- 总并发能力更高;
- 尾延迟更稳定;
- 故障隔离更容易;
- GPU 更容易持续执行有效计算。
但 GPU 配对不能只看编号。
应该结合:
nvidia-smi topo -m优先选择 PIX、PXB 或高速互联路径较近的 GPU。
场景三:模型必须四张 GPU 才能装下
这时候 TP4 是容量上的被迫选择。
目标不应该再是:
四张 GPU 必须长期保持 100% 利用率更合理的目标是:
模型稳定加载 不发生 OOM TTFT 可以接受 TPOT 可以接受 并发达到业务要求 NCCL 没有走异常路径 没有严重 Host Staging 单位请求成本合理如果跨卡通信已经占用大量时间,那么 GPU 利用率只有 40% 或 50%,不一定说明程序写错了。
它可能已经接近当前硬件拓扑的性能上限。
十一、真正排查多卡性能,不能只看 nvidia-smi
nvidia-smi的 GPU 利用率,只能告诉你某个采样窗口内 GPU 是否在执行 Kernel。
它不能直接告诉你:
GPU 为什么没有执行 Kernel 是在等待数据 还是在等待同步 还是在等待 CPU 还是在等待其他 GPU一套完整的多卡排查流程,至少应该包括以下步骤。
第一步:查看 GPU 拓扑
nvidia-smi topo -m重点查看:
GPU 之间是 NV#、PIX、PXB、PHB、NODE 还是 SYS GPU 分别属于哪个 NUMA 节点 GPU 和网卡之间的距离第二步:查看 PCIe 实际速率
nvidia-smi -q或者使用:
lspci -vv确认每张 GPU 实际运行在:
PCIe 4.0 x16 PCIe 4.0 x8 PCIe 5.0 x16不要只看主板插槽外观。
第三步:检查 GPU P2P
nvidia-smi topo -p2p p其中p用于检查 PCIe P2P 能力。
NVIDIA 文档也建议使用 CUDA Samples 中的工具测试 GPU 间 Peer Access、带宽和延迟。
例如:
p2pBandwidthLatencyTest它可以帮助确认:
- GPU 是否支持 Peer Access;
- 单向 P2P 带宽;
- 双向 P2P 带宽;
- GPU 间延迟。
第四步:测试 NCCL 集合通信
可以使用nccl-tests:
./build/all_reduce_perf \ -b 8M \ -e 8G \ -f 2 \ -g 4分别测试:
-g 1 -g 2 -g 4重点关注:
algbw busbw 不同数据量下的带宽 GPU 数量增加后的扩展效率如果从两张 GPU 增加到四张 GPU 后,通信带宽没有合理扩展,甚至明显下降,就需要继续检查:
- PCIe 拓扑;
- P2P;
- PCIe Lane;
- NUMA;
- CPU 绑定;
- ACS;
- IOMMU;
- BIOS 设置。
第五步:查看 NCCL 实际通信路径
运行任务前开启日志:
export NCCL_DEBUG=INFO export NCCL_DEBUG_SUBSYS=INIT,GRAPH,P2P重点观察 NCCL 选择的路径:
P2P / IPC SHM NET Socket可以粗略理解为:
P2P / IPC: GPU 之间直接传输,通常更理想 SHM: 通过主机共享内存中转 NET / Socket: 通过网络或 Socket 通信如果同一台服务器中的 GPU 通信大量退化到 SHM,就需要进一步检查:
- P2P 是否被禁用;
- ACS 是否强制流量绕路;
- IOMMU;
- 容器权限;
/sys是否正确挂载;- PCIe 拓扑;
- 驱动和 NCCL 版本。
第六步:对比 TP1、TP2、TP4
如果显存允许,应分别测试:
TP1 TP2 TP4每一种配置至少记录:
- TTFT;
- TPOT;
- 单请求 Tokens/s;
- 总吞吐量;
- 并发能力;
- P50 延迟;
- P95 延迟;
- P99 延迟;
- GPU 利用率;
- GPU 显存占用;
- CPU 内存占用。
不要只比较模型能不能启动。
真正需要回答的是:
GPU 数量增加以后,业务指标到底有没有改善?
十二、买显卡之前,应该先决定怎么并行
很多人的采购顺序是:
先买显卡 → 再选择模型 → 最后研究怎么并行更合理的顺序应该反过来:
先确定业务负载 → 再确定模型规模 → 再选择并行策略 → 最后选择硬件采购之前,至少应该回答以下问题。
1. 模型能不能装进一张卡?
如果可以,优先考虑多个独立副本。
2. 模型至少需要几张卡?
能用 TP2,就不要为了“让所有 GPU 都参与”而强行使用 TP4。
3. 业务目标是低延迟还是高并发?
低延迟更怕跨卡通信。
高并发通常更适合多个独立副本。
4. 模型是 Dense 还是 MoE?
MoE 对以下能力更加敏感:
All-to-All 专家负载均衡 专家放置 GPU 高速互联 跨节点 RDMA5. 每张 GPU 实际获得多少 PCIe Lane?
物理 x16 插槽,不等于实际运行在 x16。
6. GPU 是否跨 CPU 和 NUMA?
跨 NUMA 会增加通信路径和延迟。
7. GPU P2P 是否真正可用?
必须通过命令和基准测试确认。
8. NCCL 实测带宽是多少?
购买多卡服务器时,应该要求供应商提供真实 NCCL 测试结果,而不只是显卡规格表。
十三、多卡服务器真正的采购清单
下一次采购多卡服务器,不要只问:
可以安装几张显卡? 总显存有多少? 电源功率够不够?还要继续追问:
每张 GPU 实际运行在 PCIe x16 还是 x8? 四张卡同时安装后是否会降速? GPU 分别挂在哪一颗 CPU 下? GPU 是否跨 NUMA 节点? GPU 之间是 NV#、PIX、PXB、PHB 还是 SYS? 是否存在 PCIe Switch? GPU P2P 是否可用? ACS 和 IOMMU 如何配置? NCCL All-Reduce 实测带宽是多少? 目标模型准备使用 DP、TP、PP 还是 EP? TP2 和 TP4 的真实性能分别是多少? 是否支持 GPU Direct RDMA? 跨节点网络使用什么网卡和交换机?显卡型号只能告诉你:
单个计算节点有多强拓扑和通信才能告诉你:
这些节点能不能组成一个高效系统结语:K3 开放了世界级模型,但没有消灭系统工程门槛
Kimi K3 的开放,确实具有标志性意义。
一个拥有 2.8T 参数、896 个专家、百万 Token 上下文、进入全球第一梯队的模型,其完整权重已经可以被开发者获取。
但 K3 同时也证明了一件更现实的事:
模型权重开放,不等于部署门槛消失。
8 张 MI355X 可以让 K3 完成加载和正确性验证。
但这首先解决的是:
模型能不能放进去?它还没有完整回答:
模型放进去以后 能不能以合理的吞吐、延迟和成本运行?同样,四张 24GB 显卡的确可以提供 96GB 总显存。
但它们不会自动变成一张拥有 96GB 统一显存、四倍算力和四倍速度的超级显卡。
显存只能相对直接地相加。
性能却取决于:
单卡计算能力 × 并行策略 × GPU 通信带宽 × PCIe 拓扑 × P2P 能力 × NUMA 路径 × 批处理与调度 × 推理框架优化对于消费级多卡服务器,更合理的原则通常是:
模型尽量控制在一到两张 GPU 内 + 使用多个模型副本提高并发 + 按照真实拓扑选择 GPU 组合 + 让不同 GPU 承担不同服务 + 容量不足时再提高张量并行规模以后再看到:
支持八卡 总显存 192GB 四卡并行加速不要只看 GPU 数量。
真正应该追问的是:
这些 GPU 之间如何通信? 数据会经过哪些设备? P2P 是否可用? 是否跨 CPU 和 NUMA? NCCL 实测带宽是多少? 一个请求需要跨越几张 GPU? 选择的是 DP、TP、PP 还是 EP?当你开始关注拓扑、P2P、NCCL、NUMA 和并行策略时,才算真正从“会买显卡”,进入了“会设计大模型计算系统”的阶段。
最后记住一句话:
K3 开放的是世界第一梯队模型的权重,但真正让这种模型运行起来的,不是某一张最强显卡,而是让几十张甚至上百张 GPU 像一台机器一样协同工作的系统能力。
文章标签:Kimi K3、大模型部署、MoE、GPU 通信、NCCL、张量并行、数据并行、流水线并行、专家并行、PCIe、P2P、NUMA、RTX 4090、AMD MI355X、分布式推理