多卡跑本地大模型:NVLink、PCIe 与层拆分详解
更新于 2026-08-04 · 核实于 2026-08-04
单卡上限 32GB。而你真正想跑的模型需要 48GB、74GB、96GB。多卡推理到底怎么工作,营销话术哪里在骗人——这篇讲完。
拆分模型的两种方式
层拆分(流水线并行) 是 llama.cpp 和 Ollama 的默认做法:第 1–40 层在显卡 1,第 41–80 层在显卡 2。每个 token 先流过显卡 1,激活值再经 PCIe 传给显卡 2。简单、任何卡都行,而且——对推理至关重要的是——每个 token 的卡间流量极小(只有几 MB 的激活值)。
张量并行 把每一层拆到所有卡上(vLLM,部分 llama.cpp 模式)。每个 token 的计算都需要所有卡持续通信。规模化时更快,但要求极高的互联带宽——NVLink 就是为这个准备的。
单用户推理,PCIe 层拆分就是全部所需。 NVLink 的 900 GB/s 解决的是一个你没有的问题。
显存算法:直接相加
两张 24GB 的卡给你 48GB 可用容量。四张就是 96GB。我们不为张量并行开销打折(它很小,判定分档里已有的安全边际足以吸收):
| 配置 | 可用显存 | 能跑什么(Q4_K_M) |
|---|---|---|
| 2× RTX 3090/4090 | 48 GB | Llama-3.3-70B(勉强,约 47.4GB) |
| 2× RTX A6000 | 96 GB | gpt-oss-120b(勉强)、Q8 的 70B |
| 4× RTX 3090 | 96 GB | 同上容量,更便宜,更耗电 |
| 4× RTX 4090 | 96 GB | 以上全部,更快 |
速度算法:0.85 折损,不是翻倍
多卡不会让带宽翻倍。跨卡同步和不完美的拆分要损失约 15%:
有效带宽 = 各卡带宽之和 × 0.85(同型号)
- 2× RTX 4090:2 × 1008 × 0.85 = 有效 1714 GB/s → 70B Q4 约 30 tok/s
- 2× RTX 3090:2 × 936 × 0.85 = 有效 1591 GB/s → 70B Q4 约 19 tok/s
- 4× RTX 3090:4 × 936 × 0.85 = 有效 3182 GB/s → 70B Q4 约 38 tok/s(如果反正需要这个容量)
混插显卡:最慢的卡起决定作用。4090 搭 3060 能获得容量,但 3060 负责的那部分层只有 3060 级速度。别这么干。
实操清单
- 电源:两张 350–450W 的卡需要靠谱的 1200W 以上电源;瞬时尖峰会让杂牌电源跳闸。
- 主板:需要物理 x16 插槽,但层拆分用 PCIe 3.0 x8 电气规格就够了。
- 散热:涡轮扇或水冷卡更适合叠放;相邻槽位的两张开放式散热 4090 会热节流。
- 转接线可以用。 很多本地 LLM 主机用 PCIe 转接线把卡装在开放式机架上——带宽需求就是这么低。
- 统一内存替代方案:买 4 张显卡之前,先给 96GB 的 Mac Studio 报个价。单 token 更慢,但静音、100W、零组装。
常见问题
多卡推理需要 NVLink 吗?
不需要。单用户推理用普通 PCIe 层拆分就够了——每层的权重独立读取,卡间流量很小。NVLink 是训练和高并发服务的刚需,不是一个人和 70B 模型聊天的刚需。
2×3090 比单卡 4090 级别的带宽慢多少?
我们的模型对同型号多卡施加 0.85 的带宽折损:2×936 GB/s ≈ 有效 1591 GB/s。70B Q4 模型在 2×3090 上生成约 19 tok/s,2×4090 上约 30 tok/s。
可以混用不同型号的显卡吗?
技术上可以(llama.cpp 会按比例拆分层),但最慢那张卡的带宽会成为它那部分层的瓶颈。3090 混 4060 能跑,但速度更接近慢卡。强烈建议同型号成对使用。