KLQ 量化新法:免训练 W4A4KV4 接近训练方案
独立研究者提出 KLQ,通过 KL 散度测量与 waterfilling 比特分配,在 Llama 3.2 1B 的 W…
在大型语言模型部署成本居高不下的背景下,模型量化始终是研究者关注的重点。Reddit 用户 Federal-Setting-3014 近日发布了一项名为 KLQ(KL Quantization)的量化方法,属个人夏季研究项目成果,旨在通过一种免训练的旋转量化策略,在不依赖后训练梯度下降的前提下,达到甚至接近带训练方法的量化效果。
方法核心思路
KLQ 的设计出发点与传统旋转量化器不同。QuaRot、DuQuant 等方法试图通过旋转把原本不均匀的嵌入空间「摊平」,再统一分配比特;KLQ 反其道而行之,先测量空间的不均匀程度,再根据重要性分配比特。
具体而言,KLQ 会逐方向扰动特征基底,跑一次前向传播,用原始模型与扰动模型之间的 KL 散度量化该方向被破坏后的真实损失;随后将每个方向视为独立的信息传输信道,用理论上最优(在一定理想假设下)的 waterfilling 算法,把最多比特分配给最重要的方向,把最少比特留给最不重要的方向。
这种方法与同样试图「先测量再分配」的 CoQuant 形成对比。CoQuant 用方差排序并仅做 8/4 比特两级划分,而 KLQ 使用经验 KL 散度排序,并支持连续比特分配。作者还指出,方差在多项测试中并非好的重要性信号,KLQ 的因果 KL 测量更能反映真实损伤。
Llama 3.2 1B 实验结果
在 Llama 3.2 1B 的 W4A4KV4(权重、激活、KV 缓存均 4 比特)全量化设定下,使用 Wikitext-2 困惑度(PPL,越低越好)作为衡量指标:
- FP16 基线:9.75
- QuaRot(免训练):14.59
- SpinQuant(训练 + GPTQ):13.52
- KLQ(免训练 + 矢量码本):13.36
- ReSpinQuant(训练 + GPTQ):13.09
KLQ 在免训练阵营中表现最佳,并将结果拉近到带训练方法 ReSpinQuant 的水平。
现有局限
作者坦承 KLQ 目前远未达到生产可用程度。最大瓶颈在于计算开销:为量化所有层的权重、激活与 KV 缓存,需要对每一层每一矩阵的每一个方向各跑一次前向传播,整体可能达到数十万次。在 RTX 3090 上,Qwen 2.5 0.5B 的探测流程耗时约 5 小时,Llama 3.2 1B 则约 10 小时。
此外,KLQ 的实际量化过程仅使用了简单的可加性矢量码本与 RTN(round-to-nearest),这些模块可以方便地替换为其他量化方案。GitHub 仓库提供了更深入的实验记录、嵌入空间几何分析与建议的后续实验方向,但目前尚未提供真实的高性能推理内核。
作者表示发帖是为了征集反馈并让更多人了解这一结果,欢迎在 GitHub 仓库提问或提交贡献。
