模型忘东西,是分批忘的

Llama-3 的 70B 版本,16bit 精度下要 140GB 显存起步。把权重全部压到 4bit,只剩 35GB,一台游戏本就能装下。每个参数能表达的数值从几万种砍到十六种,精度砍掉四分之三。

preview _18.svg 模型忘东西,是分批忘的

先说一个反直觉的事实。

Llama-3 的 70B 版本,16bit 精度下要 140GB 显存起步。把权重全部压到 4bit,只剩 35GB,一台游戏本就能装下。每个参数能表达的数值从几万种砍到十六种,精度砍掉四分之三。

按直觉,模型应该「傻掉四分之三」。实际呢?日常对话、写作、翻译,大多数人试不出区别。

这不是魔法,也不是「模型其实没那么复杂」。恰恰相反,它说明模型内部有一种非常不均匀的结构。今天拆一下这件事,以及它照出来的那张「承重图」。

知识不住在一个参数里

一台计算器,某个数字算错一点,结果就是错的。神经网络不是这种机器。它的知识分散在几亿、几百亿个参数之间,没有一个参数单独负责「记住」某件事。

所以把很多参数的精度砍掉,误差是互相抵消的。这个参数歪一点,那个参数歪一点,合起来的输出几乎没变。像一支合唱团:少数人音准差一点,整体还是那首歌。冗余,是量化的本钱。

但「不重要」不等于「可以乱动」

冗余是本钱,不是无边无际的本钱。参数单独看都不要紧,它们之间的结构才要紧。有些通道像承重墙:平时看不出来,一砸全楼响。

这有实验。MIT 韩松组的 AWQ 论文(MLSys 2024 最佳论文)里有一张对照表,做的是 OPT-13B 的 3bit 压缩。先解释一下表里的尺子:困惑度,大致可以理解为模型对下文的犹豫程度,越低越稳。OPT-13B 全精度是 10.13。全部压到 3bit,涨到 46.04——模型基本废了。

现在只给千分之一的权重通道保留全精度,其余照压 3bit。怎么挑这千分之一?

按权重的数值大小挑。数字大的通道应该是「最重要的」吧?结果困惑度 46.07,和完全不挑几乎一样,白保。

按激活分布挑。看哪些通道在真实输入里每次都被用到。同样千分之一,困惑度 10.51,几乎回到 10.13。

同样的预算,同样的数量,选谁决定生死。「重要的不是哪个数大,是哪个通道真的在干活」——这是 AWQ 的核心发现,也是很多人对模型内部结构的直觉盲区。

另一条路:不挑谁保护,挑误差去哪

GPTQ 的思路不同。它量化每个权重时,产生的误差不留在原地,而是让还没量化的邻居帮忙补偿。补多少、往哪补,由二阶信息算出来——可以理解成它知道每个权重动一下,别的权重会怎么连锁反应。

效果:1750 亿参数的模型,用大约四个 GPU 小时压到 3bit,精度损失可忽略;原来要五张 80GB 显卡才装得下的 OPT-175B,单张 A100 就能跑起来。

GPTQ 和 AWQ 策略完全不同,但有一个共同点:误差不平均地撒。一个把误差赶到能被抵消的地方,一个把精度留给挨不起误差的地方。

模型里真有钉子户

不均匀性最直接的证据来自 LLM.int8()。研究者发现大模型里有一小撮特征维度,幅值是别的维度的几十倍,而且系统性地出现在固定位置——大约从 67 亿参数规模开始出现。这些维度动一下,注意力输出就崩。

解法粗暴有效:这一小撮维度保留 16bit,其余 99.9% 的乘法全部用 8bit。1750 亿参数模型,零精度损失。

三个方法,三条证据线,指向同一件事:模型内部不是均匀的一锅粥。绝大多数位置宽容,极少数位置是钉子户。

1.58 bit 是另一回事

那到底能压到多低?有个漂亮的下限案例:BitNet b1.58。每个权重只有三个取值——-1、0、1,平均下来 1.58 bit,比 4bit 狠得多。它在困惑度和任务表现上,能匹配同尺寸、同训练量的全精度模型。

但注意前提:它是从零开始就在三值世界里长大的,不是把训好的模型压下去。这回答了一个隐藏的问题:模型能承受多狠的压缩,取决于精度是训练时就有的预算,还是事后被拿走的资产。

事后硬压到 2bit 是另一种困难,需要码本、旋转这类更精巧的手术才站得住。同样的比特数,出身不同,命运不同。

所以,到哪它才第一次忘记

回到开头的问题:精度拿走到哪,模型才真正开始忘记自己学过的东西?

2025 年有一篇系统研究(Quantization Meets Reasoning),专门测了量化对数学推理的影响。结论是:不存在一条统一的「忘记线」。日常任务在 4bit 下几乎无损,但数学推理先掉——Llama-3 上最高掉了 32.39%,平均 11.31%,伤得最重的是数值计算和推理规划。困惑度往往还很好看,某些能力已经先退场了。

更有意思的是恢复实验:用 545 个任务样本微调 3 分钟,推理能力就能基本恢复到全精度水平。模型不是「忘了」,是找答案的路径变粗糙了。知识还在,路标磨损了。

所以量化这台机器最有意思的副产品,不是省了多少显存。它是目前最便宜的一台断层扫描仪:每压一档,就照出一张图——哪些能力住得浅,哪些住得深,哪千分之一的通道是整栋楼的承重墙。

下一张 4bit 权重表里,那些被 16bit 供起来的通道,就是这张模型真正的结构图。工程师做的事很朴素:不问哪里值钱,问哪里碰不得。

——

信源:AWQ(MLSys 2024,arXiv 2306.00978,对照数据出自其 Table 1,w3-g128 设置);GPTQ(ICLR 2023,arXiv 2210.17323);LLM.int8()(arXiv 2208.07339);BitNet b1.58(arXiv 2402.17764);Quantization Meets Reasoning(arXiv 2501.03035)。

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(1)

Q

AWQ 保护的那1%,是缩放出来的,不是保留下来的

AWQ 那张对照表我核了,四个数全对:OPT-13B 全精度 10.13,全压 3bit 涨到 46.04,按权重幅值挑千分之一是 46.07,按激活挑千分之一是 10.51。三倍的差距确实扎眼。

但有个机制问题得纠一下。帖里写"只给千分之一的权重通道保留全精度,其余照压 3bit"。

AWQ 的真实做法不是混精度保留。论文摘要原文:「保护只有 1% 的显著权重就能大幅降低量化误差……为了识别显著的权重通道,我们应当参考激活分布,而不是权重。」然后是那句关键的数学推导:为了避免硬件低效的混精度量化,他们数学推导出缩放显著通道可以降低量化误差,于是用一个等价变换把这些通道放大,再统一按 4bit 量化。

也就是说:不是"给它更高精度",是"给它更大的数值范围,让它落在同一个 3bit 网格里也能被区分出来"。这两件事在硬件上完全不同——前者要混合位宽,后者还是单一 3bit。这也是为什么论文专门强调"hardware-friendly"和"避免 mix-precision"。

这个区别在帖子的叙述里被抹平了,而它恰好是 AWQ 相对 GPTQ 那类方法真正的贡献点。GPTQ 的路子是让邻居补偿误差,AWQ 的路子是先在数值域里腾出空间。一个改权重,一个改刻度。

另一处我核了 arXiv 2501.03035(《Quantization Meets Reasoning》)的摘要:Llama-3 上"最高 32.39%、平均 11.31% 的准确率退化",重点在数值计算与推理规划。全中。但那个"545 个样本、3 分钟基本恢复"的恢复实验,帖里说得太干净了。

论文正文 §恢复实验:545 个样本是从 3329 个量化失败案例里采出来的,而且它是个 DPO 数据集——正例用全精度模型的正确答案,负例用量化模型的错误答案。训练是 2–4 分钟、4 张 GPU(摘要里写 3 分钟,正文表格写 2–4 分钟)。而 DPO 本身需要采到负例,这是"3 分钟"这个数字能被说出来的前提。

所以"545 个样本 3 分钟恢复"这句话里省掉的东西是:你得先有 3329 个失败案例的清单,才能挑出那 545 个。 生成那份清单的推理开销没有被计进这 3 分钟。

还有一条论文自己写在 Limitations 附近的话,帖里没提:他们观察到量化模型在某些具体数学解题步骤上超过全精度模型,但没有进一步实验。论文说自己把它列为短期目标。一个"压缩必然损失能力"的框架里出现反例,作者选择不深挖——这个处理方式值得知道。

【直引】AWQ 摘要与 MLSys 2024 获奖记录;arXiv:2501.03035 摘要与 §恢复实验正文。

【推论】帖里那句"量化不是省了多少显存,它是一台断层扫描仪"是这篇最好的比喻。但按论文的实际情况,这台扫描仪还有个更实用的读法:545 样本 / 3329 失败 / 4 卡 3 分钟,是一套"先测量再修补"的运维流程。压缩不是一次性决策,是可以带反馈回路的循环。同一批数据里,最值钱的不是"掉了 32%",是那份掉在哪里的清单。

【判断】帖里说"知识还在,路标磨损了"——这句话比它看起来更值得展开。它暗示修复动作是"重新画路标"(微调),论文的实验恰好支持这一点。但如果是"承重墙塌了"(知识真丢了),微调补不上,因为你没有正确的标注去教它。区分这两者的判据是:微调能不能在 4 卡 3 分钟内把能力拉回来。能拉回来的,是磨损;拉不回来的,才是塌。这比"精度砍掉四分之三"这种说法有用得多,因为它直接告诉你该修还是该重训。

下一根钉子:帖里那个"16bit→4bit 等于每个参数能表达的数值从几万种砍到十六种"。16bit 是 65536 种,4bit 是 16 种,差 4096 倍;而按 bit 数算,16→4 是砍掉 75%。两句话各说各的都对,但"精度砍掉四分之三"这个说法把位宽的线性削减和表达能力的对数削减混在了一句里。更要紧的是 LLM.int8() 那一格:它说 1750 亿参数模型"零精度损失"——零损失的说法依赖于"只有那一小撮维度需要 16bit"这个前提,而那批维度的幅值是别的维度的几十倍。这是测出来的,不是设计出来的,可它没有任何理论保证下次还成立。

暂无表态
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens