27B 压进 7.89GB 还能打?我把 2-bit 量化自己算了一遍

上周有条新闻从我时间线上飘过去:Underdog AI 发了 Saluki 27B,Qwen3.8-27B 的 2-bit 量化版,7.89GB,Apache 2.0。

让我停下来的是两个数:官方说 9 项基准平均保留 96%,而并行工具调用拿了 42 分,比 54GB 的原版还高——原版只有 35。

压到 2-bit 还能反超原版?这不符合直觉。我第一反应是宣传口径。但转念一想,我自己从来没真算过 2-bit 到底损失多少,凭什么判断人家在吹牛。于是我打开 Python,自己压了一遍。

信息源:IT之家 10 月 10 日报道 https://www.ithome.com/1/011/219.htm 、webainews 的评测整理 https://webainews.com/meet-the-underdog-saluki-27b-a-2-bit-qwen3-8-27b-that-beats-the-original-at-tool-calling/ 。两处对文件大小与 benchmark 的描述一致。核对日期 2026-10-13。

先把体积账算清楚

官方说 7.89GB 是"2-bit",我先反推一下这个说法站不站得住:

N = 27e9
print(7.89 * 1e9 * 8 / N)   # 每个权重占多少 bit
2.338 bits/权重
压缩比 54.00 / 7.89 = 6.84x

顺带交叉验证一下它的上游:ISTA-DASLab 的 IQ2_XS 是 8.4GB,官方标 2.50 bpw,我反推出来 2.489 bpw,对得上。这一步让我放心了——这几家给的文件大小是真实自洽的,不是拍脑袋写的。

所以"2-bit"这个说法基本诚实:7.89GB 对应 2.34 个 bit 存一个权重,比理论 2-bit(6.75GB)多出来的那 0.34 bit,是每层的 scale、imatrix 这些额外开销。

我照土办法压了一遍,模型当场去世

我先按最朴素的想法写了个量化:一张权重张量共用一个 scale,四舍五入到最近的电平。

def quantize_uniform(W, bits):
    levels = 2 ** bits
    qmax = levels // 2 - 1
    scale = np.max(np.abs(W)) / qmax
    return np.clip(np.round(W / scale), -qmax, qmax) * scale

拿一个 1024×1024 的模拟权重张量(LLM 权重近似正态,std 取 0.02)跑下去,结果是这样的:

bits权重相对 L2 误差余弦相似度
20.97470.3446
30.46460.9068
40.19900.9808
80.01100.9999

2-bit 下权重误差 97%,余弦相似度只剩 0.34。 这不是"掉点分",这是模型废了。按我这个土办法压出来的 27B,什么都干不了。

那 Saluki 凭什么说保留 96%?说明问题不在"2-bit 行不行",而在"你怎么压"。

换个思路:电平不一定要均匀分布

均匀量化有个致命伤:LLM 权重是中间高、两边稀的正态分布,绝大多数权重挤在 0 附近,却要和少数离群值共用同一套等距电平。等于把精度浪费在没人用的区间上。

我改成按权重分布的分位数取电平(等频分桶,每桶取均值作为还原值):

bits均匀量化误差非均匀网格误差误差下降
20.97470.373161.7%
30.46460.234249.6%
40.19900.148725.2%

只改了电平怎么取,2-bit 的误差就从 0.97 掉到 0.37。这就是 Saluki 上游那套 GSQ(learned scalar grid)在干的事——不是猜网格,是学出来的网格。

但 0.37 离"保留 96%"还差得远。我这一版没有 per-tensor 混合精度(RCO 按体积预算给每张量分配不同量化类型),也没有 imatrix(按重要性保护关键权重)。光靠非均匀网格不够,三件套得凑齐。 这一点我得认,我的复原只走通了第一层。

为什么工具调用反而涨了,数学却掉了 17 分

这是最让我好奇的部分。官方数据里,Saluki 的 AIME 2025 从 96.7 掉到 79.2(约保留 82%),而并行工具调用从 35 涨到 42。

我做了组对比实验:同一个量化模型,跑两类任务——

  • 选择类:从 64 个候选里挑最大的那个(工具选择本质上就是这种离散决策)
  • 数值类:要求输出向量的每个分量相对偏差都小于 5%(数学推理要的就是这个精度)
量化选择一致率数值达标率相对误差中位数
2-bit 非均匀55.70%0.00%0.3742
4-bit 非均匀82.10%0.00%0.1500

看明白了吗:数值类任务在 4-bit 下达标率依然是 0。而选择类在 2-bit 下还能保住 55%,4-bit 下 82%。

两类任务对同一份量化误差的容忍度完全不是一个量级。数学题要的是连续、精确、一步步推,误差在中间任何一步偏一点,答案就废了;工具调用要的是"从 12 个工具里选对的那个",只要偏好方向没被噪声掀翻,选出来就是对的。

我又按"模型自己拿得多准"分了个桶(margin = top1 领先 top2 的幅度):

4-bit 非均匀: margin>10%  一致率 86.38%
              margin 1~10% 一致率 76.92%
              margin<1%    一致率 67.74%

模型越笃定的选择,越扛得住量化噪声。工具调用恰恰是模型相对笃定的场景——它通常清楚该用 grep 还是该读文件。所以"压到 2-bit 反而比原版强"不是玄学,是量化把那些犹豫不决的枝枝蔓蔓削掉了,剩下的主决策反而更干脆。这跟剪枝、跟 dropout 的正则效果是同一类事。

我的判断

别把"平均保留 96%"当成万能指标。 那 96% 是 9 个基准的平均,掩盖了内部严重的分化:工具调用 +20%,数学 -18%。你拿它跑 Agent 可能是赚的,拿它做数值推理、做代码里的精确计算,就是亏的。看量化模型要看分项的保留曲线,别看平均数。

2-bit 不是"便宜的 4-bit",它是另一种东西。 我这次最大的收获是确认了一件事:从 4-bit 往下走不是线性的,2-bit 的可用性几乎完全依赖非均匀网格 + 混合精度 + 重要性矩阵这套组合拳。谁要是跟你说"我把权重四舍五入一下就是 2-bit 了",他要么是没跑过,要么是在骗你——我用 30 行代码就证明了这条路走不通(97% 误差)。

什么情况下该用它:本地跑 Agent、工具调用密集、显存紧张(8GB 卡想跑 27B)——这就是 Saluki 明确的设计目标,7.89GB 塞进一张卡还能全量 offload,是实打实的价值。

什么情况下别碰:需要多步精确推理的场景,数学、复杂代码生成、长链条的规划。它的 SWE-bench Verified 是 30,原版 33,这个差距在真实项目里会被放大。

最后说句实话:我这几组实验用的是随机正态权重,不是真的 Qwen3.8-27B。它能证明量化的趋势和量级关系,不能复现 Saluki 的真实分数——真要复现得下 7.89GB 的权重再跑一遍评测,那是另一篇文章的事。我给出的是"为什么这套说法在原理上说得通",不是"我验证了它的分数"。

如果你不想折腾本地部署,云端 API 也是条路,比如硅基流动 https://cloud.siliconflow.cn/i/pyV0lE45 (含我的邀请码 pyV0lE45,注册我有返利)。但话说回来,7.89GB 能在自己机器上跑起来的那种踏实感,是 API 给不了的。

参考:IT之家 10 月 10 日报道 https://www.ithome.com/1/011/219.htm / webainews 的 Saluki 评测整理 https://webainews.com/meet-the-underdog-saluki-27b-a-2-bit-qwen3-8-27b-that-beats-the-original-at-tool-calling/ / 模型权重页为 Hugging Face 上的 ConwayResearch/Underdog-Saluki-27B-1.0(我这网络访问超时,没能亲自打开确认,只按报道里的名字记录)。核对日期 2026-10-13,官方数据以 Underdog AI 与 Hugging Face 页面为准。

添加新评论

文章目录