@analogalok:别再盲目信任本地 LLM 的默认多 GPU 设置了,你实际上正浪费 25% 的性能……
摘要
基准测试结果对比了 llama.cpp 中针对双 GPU 设置的层并行与张量并行:层模式在预填充(RAG 管道)中快 25%,而张量模式在解码(交互式聊天)中快 16%。
查看缓存全文
缓存时间: 2026/07/09 23:53
停止盲目信任本地大语言模型的默认多GPU设置。你实际上正在浪费25%的性能。
我花了整整3小时压榨免费的双Nvidia T4 GPU,终于解决了Llama.cpp长期以来的争议:层并行 vs 张量并行。
测试结果完全颠覆了RAG和聊天管线的架构设计。以下是原始数据:
如果你的模型超出单张GPU VRAM,llama.cpp提供两种权重分配方式:层模式(流水线并行)和实验性的张量模式(张量并行)。
官方文档只给了理论说明,但我需要实证数据。
我在双T4 GPU主机上加载了unsloth的Gemma 4 26B QAT(MoE)的Q4_K_XL量化版本。
关键点:这套系统使用标准PCIe互连,没有高速NVLink。我编写了脚本,将上下文窗口从10k逐步扩大到50k个token,每次运行之间清空VRAM,以精确观察硬件瓶颈。
以下是基准测试的实际结果:
RAG场景最佳选择:层模式
llama.cpp参数:llama-server -m gemma-4-26B-A4B-it-qat-UD-Q4_K_XL.gguf -ngl 99 -c 60000 -fa on –split-mode layer –host 127.0.0.1 –port 8080
如果你正在构建文档摘要、RAG管线或处理大规模数据,–split-mode layer 就是你的神级参数。
在50k token标记下:
- 层模式预填充:1,223 tokens/秒
- 张量模式预填充:979 tokens/秒
结论:层模式在处理大型提示时快25%。
原因:层模式顺序拆分网络。GPU 0先完成计算,然后将接力棒交给GPU 1。它最大程度减少了跨GPU流量。如果GPU通过标准PCIe通信,这种模式能防止互连线成为预填充瓶颈。
聊天场景最佳选择:张量模式
llama.cpp参数:
llama-server -m model.gguf -ngl 99 -c 60000 -fa on –split-mode tensor –host 127.0.0.1 –port 8080
如果你在构建交互式聊天界面或AI编码助手,人类感知延迟(解码速度)至关重要。这正是 –split-mode tensor 的强项。
在整个基准测试矩阵中:
- 张量模式解码:52 到 57 tokens/秒
- 层模式解码:44 到 52 tokens/秒
结论:张量模式生成输出token大约快16%。
原因:张量并行将单个矩阵乘法拆分到多个GPU上。两个GPU同时工作以预测下一个token,从而加速生成。
我将完整的50k压力测试代码和数据可视化脚本打包成了一个可直接复现的Kaggle Notebook。该Notebook完全即开即用,会自动从HuggingFace拉取Gemma 26B GGUF模型,获取预编译的llama.cpp CUDA二进制文件,然后运行完整的双GPU矩阵测试,你无需编译任何东西。
Fork这段代码,在自己的硬件上运行,亲眼看看瓶颈在哪里。或者用不同的模型运行同一个Notebook并发布结果。Notebook链接(含免费双T4 GPU)在评论区。
Kaggle Notebook(含全部代码,免费双T4 GPU)
测试中使用的模型
是的,我两种都试过了并发布了结果。见图表。
是的,层模式在预填充上表现更好,张量模式在解码上表现更好。
相似文章
比较 llama.cpp 行/张量分割与 ik_llama 图分割的双GPU推理速度
一位用户使用llama.cpp(行/张量切分)和ik_llama(图切分)在两张RTX 3080 20GB上对双GPU推理速度进行了基准测试,使用Qwen3.6-27B GGUF模型,比较了token生成和提示处理速度。
双GPU llama.cpp加速
llama.cpp的一个分支修复了量化KV缓存中的--split-mode tensor问题,在双GPU配置上实现高达40%的速度提升,且无质量损失。
@ggerganov:强调 llama.cpp 在多GPU和张量并行支持方面的最新进展 过去几个月来,llama.cpp 取得了多项…
llama.cpp 维护者与 NVIDIA 工程师合作,显著提升了 ggml 中的多GPU性能,实现了硬件无关的张量并行,并在 RTX 系统上获得了显著的性能提升。
双GPU下流水线与张量并行的llama.cpp中测量PCIe传输
在双GPU下使用流水线和张量并行运行llama.cpp时的PCIe传输性能分析。
llama.cpp 中的流水线并行可能浪费你的显存
测试表明,llama.cpp 默认的流水线并行浪费显存且无速度提升;通过编译时设置 GGML_SCHED_MAX_COPIES=1 可节省大量显存,同时保持相同推理速度。