在24GB显存环境中运行Qwen 3.6 27B的配置:后端对比、量化选择与设置(llama.cpp, ik_llama.cpp, BeeLlama, vllm)

Reddit r/LocalLLaMA 工具

摘要

本文对比了在RTX 3090 24GB上运行Qwen 3.6 27B使用的llama.cpp后端,发现搭配IQ4_KS量化的ik_llama.cpp性能最佳(预填充1261 tok/s,解码72.9 tok/s)。

## TL;DR - 我在RTX 3090 24 GB上测试的最佳配置:`ik_llama.cpp` + `Qwen3.6-27B-MTP-IQ4_KS.gguf` - `156k` 上下文,`q8_0/q8_0` KV,MTP,视觉在CPU上 - 在 `~5.9k` 提示 + `1k` 输出上的基准测试结果:预填充约 `1261 tok/s`,解码 `72.9 tok/s` - `llama.cpp` 是一个不错的起点,BeeLlama值得测试,但 `ik_llama.cpp` 表现最好 ## 测试内容 - 上游 `llama.cpp`:简单的基线,不错的起点 - `beellama.cpp`:理论上很有前景,但在我的环境下无法重现预期速度 - `ik_llama.cpp`:最佳解码/预填充,最佳显存适配 我还花时间测试了 `vLLM` / `club-3090`,但在此轮测试中未完成对等的干净对比,因此未将其列入表格。我们观察到响应速度约 `78 tok/s`,但高上下文显存不足(OOM)的断崖过于不稳定,所以暂时放弃,待该问题修复。近期未重新测试,但该仓库仍将单卡长上下文问题标记为未解决。 ## 基准测试 单次聊天补全任务: - 提示长度:约 `5.9k` 令牌 - 输出长度:`1024` 令牌 - 任务类型:对本地配置文件的代码审查/迁移笔记 因此主要测试: - 中等大小真实提示的预填充速度 - 持续 `1k` 令牌生成的解码速度 这并非最佳情况下的tok/s,但更接近实际使用。 ## 我所保留的配置 这是作为默认配置保留的方案: - 后端:[`ikawrakow/ik_llama.cpp`](https://github.com/ikawrakow/ik_llama.cpp) - 当前测试构建:`4507 (c35189d8)` - 模型:[`ubergarm/Qwen3.6-27B-GGUF`](https://huggingface.co/ubergarm/Qwen3.6-27B-GGUF) - 直接模型文件:[`Qwen3.6-27B-MTP-IQ4_KS.gguf`](https://huggingface.co/ubergarm/Qwen3.6-27B-GGUF/blob/main/Qwen3.6-27B-MTP-IQ4_KS.gguf) 高层启动参数: - `--ctx-size 156000` - `--cache-type-k q8_0` - `--cache-type-v q8_0` - `--flash-attn on` - `--multi-token-prediction` - `--draft-max 4` - `--draft-p-min 0.0` - `--merge-qkv` - `--merge-up-gate-experts` - `--cache-ram 32768` - `--ctx-checkpoints 32` - `--reasoning on` - `--reasoning-format deepseek` - `--chat-template-kwargs '{"preserve_thinking":true}'` - `--no-mmproj-offload` 备注: - `ik_llama.cpp` 内置的 MTP 比其他推测性路径效果更好 - `q8_0` KV 质量不错;可以选择 `q4`,但使用 `IQ4_KS` 时有充足的显存余量 ## 为什么选择 `IQ4_KS` - 比 Unsloth 的 `UD-Q4_K_XL` 小得多 - 质量足够高,我没有感觉到明显的损失 - 在 `24 GB` 显卡上,一旦你开始扩展上下文和合理的 u-batch 大小,节省的 GiB 就很重要 - 公平地说,可能还有更高量化的空间,比如 `q5`;我尚未测试 - [`Qwen-3.6 量化讨论 #1663`](https://github.com/ikawrakow/ik_llama.cpp/discussions/1663) TLDR: - `Qwen 3.6` 在 `IQ4_KS` 下量化效果很好 - `ikawrakow` 测得 `IQ4_KS` 非常接近甚至优于 `UD_Q4_XL` - Unsloth 的 `UD-Q4_K_XL` 需要额外约 `2.8 GiB` 才能达到相近表现 如果你想了解量化系列本身的背景: - [`新量化类型 IQ2_K, IQ3_K, IQ4_K, IQ5_K 讨论 #8`](https://github.com/ikawrakow/ik_llama.cpp/discussions/8) ## 视觉 - 默认将投射器放在CPU上:`--mmproj ...` + `--no-mmproj-offload` - 如果想加快图像处理,可以将其移到GPU,但会多占用约 `1.5 GiB` 显存 - 如果显存不足,请降低上下文或切换到 `q4` KV ## GPU 相关 这是在Linux上运行,桌面使用核显,RTX 3090仅用于LLM。 - 功耗限制:`330 W` - 显存超频:`+600` - 降压:稳定在约 `1875 MHz @ 868 mV`(`LACT` 现在有曲线编辑器) ## 一些未能使默认配置更好的实验 - `ik_llama.cpp` 上的 `--spec-autotune`:在此工作负载上没有明显的提升 - `--mtp-requantize-output-tensor q6_K`:有时更快,但不稳定,且额外消耗约 `1 GiB` 显存,所以没有保留 - BeeLlama DFlash 精度快速入门:加载正常,但比我预期的慢得多 - 上游 `llama.cpp` MTP 路径:基线不错,但在我的测试中比 `ik_llama.cpp` 慢 BeeLlama 和 `vLLM` 仍然值得探索。我只是没有找到一个能在我工作负载上击败 `ik_llama.cpp` 配置的方案。 ## 结果 以下是来自同一真实提示 / `1024` 令牌输出基准测试的有用对比点。 | 后端 | 模型/量化 | 推测路径 | 上下文 | KV缓存 | 预填充 tok/s | 解码 tok/s | 耗时 | 备注 | | --- | --- | --- | ---: | --- | ---: | ---: | ---: | --- | | `ik_llama.cpp` | `Qwen3.6-27B-MTP-IQ4_KS` | 内置 MTP | `156k` | `q8_0/q8_0` | `1260.95` | `72.93` | `18.79s` | 最好的全局默认配置 | | `llama.cpp` 上游 | `Qwen3.6-27B-UD-Q4_K_XL` | `draft-mtp` | `32k` | `q4_0/q4_0` | `1247.65` | `51.20` | `24.80s` | 最简单的起点 | | `llama.cpp` 上游调优 | `Qwen3.6-27B-UD-Q4_K_XL` | `draft-mtp` | `32k` | `q8_0/q8_0` | `1242.81` | `56.66` | `22.88s` | 旧版标志有帮助,但仍较慢 | | `beellama.cpp` | `Q5_K_S` + DFlash `Q4_K_M` | DFlash | `122.8k` | `turbo4/turbo3_tcq` | `1117.66` | `36.32` | `33.55s` | 纯文本快速入门风格运行 | 测试过的标志: - `--spec-autotune` 在此工作负载上未产生更好的结果 - `--mtp-requantize-output-tensor q6_K` 偶尔有提升,最佳运行中解码约 `+5 tok/s`,但不够稳定,不值得额外占用 `~1 GiB` 显存 ## 标志对比 以下是影响最大的高层配置差异。 | 后端 | 量化方案 | 草稿/推测模式 | 关键草稿参数 | KV缓存 | 其他重要标志 | | --- | --- | --- | --- | --- | --- | | `ik_llama.cpp` | 目标 `IQ4_KS` MTP | 内置 `--multi-token-prediction` | `--draft-max 4`, `--draft-p-min 0.0` | `q8_0/q8_0` | `--merge-qkv`, `--merge-up-gate-experts`, `--ctx-checkpoints 32`, CPU `mmproj` | | `llama.cpp` 上游 | 目标 `UD-Q4_K_XL` | `draft-mtp` | `--spec-draft-n-max 6`, `--spec-draft-p-min 0.75` | `q4_0/q4_0` 默认,`q8_0/q8_0` 调优 | `--flash-attn on`, `--jinja` | | `beellama.cpp` | 目标 `Q5_K_S`, 草稿 `Q4_K_M` | `dflash` | `--spec-dflash-cross-ctx 1024` | `turbo4/turbo3_tcq` | `--kv-unified`, `-b 2048`, `-ub 256`, 我的运行中仅文本 | ## 链接 - `ik_llama.cpp`: https://github.com/ikawrakow/ik_llama.cpp - `ExLlamaV3`: https://github.com/turboderp-org/exllamav3 - BeeLlama: https://github.com/Anbeeld/beellama.cpp - BeeLlama Qwen 3.6 快速入门: https://github.com/Anbeeld/beellama.cpp/blob/main/docs/quickstart-qwen36-dflash.md - `club-3090`: https://github.com/noonghunna/club-3090 - `IQ4_KS` with MTP: https://huggingface.co/ubergarm/Qwen3.6-27B-GGUF/blob/main/Qwen3.6-27B-MTP-IQ4_KS.gguf - `Qwen-3.6 quants` 讨论: https://github.com/ikawrakow/ik_llama.cpp/discussions/1663 - `IQ4_KS` 量化系列讨论: https://github.com/ikawrakow/ik_llama.cpp/discussions/8 *** 这是我目前找到的最佳 `24 GB` 配置,但发展很快,我认为这还不是最终定论。本帖的目的是对比单 3090 / `24 GB` 的实际结果:后端选择、量化、标志,以及哪些在实际使用中保持稳定。我希望这能成为 `24 GB` 显卡的有用参考帖:什么是有效的,什么是崩溃的,以及什么真正值得日常运行。我尚未测试 `ExLlamaV3`,可能还有其他更好的配置。另外,感谢所有构建这些工具的人:后端作者、量化制作者、模板调优者,以及那些做枯燥的调试工作、使本地LLM可用的朋友。
查看原文

相似文章

QWEN3.6 + ik_llama 快得离谱

Reddit r/LocalLLaMA

用户报告成功部署 Qwen 3.6 与 ik_llama 量化,在消费级硬件(16GB VRAM、32GB RAM)上实现 200k 上下文窗口下 50+ token/秒。

Qwen3.6 27B 在 vLLM 中的表现比在 llama.cpp 中更差

Reddit r/LocalLLaMA

一名用户报告称,Qwen3.6-27B 模型在使用 llama.cpp 时比使用 vLLM 表现更好且更可靠,并指出尽管进行了大量配置,vLLM 仍出现工具调用错误和“被切除脑叶”的行为。

48GB VRAM + Qwen 3.6 27B 的最佳设置

Reddit r/LocalLLaMA

一位用户分享了在双GPU配置(RTX 4090 + RTX 3090)上使用llama.cpp运行Qwen3.6 27B (Q8_0)的优化设置,在250k上下文下实现了75-100 t/s和1500 pp。