需要第二双眼睛,这个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
相似文章
Qwen 3.6 35B A3B 与 Qwen 3.5 122B A10B 对比
用户反馈,尽管基准测试表现亮眼,Qwen 3.5 122B 在多步任务上大幅领先 Qwen 3.6 35B,怀疑是量化或部署配置问题。
Qwen/Qwen3.6-35B-A3B-FP8
阿里巴巴发布了Qwen3.6-35B-A3B-FP8,这是Qwen3.6的开源权重量化变体,拥有35B参数,通过MoE激活3B,具有改进的智能编码能力和保持思维链的迭代开发特性。
在 8GB 显存和 32GB 内存上运行 Qwen3.6 35b a3b,~190k 上下文
作者分享了一种高性能的本地推理配置,使用支持 TurboQuant 的修改版 llama.cpp,在硬件受限(8GB 显存、32GB 内存)的情况下运行 Qwen3.6 35B A3B,实现了 ~37-51 tok/sec 的生成速度,并支持 ~190k 上下文。
Qwen/Qwen3.6-27B-FP8
阿里巴巴发布 Qwen3.6-27B-FP8,一款 27B 参数的 FP8 量化模型,在代理式编码与推理基准上表现强劲,现已上架 Hugging Face。
Qwen/Qwen3.6-35B-A3B
Qwen 发布 Qwen3.6-35B-A3B,一款开源权重的混合专家(MoE)模型,总参数量 35B,激活参数量 3B,在智能体编码和推理能力保持方面实现显著提升。