MTP精简回退版助力低显存运行QWEN模型
原文:Compact Rollback MTP: a MTP version for QWEN models for those with little vRAM
我对 llama.cpp 的 MTP 做了一个修改,面向想在 16GB 显存上运行 QWEN 27B 这类模型的用户,重点是降低 MTP 的内存开销,从而在更少上下文代价下换取更快的速度。MTP 模式 / 最大草稿数(n)/ 可用上下文 / 生成速度(t/s):标准版 2 / 72,192 / 39.53;MTP Compact Rollback 5 / 77,312 / 46.39。以一个(调优得很好!)运行在 16GB 上的 IQ4 为例,你可以多获得约 5k 上下文,并享受 17.35% 的 token 生成速度提升。使用 MTP 时,你生成的推测 token 越多(n-max),速度提升的机会就越大,但你需要为这些(最新 token 未被接受时的回滚)付出显存代价,而这会减少可用上下文。现在我们大多用 dense 27B 和 A3B 来生成代码,你知道我们的接受率非常出色:80-98% 左右。MTP Compact Rollback 允许用户限制模型在显存中保留多少个即时 MTP 回滚状态。例如,--spec-mtp-cr-depth 1 --spec-draft-n-max 5 只保留一个即时回滚快照,同时仍允许 MTP 生成五个 token,用户不必为了保住可观的上下文长度而妥协降低 MTP,可以使用像 5 或 7 这样的最大 MTP 草稿深度,而上下文成本与 1 相同。只保留一个回滚的想法与本补丁中实现的 Adaptive MTP 配合得很好:--spec-draft-adaptive 会根据最近的草稿接受情况,动态调整 MTP 草稿上限(最高到 --spec-draft-n-max)。自适应推测解码在混合不同领域的 token 生成时很有用,比如可以从更高 n-max 中受益的编程会话,以及使用较低 n-max 的创意散文(在编程的长推理链中也可能出现)。这几乎不耗费计算,所以请始终开启。如何下载并应用:git clone https://github.com/ggml-org/llama.cpp,cd llama.cpp,git checkout 662a0b01,wget https://store.piffa.net/lm/bug/mtp_compact_rollback_662a0b01.patch,git apply latest_rocm_improvement_662a0b01.patch,然后照常构建 llama.cpp(可以让你的 LLM 帮忙)……(正文在此处被截断)