Llama.cpp DSpark PC Tree 分支(速度提升高达3%-29.5%!)
摘要
在一个 llama.cpp 分支中实现了 DSpark PC Tree,根据基准测试结果,在 Qwen 3.0 模型上显示了推理速度最高提升29.5%的性能优势。
大家好,我实现了 DSpark PC Tree(基于父节点的推测草稿树)。这是对以下研究论文的实现:https://arxiv.org/abs/2608.02123 未经官方关联,我只是发现了它并实现了它。需要预先说明:这只是一个初步尝试,目前尚未收到任何反馈!以下是我使用 Qwen 3.0 得到的一些数据:
GPU: SM120 (RTX5090)
llama-bench 组合配置
Tok/s vs 纯基线 vs DSpark n3 接受率
━━━━━━━━━━━━━━━━━━━ ━━━━━━━━ ━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━
纯基线 94.27 1.00x -39.43% 无
─────────────── ──────── ────────── ────────────── ────────────
DSpark n2 138.83 1.47x -10.80% 55.66%
─────────────── ──────── ────────── ────────────── ────────────
DSpark n3 155.64 1.65x 基准线 47.19%
─────────────── ──────── ────────── ────────────── ────────────
PCTree k2/n8 152.29 1.62x -2.15% 58.83%
─────────────── ──────── ────────── ────────────── ────────────
PCTree k3/n16 159.00 1.69x +2.16% 67.87%
─────────────── ──────── ────────── ────────────── ────────────
PCTree k4/n22 157.99 1.68x +1.51% 72.16%
k3/n16 在11个类别中有9个击败了线性 DSpark。其最大增益出现在摘要任务,提升+6.56%。只有 RAG (-0.57%) 和多语言 (-1.35%) 略微偏向线性方案。k4/n22 接受了更多草稿,但无法弥补更大的验证器批处理开销。
基准测试条件:
SPEED-Bench 定性测试,全部11个类别,每类别4个样本,44/44 完成且零失败,512个输出 token,温度为0,8K上下文,单槽位,BF16 目标与草稿。
仅 CPU 的 llama-bench,12线程,三次重复:
模型 pp512 tg128
━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━
BF16 76.59 +/- 0.33 tok/s 3.82 +/- 0.02 tok/s
─────── ────────────────────── ──────────────────────
Q8_0 76.07 +/- 0.79 tok/s 7.12 +/- 0.01 tok/s
PCTree 启动参数:
--spec-type draft-dspark --spec-draft-n-max 3 --spec-dspark-pctree --spec-dspark-pctree-k 3 --spec-dspark-pctree-n 16
完整命令示例:
llama-server.exe `
-m Qwen3-8B-BF16.gguf `
-md dspark-Qwen3-8B-BF16.gguf `
--spec-type draft-dspark `
--spec-draft-n-max 3 `
--spec-dspark-pctree `
--spec-dspark-pctree-k 3 `
--spec-dspark-pctree-n 16 `
-ngl all `
-ngld all `
-c 8192 `
--parallel 1 `
--temp 0 `
--jinja `
--host 127.0.0.1 `
--port 8080
如果你们能用一些模型测试一下,并告诉我效果如何,那就太酷了。有点希望 llama.cpp 社区有人能看看,但似乎没人感兴趣 :P 我测试了 Qwen 3.8 27B Q4,可惜 k2-4 效果反而变差了。我很有兴趣看看 DS Flash 会表现如何。你可以在下面我创建的 issue 中阅读更多信息。
仓库地址:https://github.com/getraid/llama.cpp-dspark-pctree
相关研究 issue:https://github.com/ggml-org/llama.cpp/issues/27499
相似文章
Llama.cpp PR 带来 8% 速度提升
一个 llama.cpp PR 将采样从 CPU 移至 GPU,在 RTX 5090 上为 Qwen3.6-35B 推理带来 8% 的 token 速度提升,在 Tesla P40 上约为 4%。
新功能:Llama.cpp 自适应推测,加速推理
Llama.cpp 引入自适应推测,可动态调整令牌预测以实现更快的推理速度,最高可提升50%的性能,尤其适用于Qwen3.8等模型。
一个 llama.cpp PR 让 Q2_0 在 x86 CPU 上提速 3.0–3.6 倍,8B 解码从 2.39 升至 8.20 tok/s
一个 llama.cpp 拉取请求为 Q2_0 × Q8_0 点积添加了 x86 VNNI 实现,在 Bonsai 模型上实现了 3.0–3.6 倍的纯 CPU 加速,内核级逐位精确,且 token 一致性达 99.2%。
BeeLlama.cpp:支持推理和视觉的先进 DFlash 与 TurboQuant。在 RTX 3090 上以 200k 上下文运行 Qwen 3.6 27B Q5,速度比基线快 2-3 倍(峰值 135 tps!)
BeeLlama.cpp 是一个专注于性能的 llama.cpp 分支,引入了 DFlash 投机解码和 TurboQuant KV 缓存压缩技术,使得在消费级硬件上也能高速本地运行像 Qwen 3.6 27B 这样的大型模型。
spec: 添加DSpark推测解码 by wjinxu · 拉取请求 #25173 · ggml-org/llama.cpp
通过拉取请求向llama.cpp添加DSpark推测解码支持,提升推理性能。