如果一支厨房团队只有一个最快的灶台,最合理的安排不是让所有厨师轮流抢它,而是把最常接单的菜留在灶台上,冷门菜交给旁边的人处理。大型 AI 模型在个人电脑上运行,也有类似难题:显卡很快,但显存有限;系统内存更大,却要靠较慢的 CPU 计算。
tandem.cpp 想做的,就是重新安排这套分工。它是 llama.cpp 的一组补丁。后者是一个用 C/C++ 编写、常用于个人电脑本地运行语言模型的开源推理框架。项目作者称,在一台配备 i5-12400F、64 GB DDR4 内存和单张 RTX 4090 的电脑上,它把一个 Qwen3.8 测试模型的生成速度从 29.8 tok/s 提高到 97.3 tok/s,约为 3.3 倍。
这里的 tok/s 是“每秒生成多少个 token”。token 可以粗略理解为模型处理文字时使用的小片段。需要先说明的是,本文全部性能数字均来自项目作者发布的 Reddit 帖子,尚无独立复现;其中若干模型名称也可能是特定分支或作者使用的称呼。
GPU管热门,CPU接冷门
这套方案针对的是 MoE——Mixture of Experts,中文常译为“混合专家模型”。这类模型把部分网络拆成许多“专家”,每次生成文字时只调用其中少数几个。它可以容纳更多参数,却不必每次把所有参数都算一遍。
问题在于,不调用不等于不存储。大量专家的权重仍会占据空间。VRAM,也就是显卡上的高速内存,一旦装不下整个模型,部分权重就要留在容量较大的系统内存里。此时,CPU 与 GPU 如何配合,会直接影响生成速度。
tandem.cpp 的核心思路很直白:把最常被调用的“热专家”留在 GPU 上,把较少使用的“冷专家”交给 CPU。这样,GPU 能优先处理高频工作,CPU 也不再只是替显卡保管装不下的数据,而是参与计算。
这就是所谓的冷热专家调度。它并非凭空增加算力,而是尽量把有限的高速显存留给更可能马上用到的部分。最终效果取决于专家调用是否有稳定的冷热差异,也取决于 CPU、GPU 与系统内存之间的数据传输成本。
3.3倍是怎么测出来的?
作者把目标限定为单用户 decode,也就是一个人在本地让模型逐字生成回答的场景。在 GSM8K 测试中,Qwen3.8-Flash-Next IQ3_S + MTP 使用 greedy decoding 时,llama.cpp 达到 29.8 tok/s,tandem.cpp 达到 97.3 tok/s。greedy decoding 指每一步都直接选择概率最高的下一个 token。
换成 Qwen 默认采样设置,结果仍接近:29.4 tok/s 对 96.1 tok/s,同样约为 3.3 倍。采样会在多个候选 token 之间按规则选择,因此输出方式与始终取最高概率不同。
不过,3.3 倍并不是所有模型都能拿到的固定收益。对 gpt-oss-120b,作者测得 greedy decoding 从 27.8 tok/s 提高到 51.5 tok/s,约为 1.85 倍;使用 recommended sampling 时,则从 27.7 提高到 48.0 tok/s,约为 1.73 倍。
作者称,除专门调优的 Qwen3.8 外,GLM-4.5-Air、Qwen3.6-35B-A3B、DeepSeek-V4.1 等无法完全装入显存的 MoE 模型,通常也能获得 1.4至2.1 倍加速。对于 64k prompt——约六万四千个 token 的输入——提示词处理速度提高了 1.4至1.8 倍。这些仍是同一项目方的自测结果。
和Strata相比,先看计算口径
帖子还列出了 Strata 的成绩。在计算全部被路由专家的 exact mode 下,Strata 在 Qwen3.8-Flash-Next 上分别达到 103.6 tok/s(greedy decoding)和 98.1 tok/s(默认采样),略高于 tandem.cpp 的 97.3 和 96.1 tok/s。
Strata 的默认模式达到过 127.1 tok/s,但它会跳过排名较低的专家,以近似计算换取更高速度。tandem.cpp 和 exact mode 则计算全部被选中的专家。因此,127.1 tok/s 不能直接当作同等计算口径下的质量与速度比较。
为什么值得关注
据 Ars Technica 报道,llama.cpp 诞生于一场很快的社区接力:2023年3月10日,Georgi Gerganov 发布了能在 M1 Mac 本地运行 LLaMA 的版本;次日,已有用户把 LLaMA 7B 搬上只有 4 GB 内存的 Raspberry Pi,几天后又有人让它运行在 Pixel 6 手机上。
tandem.cpp 延续了这条思路:不等待模型缩小或显存突然变便宜,而是重新编排手边已有的 CPU、GPU 和系统内存。它真正有意思的地方,不只是某一项 97.3 tok/s 的纪录,而是尝试让“显存装不下”从硬性阻碍变成一个可以调度的问题。
局限与未知
- 所有结果均由作者提供,缺少第三方复现。速度会随硬件、量化格式、模型、采样方式、上下文长度和调参变化;“单张4090”也不等于纯 GPU 推理,它同时依赖 64 GB 系统内存和 CPU。
- 作者称该补丁适用于
llama.cpp支持的任意 MoE 模型,但公开材料只列出少数测试对象。这项泛化能力目前证据不足。 tandem.cpp是独立项目,与 ggml-org 没有隶属关系。现有材料没有披露更细的专家放置规则、调度开销及不同任务下输出质量的系统比较。