Improving Block-Wise LLM Quantization by 4-bit Block-Wise Optimal Float (BOF4): Analysis and Variations¶
会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=VpZ8YYdBmT
代码: 无
领域: 模型压缩
关键词: 块级量化, 4-bit 量化, QLoRA, 最优码本, 离群值保留
一句话总结¶
本文重新审视 QLoRA 中常用的块级 absmax 量化(NF4 / AF4),用一个 Lloyd 式 EM 算法直接求解端到端权重误差最优的 4-bit 码本(BOF4),再配上「带符号归一化」(BOF4-S)和「离群值保留量化」(OPQ)两个简单改动,在三大 LLM 家族上把量化误差和困惑度都压到了 4-bit 块级量化方法里的最好水平。
研究背景与动机¶
领域现状:为了让 LLM 能在消费级 GPU 上做内存高效微调,QLoRA 把预训练权重压成 4-bit 再叠加 LoRA。其量化核心是块级 absmax 量化:把权重切成小块,每块用块内绝对值最大值 \(w^{\max}_b\) 归一化到 \([-1,1]\),再用一个固定的 16 级标量码本(NF4 / AF4)去量化归一化后的权重。NF4 用假设的高斯分布分位数构造码本,AF4 则去直接最小化归一化权重的 MAE。
现有痛点:NF4 当年宣称码本"信息论最优",理由是 16 个重建电平被等概率利用——但这个判据本身就站不住脚。等概率利用只对均匀分布输入才最优,对非均匀分布它根本不是率失真最优的。AF4 虽然纠正了一部分,但它优化的是归一化权重 \(x_{b,i}\) 的 MAE,而我们真正在意的是反量化回去之后原始权重 \(w_{b,i}\) 的误差——两者并不等价,块越大偏差越明显。
核心矛盾:优化目标(归一化空间的误差)和真正想最小化的量(原权重空间的端到端误差)之间存在错配;同时块内只有一个权重能落在 \(\pm1\) 端点,却白白固定了 \(-1\) 和 \(+1\) 两个重建电平,浪费了一个宝贵的自由度。此外,块级 absmax 对离群权重极其敏感——一个超大权重会把整块的 \(w^{\max}_b\) 拉大,导致块内其余权重被压到码本中央、分辨率骤降。
本文目标:(1) 给块级 absmax 量化一个严格的、面向端到端权重误差的最优码本;(2) 修掉端点自由度浪费;(3) 缓解离群值对块缩放的污染。
核心 idea:把"求最优码本"形式化成带权重的 Lloyd/EM 问题(权重为块最大值的平方),并用「带符号归一化」省下一个固定电平、用「离群值单独存 bf16」把离群权重从块统计里摘出去。
方法详解¶
整体框架¶
方法围绕块级 absmax 量化的三个薄弱环节各打一个补丁,但彼此正交、可叠加。输入是预训练权重张量,输出是 4-bit 量化权重 + 每块的量化常数(+ 可选的少量 bf16 离群值)。流程是:先对每个块做归一化(标准 absmax,或本文的带符号 absmax,后者让块内最大值恒映射到 \(+1\));归一化前可选地把离群权重摘出去单独存 bf16(OPQ),避免它们污染块缩放;归一化后用本文离线跑出来的 BOF4 最优码本做标量量化。关键在于:码本不是拍脑袋构造的,而是用一个 Lloyd 式 EM 算法、以反量化后原权重的 MSE/MAE 为目标离线求解一次得到,对每种权重分布只需算一次、推理/微调时零额外开销。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["预训练权重张量"] --> B["3. 离群值保留量化 OPQ<br/>摘出大权重存 bf16"]
B --> C["2. 带符号 absmax 归一化<br/>块内最大值恒映射到 +1"]
C --> D["1. BOF4 最优码本量化<br/>EM 求端到端最优重建电平"]
D --> E["4-bit 量化权重<br/>+ 量化常数 + 少量 bf16 离群值"]
框架图自上而下是数据流向(先摘离群、再归一化、再查码本量化);而下面的「关键设计」按本文的核心贡献分量排序(BOF4 码本最根本,故列第一),两者用同名节点对应、编号不必同序。
关键设计¶
1. BOF4:用带权 Lloyd/EM 直接求端到端最优码本
针对"NF4 等概率判据错误、AF4 只优化归一化空间误差"这个痛点,本文把码本设计回归到率失真最优的本源——Lloyd 算法。难点在于:码本作用在归一化权重 \(x_{b,i}=w_{b,i}/w^{\max}_b\) 上,但目标却是最小化反量化后原权重 \(Q_b(w_{b,i})=w^{\max}_b\cdot\tilde Q(x_{b,i})\) 相对 \(w_{b,i}\) 的误差。直接套 Lloyd 会用错分布。作者把块最大值 \(M\) 也建模成随机变量,重新推导出每个 Voronoi 区间 \(R_\ell\) 内的质心更新式。MSE 准则下,更新后的重建电平不是普通均值,而是以块最大值平方 \(m^2\) 为权重的加权质心;其蒙特卡洛近似非常直观:
其中 \(w_k\) 是 \(x_k\) 所在块的绝对块最大值。直觉上,落在大块(大 \(w^{\max}\))里的归一化权重,反量化时误差会被放大 \(w^{\max}\) 倍,所以它们在码本优化里就该占更大话语权——这正是 \(m^2\) 权重的来历,也是 BOF4 区别于 AF4 的关键。MAE 准则下对应解则是加权中位数(公式 8)。要把某些电平钉死在 \(-1,0,1\),只需初始化后在每轮迭代里跳过它们的重算即可。整个 EM 对固定分布只跑一次、离线完成,量化时零开销。
2. BOF4-S:带符号 absmax 归一化,省下一个固定端点换自由度
NF4/AF4 把 \(\hat x^{(1)}=-1\) 和 \(\hat x^{(16)}=1\) 都钉死,为的是让块内绝对值最大的权重无误差表示。但作者观察到:对一般位置的权重,每个块的归一化权重里只会出现 \(-1\) 或 \(+1\) 中的一个端点(取决于块内最大值是正是负),另一个端点纯属浪费。于是改用带符号绝对块最大值做归一化常数:
这样块内最大值恒被映射到 \(+1\)(而不是等概率落到 \(\pm1\)),于是只需固定 \(\hat x^{(16)}=1\) 和零点两个电平,把原来固定的 \(\hat x^{(1)}=-1\) 解放成一个可优化的自由电平。多出来的这个自由度让非均匀码本能更贴合分布,量化误差进一步下降。改动只发生在选取量化常数这一步,解码逻辑完全不变,推理/微调零额外开销。
3. OPQ:离群值保留量化,把大权重摘出去再做块级量化
块级 absmax 的软肋是离群权重会撑大整块的 \(w^{\max}_b\),逼着实践中只能用小块来限制受害参数数量,而小块意味着要存更多量化常数、内存反而上去。OPQ 反其道而行:把离群权重单独用 bf16 存、再配一个 64-bit 整数记录它在该层展平权重张量里的位置。离群判据是按块自适应的——把块归一化到单位标准差后,绝对值超过其 \(q\)-分位数的权重才算离群:
\(\sigma_b\) 是该块的修正样本标准差,\(F^{-1}_M\) 是绝对块最大值的分位函数,\(q\) 控制离群比例(实验取 \(q=0.95\))。量化前先把离群权重置零、使其不参与(带符号)块最大值搜索,从而让块缩放回归正常分布。摘出离群值后,就能放心用更大的块来省下量化常数的存储,同时不再被极端值拖累——这是 OPQ 能同时降误差又降内存的关键。OPQ 可与 BOF4 或 BOF4-S 自由组合。
实验关键数据¶
主实验¶
在三个 LLM(Llama-3.1 8B / Qwen-2.5 7B / Mistral 7B)上对比量化误差(MAE/MSE)与 WikiText-2 困惑度(PPL),块大小 \(I=64\):
| 量化方法 | Llama-3.1 8B MAE↓ | Llama MSE↓ | Llama PPL↓ | Qwen PPL↓ | Mistral PPL↓ |
|---|---|---|---|---|---|
| NF4 | 0.977 | 1.637 | 8.53 | 9.89 | 8.90 |
| AF4 | 1.006 | 1.762 | 8.51 | 9.91 | 8.90 |
| BOF4 (MSE) | 0.994 | 1.566 | 8.51 | 9.94 | 8.89 |
| BOF4-S (MAE) | 0.936 | 1.508 | 8.49 | 9.87 | 8.90 |
| BOF4-S (MSE) | 0.954 | 1.441 | 8.46 | 9.88 | 8.88 |
| BOF4-S (MSE) + OPQ | 0.932 | 1.367 | 8.43 | 9.83 | 8.87 |
(MAE 单位 \(1\text{e}{-3}\),MSE 单位 \(1\text{e}{-6}\);最优加粗。)BOF4-S (MSE) + OPQ 在几乎所有列都拿到第一或第二,是综合最优方案。
消融实验¶
| 配置 | 关键观察 | 说明 |
|---|---|---|
| NF4 / AF4 基线 | PPL 8.51–8.53 | 旧的固定码本 |
| BOF4(仅最优码本) | MSE 从 1.637→1.566 | 端到端最优码本即已优于基线 |
| + 带符号归一化 (BOF4-S) | MSE 进一步→1.441 | 省下端点、解放一个自由电平 |
| + OPQ | MSE→1.367,PPL→8.43 | 离群值单独存 bf16,再降一档 |
| MAE vs MSE 优化 | MSE 版 PPL 普遍更低 | 块越大优势越明显 |
关键发现¶
- 三个改动逐级叠加都涨点:最优码本 → 带符号归一化 → OPQ,每加一层 MAE/MSE/PPL 都单调下降,说明三者解决的是不同维度的问题、互不冲突。
- MSE 优化普遍优于 MAE 优化:尽管误差准则不同,MSE 版在困惑度上几乎总是更好(仅 Qwen-2.5 7B 例外、MAE 版领先 0.01),且块越大差距越大,故后续实验都聚焦 MSE 版。
- 下游任务要谨慎解读:在 MMLU/ARC/HellaSwag 等 6 个 benchmark 上,不同方法的排名因任务而异;作者专门引入"归一化平均准确率"(NAV ACC) 看整体趋势——Qwen-2.5 3B 上 BOF4-S+OPQ 的 NAV ACC 甚至略超 BF16 参考,但作者也坦承这更多反映准确率指标本身的方差,不宜过度解读。
- 高斯假设只是近似仍然有效:码本是按高斯权重假设离线优化的,真实 LLM 权重只是近似高斯,但优势依然成立;作者指出换更贴合的分布重新优化码本有望进一步提升。
亮点与洞察¶
- 把"码本设计"重新拉回率失真最优:戳破 NF4"等概率即最优"的误解,并指出 AF4 优化错了空间(归一化 vs 端到端)。\(m^2\) 加权质心更新式既有理论推导又有简洁的蒙特卡洛形式,是可直接复用的核心 trick。
- 带符号归一化几乎零成本却实打实涨点:仅仅把归一化常数从 \(|w^{\max}|\) 换成带符号的 \(w^{\max}\),就能从"两端点二选一固定"变成"只固定一端、放出一个自由电平",解码完全不变、推理零开销——这种"洞察一个对称性浪费再回收自由度"的思路很有迁移价值。
- OPQ 反直觉地用更大块换更小内存:常规认知是离群值逼着用小块,OPQ 把离群值摘出去后反而能放大块、减少量化常数存储,是"对症下药"而非"全局加 bit"的精细化做法。
局限与展望¶
- 码本依赖分布假设:BOF4 码本按高斯权重离线优化,真实权重只是近似高斯;作者承认换更贴合分布可进一步提升,但本文未系统探索。
- OPQ 引入额外存储与少量开销:每个离群值需额外存 bf16 值 + 64-bit 索引,并在推理时带来小幅运行时开销(附录 G.3),\(q\) 也需调。
- 下游准确率收益不稳定:在分类型 benchmark 上不同方法排名混乱,方法的主要、稳定收益体现在量化误差和困惑度上,准确率提升需谨慎看待。
- 聚焦 4-bit 标量块级量化:未覆盖更低比特、向量量化或与激活量化的联合方案。
相关工作与启发¶
- vs NF4:NF4 用假设高斯分位数构造码本并宣称等概率利用即最优;本文证明该判据错误,改用面向端到端误差的 Lloyd/EM 求真正最优码本,并指出 NF4 浪费了一个端点自由度。
- vs AF4:AF4 直接最小化归一化权重的 MAE,忽略了反量化时 \(w^{\max}\) 的放大效应;本文的 \(m^2\) 加权质心正是补上这一项,且同时给出 MSE/MAE 两套准则。
- vs 离群值处理类方法(如 LLM.int8/SmoothQuant 思路):那些主要面向激活离群值或混合精度推理;OPQ 专门针对块级权重归一化被离群值污染这一具体问题,用 bf16 单独存权重离群值来恢复块缩放。
评分¶
- 新颖性: ⭐⭐⭐⭐ 把块级量化码本设计严格化为端到端最优问题,并配两个简洁有效的正交改进。
- 实验充分度: ⭐⭐⭐⭐ 覆盖三大 LLM 家族、多块大小、误差/困惑度/下游准确率/微调多维评估,且诚实讨论指标方差。
- 写作质量: ⭐⭐⭐⭐ 推导严谨、动机清晰,对前人误解的剖析尤其到位。
- 价值: ⭐⭐⭐⭐ 直接可落地到 QLoRA 类内存高效微调,零推理开销且即插即用。