高级 22 分钟性能

基于llama.cpp的多GPU LLM:tensor-split 2× RTX 3090

单张 24 GB 显存的 RTX 4090 不足以在保持 Q8 完整质量、使用 256k token 上下文的情况下运行 2026 年最好的模型。两张二手 RTX 3090(共 48 GB 显存)能以更低的价格满足需求。但您需要知道如何将模型分配到两张显卡上,如何选择按层拆分或张量并行,以及如何配置硬件以确保长期稳定运行。本指南涵盖三种常用工具(llama.cpp、Ollama、vLLM)及需要避开的陷阱。

您正在挑选电脑吗? 按预算推荐 →

作者: Mohamed Meguedmi·更新于 2026-08-27·已在 Windows、macOS 和 Linux 上测试
推荐硬件

本地 AI 的高性价比之选: GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395).

迷你 PC 是一台完整的机器:请检查可用内存和引擎兼容性。它不能替代 macOS/MLX 或 CUDA。

为什么选择它?我们的完整资料: GMKtec EVO-X2 64 GB / 1 TB (Ryzen AI Max+ 395) →

按预算比较所有选项,从 800 到 3 500 欧元 →

预算有限: RTX 5060 · 大型模型: RTX 5090 · Mac Studio.

移动场景: 本地 AI 选哪款笔记本电脑 →

联盟链接——可能产生佣金,但您无需额外付费。作为亚马逊合作伙伴,QuelLLM 将从符合条件的购买中获利。

#为何需要多 GPU?

模型大小超过单张显卡的显存容量
Qwen3-Coder 30B-A3B 的 Q8 版本占用 32 GB;使用 256k 上下文时,KV 缓存会让总内存需求远超这一数值。没有哪张消费级 GPU 能单卡容纳它,RTX 5090(32 GB)除外——即便如此,也没有余量留给较大的上下文。
团队吞吐量
通过 vLLM 实现双卡张量并行,可并行服务用户数量提升 2 倍。
冗余
其中一张显卡故障,另一张则以降级模式继续运行(使用更小的模型)。
Fine-tuning
对一个 24B 模型进行 LoRA 微调,模型、优化器和梯度合计需要 30 GB 显存。两块各有 24 GB 显存的显卡就很宽裕了。

#两种策略:按层拆分与张量并行

按层拆分(层并行,layer parallelism)
第1至40层在GPU 0上,第41至80层在GPU 1上。从一层传递到下一层时,会复制一个激活向量。延迟略高。llama.cpp和Ollama支持这种方式。
张量并行
每一层都被拆分成多个部分,分配到多个 GPU 上并行处理。需要显卡之间进行快速通信。性能更好,但实现复杂。vLLM 和 ExLlamaV2 支持这种方式。
i
经验法则
单用户使用且追求简单:按层拆分(llama.cpp/Ollama)。多用户服务且追求吞吐量:张量并行(vLLM)。

#硬件:注意细节

PCIe
每个GPU至少需要PCIe x8接口。主板必须配备2个专用于CPU的PCIe 5.0 x16接口,而非通过芯片组实现的x16 + x4组合。
电源
2× 3090 = 700 瓦仅GPU。加上CPU、RAM、SSD:目标功率在1200-1600瓦(80+金牌或铂金认证)。
间距
RTX 3090/4090 显卡为 3 个插槽。在 7 个插槽的主板上,两块显卡会直接接触。需使用 PCIe 扩展器或水冷散热以确保稳定运行。
通风
在双卡负载下,通风不良的机箱温度可达 85-90°C。热节流会导致性能下降 30%。

#1. 使用llama.cpp的多GPU模式

按层拆分
./build/bin/llama-cli \
  -m ./models/qwen3-coder-30b-a3b-q8_0.gguf \
  -ngl 99 \
  --split-mode layer \
  --tensor-split 0.5,0.5 \
  -p "..."

--tensor-split 指定每个 GPU 上的层比例。对于两张相同的显卡:0.5,0.5。对于一张 24 GB 的 3090 和一张 12 GB 的 4070:0.67,0.33(3090 承担三分之二)。

行分割(有时更快)
./build/bin/llama-cli \
  -m ./models/qwen3-coder-30b-a3b-q8_0.gguf \
  -ngl 99 \
  --split-mode row \
  ...

#2. Ollama多显卡支持

Ollama会自动检测多个GPU,并将模型分配到所有可用的GPU上。可调整的设置不多,但开箱即用。

实用变量
# Limiter à certains GPU
export CUDA_VISIBLE_DEVICES=0,1

# Ou pour AMD
export ROCR_VISIBLE_DEVICES=0,1

systemctl restart ollama
检查分配情况
ollama ps
# Doit afficher le modèle réparti : PROCESSOR = 100% GPU,
# réparti sur les deux cartes vu par nvidia-smi

#3. 使用 vLLM 实现张量并行

使用2块GPU启动vLLM
python -m vllm.entrypoints.openai.api_server \
  --model Qwen/Qwen3-Coder-30B-A3B-Instruct \
  --tensor-parallel-size 2 \
  --quantization awq \
  --dtype auto \
  --port 8000

vLLM 将每一层并行分布在 2 个 GPU 上。与单个 GPU 相比,聚合吞吐量几乎翻倍,通信开销约为 10%。

→
用于 vLLM 的显卡应相同
张量并行在使用相同显卡时效果最佳。2× RTX 3090 或 2× 4090:可行。一张 3090 加一张 4070:vLLM 会以较慢的显卡为基准,导致较快的显卡无法得到充分利用。

NVLink 可实现 GPU 之间的高带宽连接(3090 上为 112 GB/s)。部分 RTX 3090 配有 NVLink 接口;4090 已不再配备该接口;RTX Quadro / A 系列则全部配备。

对 llama.cpp split-layer(按层拆分)的影响
非常低。层间传输数据量很小。
vLLM 张量并行的影响
更显著:启用NVLink后,吞吐量提升5%至15%。
对微调的影响
影响很大:梯度通信量很大。如果计划进行多 GPU 微调,建议使用 NVLink。

#预期性能

在2× RTX 3090上,Qwen3-Coder 30B-A3B Q8_0,使用llama.cpp并启用分层切分:

单个提示
约 55 tok/s。单块 3090 的显存装不下 Q8 版本的模型(32 GB)。速度依然很高:这是一个激活参数量为 30 亿的混合专家(MoE)模型。
首个 token 延迟
约 200 毫秒(相比之下,在单张 GPU 上运行的小模型约为 80 毫秒)。
相同显卡下使用 vLLM 张量并行
单请求约 65 token/秒,但在 10 个请求并行时,总吞吐量约为 400 token/秒。
!
PCIe 瓶颈
如果您的某张显卡以 PCIe x4 运行(例如插在连接到芯片组的次级插槽中),按层拆分时性能可能下降 40%,采用张量并行时下降幅度还会更大。在把问题归咎于其他因素之前,请先用 nvidia-smi 或 GPU-Z 检查。
这份指南对您有帮助吗?

有反馈、发现了错误,或想补充说明?请告诉我们,让这份指南对每个人都更有帮助。