llama.cpp 官方 DFlash2 投机解码示意

不用魔改、不用双卡、不用 SGLang——llama.cpp 官方版本直接支持 DFlash2 投机解码,单卡 7900XTX 开箱即用。

背景

7900XTX 的极致优化帖子里,大部分要么魔改 llama.cpp,要么上双卡,要么基于 SGLang。想"开箱即用"的人选择很少。

转机来自 llama.cpp 的 PR #27342(add DFlash2 support: local convolution + candidate selector),8 月底已 merge。官方版本直接支持 DFlash2,不需要任何魔改。

配置

项目 规格
GPU AMD 7900 XTX 24GB
CPU AMD Ryzen 5 9600X
内存 32GB DDR5
系统 Ubuntu 26.04
主模型 Qwen3.8-27B UD-IQ4_XS(unsloth)
Draft 模型 DFlash2-Q4_K_M(z-lab)

编译与启动

git clone https://github.com/ggml-org/llama.cpp
cmake -B build -DGGML_VULKAN=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j$(nproc) --clean-first

llama-server \
  -m /models/Qwen3.8-27B-UD-IQ4_XS.gguf \
  -md /models/Qwen3.8-27B-DFlash2-Q4_K_M.gguf \
  --spec-draft-n-max 4 \
  -ngl 99 -fa on -np 1 \
  -c 163804 -ctk q8_0 -ctv q8_0 \
  -b 2048 -ub 1024 \
  --host 0.0.0.0 --port 8080

DFlash2 是什么

DFlash2 是本地卷积 + 候选选择器的投机解码方案:用一个轻量 Draft 模型快速"猜"接下来的 4-7 个 token,主模型一次性验证。猜对了就直接接受,不用逐个生成——相当于把"一个一个吐字"变成"一批一批验证"。

参数选择

--spec-draft-n-max 取 3/4/5/6/7 分别测试,5 最快但 4 命中率最高,综合选了 4。

为什么值得看

这是"不折腾"路线的里程碑:单卡 + 官方版本 + 投机解码,三个之前互相矛盾的条件第一次同时满足。