Qwen3.8-27B在RTX 5060 Ti 16GB上的测试:IQ4 vs Q8,64K上下文,MTP,视觉与代理基准
Qwen3.8-27B在RTX 5060 Ti 16GB上的测试:IQ4 vs Q8,64K上下文,MTP,视觉与代理基准
我一直在测试Qwen3.8-27B,作为我目前在RTX 5060 Ti 16GB上运行的Qwen3.5-9B的潜在替代品。目标不仅仅是最大令牌数/秒,而是在单块16GB GPU上实现实用的上下文容量、可靠的工具调用、多轮行为以及视觉能力,以实现真正的代理使用。它并不完美,但我已经使用了几天,结果非常令人期待。我的应用程序还需要视觉能力,而这也会占用显存,因此也包含在测试中。Unsloth UD3是进行测试的催化剂——看起来很有希望,因为他们声称在相同量化级别下质量更高。其余内容由LLM生成并手动编辑,所以如果有人说是垃圾,我接受😄 我可不会坐在那里打所有字😄 机器(运行Ubuntu)有64GB内存,但这关系不大,因为目标是几乎完全使用GPU。我希望这对社区的一些人有所帮助。
测试系统
* GPU: RTX 5060 Ti 16GB
* 运行时: llama.cpp build 10520
* 启用Flash Attention
* 尽可能完全GPU卸载
* 单槽,无并发
* Q4_0 KV缓存
* 比较的模型:
* jpetrina Qwen3.8-27B IQ4_XS-pure
* Unsloth Qwen3.8-27B UD-IQ4_XS
* Unsloth Q8_0作为短上下文质量基线
* Qwen3.5-9B NVFP4作为现有模型
性能与显存
| 配置 | 上下文 | 视觉 | 空闲显存 | 短上下文生成 |
|---|---|---|---|---|
| jpetrina IQ4_XS-pure, MTP-1 | 64K | 否 | 15,188 MiB | 46.9 tok/s |
| Unsloth UD-IQ4_XS, 无MTP | 32K | 否 | 13,764 MiB | 27.4 tok/s |
| Unsloth UD-IQ4_XS, MTP-1 | 64K | 否 | 14,918 MiB | 45.6 tok/s |
| Unsloth UD-IQ4_XS, MTP-1 | 64K | F16 mmproj | 15,680 MiB | 45.4 tok/s |
Unsloth主GGUF已经包含MTP张量。加载单独的MTP GGUF是不必要的,并且额外消耗了大约768 MiB。
在填充约55K令牌的上下文时,Unsloth模型实现了:
* 提示处理:738.7 tok/s
* 预填充后生成:31.3 tok/s
这使得64K对于交互式自主代理是可用的,尽管性能会随着KV缓存填充而自然下降。
视觉
F16视觉投影器工作正常,包括对报纸图像进行OCR式读取。1,024个图像令牌分配对于该测试是足够的。
然而,64K上下文加上MTP加上F16投影器只留下136–208 MiB的空闲显存。因此,我会使用单独的配置文件:
* 文本代理:64K上下文,MTP-1
* 视觉:较小的上下文,按需加载
试图同时保持最大文本上下文、MTP和GPU视觉加载,对于16GB限制来说过于接近舒适操作范围。
量化保真度
我使用16个WikiText-2样本(512令牌上下文)比较了两种IQ4变体与保存的Q8 logits。
| 量化 | 困惑度 | 与Q8的均值KLD | 相同最高令牌 | Log-PPL相关性 |
|---|---|---|---|---|
| jpetrina IQ4_XS-pure | 7.4958 | 0.02359 | 92.11% | 99.51% |
| Unsloth UD-IQ4_XS | 7.3789 | 0.01800 | 93.06% | 99.63% |
| Q8_0基线 | 7.3858 | — | — | — |
Unsloth IQ4量化与Q8非常接近,并且在这些低级保真度测量中明显强于其他IQ4量化。
代理与工具调用结果
| 模型 | BFCL单轮 | BFCL多轮 | 支持场景 |
|---|---|---|---|
| Qwen3.5-9B NVFP4 | 56/100 | 29/80 | 5/6 |
| jpetrina Qwen3.8 IQ4 MTP-1 | 50/100 | 40/80 | 6/6 |
| Unsloth Qwen3.8 UD-IQ4 | 49/100 | 38/80 | 6/6 |
所有模型还通过了额外的8/8原生工具调用冒烟测试。
27B模型在现实多轮支持工作流中明显更好。这些工作流包括:诊断后再变异、授权重启与验证、依赖工具调用、缺失参数澄清、提示注入抵抗,以及从大约55K令牌历史中检索。
9B模型在工具调用和推理方面出现了多次失败(它还在思考痕迹中过于冗长,消耗了太多令牌——它有一个120K上下文大小)。两种27B变体都正确处理了这些情况。
有趣的是,9B在单轮BFCL子集上得分仍然更高。27B的优势主要体现在有状态的多步工作中,而不是孤立的函数调用问题。
结论
* Qwen3.8-27B IQ4在16GB RTX 5060 Ti上的实际甜点是64K文本上下文加MTP-1。
* 短上下文生成大约为45–47 tok/s。
* 在约55K令牌预填充后,生成保持在约31 tok/s。
* Unsloth UD-IQ4_XS具有最佳的测量保真度,并且在测试样本上实际上类似于Q8。
* 更好的困惑度和logit保真度并未自动产生更好的代理分数。
* jpetrina量化在多轮代理评估中以40/80对38/80微弱胜出,因此目前是最佳选择。
* Unsloth量化是一个强有力的替代方案,可能更适合一般文本生成。
* 视觉功能可用,但应在16GB卡上使用单独的较小上下文配置文件。
* Q8对于此卡的全GPU操作不实用,仅用作部分CPU卸载的质量控制(以查看量化和其他因素导致的质量损失)。
这些是种子子集和本地用例场景,并非官方BFCL排行榜提交。结果来自单块GPU、单推理槽,无并发。
—— 高票评论(帖子共30条讨论) ——
[+10] u/Additional-Ordinary2: 64K对于编码是不可用的。你至少需要140K
[+5] u/tsangberg: 你可以在CPU/RAM上运行视觉。速度较慢,但除非你的流水线需要快速视觉,否则这可能是更好的解决方案。--no-mmproj-offload
[+3] u/tecneeq: 我认为获得第二块5060 Ti 16GB、Q5、张量拆分、MTP和大上下文将是下一个合理的步骤。
[+2] u/anon1880: 你试过使用Q8而不是Q4的KV缓存吗?
[+2] u/Pablo_the_brave: 你应该试试ik_llama.cpp https://huggingface.co/cHunter789/Qwen3.8-27B-i1-IQ4_KS_KT-GGUF
[+2] u/DigitalguyCH: 谢谢,我终于可以在我的20GB卡上获得不错的上下文了
[+1] u/chibri_ingress: 你能分享一下你首选配置的命令行配方吗?我很想在自己的机器上试试,但希望不必重新发明你已经做好的非常精致的轮子。😄
[+1] u/pefman: 对于做前端工作并让LLM看到错误而不是解释,这对我来说是一个改变游戏规则的事情。
[+1] u/AiventyxInfra: 会话内8%的差异,跨会话21%——一次运行不是一个数字
[+1] u/ea_man: 尝试使用--fit-target 30并且不声明--context,这应该会给你更多上下文。-ub 128
另外,如果你愿意深入llama.cpp源代码,MTP方面还有很多可以优化的地方。
如果不能使用更高的MTP,添加NGRAM。
你是无头运行还是至少使用软件渲染?
[+1] u/Equivalent_Bit_461: >q4缓存
它已经结束了