需要第二双眼睛,这个Qwen3.6 27B量化方案总是用更少的思考且正确
摘要
作者分享了一个Qwen3.6 27B的量化方案,该方案使模型使用显著更少的思考令牌,同时仍然产生正确的答案,从而在数学基准测试中实现更快的推理。
好的,听我说。这一切始于我试图理解为什么这个Qwen3.6 27B INT8 AutoRound (https://huggingface.co/Minachist/Qwen3.6-27B-INT8-AutoRound/tree/main) 方案比我尝试过的任何其他Qwen3.6 27B量化方案都要好得多。在一些个人Rust + Bevy基准测试中,它始终能生成更好的代码和游戏。然后我注意到该模型的思考量要少得多。INT8模型很棒,但vLLM的VRAM使用更高。由于llama-cpp(在PR中)有MTP,我想我也可以量化这个并添加MTP。有趣的是,INT8 AutoRound和我的GGUF量化似乎在更快得到答案方面都优于UD Q8 K XL。我选择像Minachist一样保留相同的BF16层。对于我的正式测试,我使用AIME数学问题以及Opus 4.7为我创建的自定义数学问题。新的量化大小差不多,只比UD Q8 K XL稍大,但差异却惊人地明显。我想在BF16上运行相同的测试将揭示这种行为是否真的更优。也可能只是更多思考实际上更好,但我的经验告诉我相反。尽管如此,以下是一些结果。我的测试针对这些量化(注意它们包含MTP层,所以稍大):
* Q8_0 28595762432
* 磁盘大小 29047084160 (28.3 GiB)
* Q8 K XL
* 磁盘大小 35776484480 (34.9 GiB)
* 这个量化我试图逐层复制INT8 AutoRound方案。
* 磁盘大小 37144875200 字节 (36.2 GiB)
那么,更大的模型表现更好真的令人惊讶吗?不。然而非常有趣的是,思考量大幅减少。因此,运行更大量化所损失的KV缓存空间通过思考时少用20%的令牌得以弥补。以下是我进行的一些运行:注意所有运行使用相同的种子和采样参数。多次运行(3次)产生相同的输出。KV缓存为bf16/bf16。--temp 0.6 --top-p 0.95 --top-k 20 --min-p 0.0 --presence-penalty 0.0 --repeat-penalty 1.0 --seed 1337
问题1(数学,AIME风格)方程 \\(x\^3-7x\^2+14x-8=0\\) 的根为 a,b,c。如果 \\(\\frac1{a\^2+1}+\\frac1{b\^2+1}+\\frac1{c\^2+1}=\\frac mn\\) 化为最简分数,求 m+n。
Llama CPP
* Q8
* 16,234个令牌,3分48秒,70.90 t/s(记住这是MTP,2个令牌)
* UD Q8 K XL
* 16,001个令牌,4分00秒,66.24 t/s
* 自定义Q8
* 9,671个令牌,2分39秒,60.60 t/s,约40%更少思考
vLLM
* Minachist INT8 AutoRound
* 10,200个令牌,2分38秒,34.2 t/s(此处未使用MTP)
问题2(数学,AIME风格)有多少有序正整数对 (x,y) 满足 \\(x\^2-y\^2=2026\\)?
Llama CPP
* Q8
* 7,598个令牌,1分44秒,72.76 t/s
* 奇怪的是Q8甚至表现更好
* 自定义Q8
* 5,666个令牌,1分33秒,60.49 t/s
* 约59%更少思考
* UD Q8 K XL
* 13,596个令牌,3分29秒,65.02 t/s
vLLM
* Minachist INT8 AutoRound
* 8,931个令牌,34.4 t/s(此处未使用MTP)
我还运行了其他一些数学测试,但你明白了。这个量化思考少得多。对于任何想复现的人:我下载了HF安全张量并转换为单个GGUF,然后使用llama CPP量化。这是尝试所需的最低量化:
!将safetensor转换为GGUF
/home/user/llm/llama.cpp/convert_hf_to_gguf.py /home/user/llm/models/Qwen3.6-27B/BF16 --outfile /home/user/llm/models/Qwen3.6-27B/BF16/Qwen3.6-27B-BF16.gguf
!量化同时保留BF16层
/home/user/llm/llama.cpp/build/bin/llama-quantize \
--tensor-type token_embd=bf16 \
--tensor-type output=bf16 \
--tensor-type output_norm=bf16 \
--tensor-type post_attention_norm=bf16 \
--tensor-type attn_q_norm=bf16 \
--tensor-type attn_k_norm=bf16 \
--tensor-type attn_qkv=bf16 \
--tensor-type attn_gate=bf16 \
--tensor-type ssm_a=bf16 \
--tensor-type ssm_alpha=bf16 \
--tensor-type ssm_beta=bf16 \
--tensor-type ssm_conv1d=bf16 \
--tensor-type ssm_dt.bias=bf16 \
--tensor-type ssm_norm=bf16 \
--tensor-type ssm_out=bf16 \
/home/user/llm/models/Qwen3.6-27B/BF16/Qwen3.6-27B-BF16.gguf \
/home/user/llm/models/Qwen3.6-27B/BF16/Qwen3.6-27B-Q8-BIGBOY.gguf \
q8_0
将以下层添加到之前的量化中对我来说没有任何改进(我认为节省了约1GB):
--tensor-type attn_norm=bf16 \
--tensor-type attn_output=bf16 \
--tensor-type attn_q=bf16 \
--tensor-type attn_k=bf16 \
--tensor-type attn_v=bf16 \
它可能好的原因:
* 我们使用的是BF16而不是F16
* 它实际上更大,因此更多层保留为原生格式
* 我们保留为BF16的层很重要
一些局限性:
* 每个模型每个问题我只运行了3次测试
* 我应该用另一个种子重新运行测试
* 我没有运行基准测试套件。那会很有帮助,但我们也需要注意Qwen在CoDeC基准测试中显示已被过度优化。
下一步:
* 我将用另一个种子重新运行测试
* 租用RunPod运行相同种子和采样的BF16
相似文章
Qwen3.6-27B 推测解码在更大量化下性能提升
Qwen3.6-27B 模型在使用更大量化级别时,推测解码性能提升,推理效率增强。
Qwen 3.8 27b 即使在 Q3_xxs 下也很强大
用户发现 Qwen 3.8 27b 在 Q3 量化下对编码任务非常高效,推理速度快,超越了之前的模型,尽管在日常对话中存在一些小问题。
Qwen 3.8 27B 表现优异,但默认启用过度推理模式
Qwen 3.8 27B 是阿里巴巴通义千问实验室推出的一款强大的开源270亿参数多模态大语言模型。它在基准测试中表现突出,但被批评默认启用过度推理模式,这在消费级硬件上拖慢了运行速度。
我的Qwen3.8-27B任务感知量化在15%的体积下达到了BF16推理性能的99%。
一种名为TAK的新任务感知量化方法,在显著减小模型尺寸的情况下,实现了接近BF16的推理性能,在多种AI模型上超越了Unsloth。
bottlecapai/ThinkingCap-Qwen3.6-27B-GGUF
ThinkingCap-Qwen3.6-27B 是 Qwen3.6-27B 的精调版本,平均使用少 50% 的思考令牌,同时保持答案质量。此仓库提供 GGUF 量化格式,用于在 llama.cpp 上进行本地推理。