一个价值196亿参数的"记忆本"
想象你在背单词。每背一个新词,你不仅记住这个词本身,还顺手记住了它和前一个词、前两个词的组合感觉——"咖啡"后面大概率接"店"或"杯","打"后面接"电话"还是"篮球"感觉完全不同。
这种"连词成串"的直觉,就是语言模型里的 n-gram 嵌入表(n-gram embedding table)。它存的是"连续几个 token 组合在一起时的表示"。DeepSeek-V4.1-Flash 给这张表分配了 1960亿参数——比很多完整模型的参数量还大。
问题来了:这1960亿参数,真的需要每个都用16位浮点数存吗?
DualverseAI 的 Stephen Chung 和 Wenyu Du 给出的答案是:不需要,4比特就够了。
核心发现:4比特省75%内存,保留99%效果
这篇论文的系统实验覆盖了三个模型家族(nanochat、Llama、GPT-2),从零开始训练,结论非常干净:
| 比特数 | 内存节省 | 效果保留 |
|---|---|---|
| 4-bit | ~75% | >99% |
| 3-bit | ~80% | ~97% |
| 2-bit | ~87% | 下降明显,但微调可恢复 |
关键数字:4比特表只损失不到1%的验证损失改善,却省下四分之三的内存。
在 DeepSeek-V4.1-Flash 和 Qwen3.8-Flash-Next 上实测,低比特表省下 47-55% 的表内存,困惑度增加不到 1.2%,下游任务性能基本保留。
怎么做到的:码本 + 尺度
低比特量化的核心思路不复杂:不存完整的16位浮点向量,而是存一个"索引"——指向一个共享的小数组(码本,codebook)。
论文比较了三种码本构造方式:
- 均匀码本(Uniform):等间距切分
- 正态分位码本(Normal-quantile):按正态分布的分位点切分
- Lloyd-Max 码本:经典的最优标量量化方法
每个嵌入向量还配一个16位的"尺度因子"(scale),用来还原原始向量的幅度信息。这样即使索引只有2-4比特,也能表达出足够丰富的数值。
论文还探索了混合精度策略:不同位置的表用不同比特数。重要的表多给几位,不重要的少给几位。
最有意思的发现:省下来的内存可以"再投资"
论文最精彩的段落不是压缩本身,而是一个"再投资"实验:
把低比特省下来的内存用来建更大的表,结果性能不仅追平了原始全精度表,还超过了它——同时总内存仍然更少。
这有点像城市规划:把低效利用的土地重新开发,密度提高后反而比原来更能容纳人口。低比特量化不只是"省钱",而是"重新分配资源到更有效的地方"。
另一个实用发现:2比特掉得厉害,但短暂数据微调能恢复大部分性能。这意味着如果极致压缩是硬需求(比如部署在边缘设备),2比特 + 微调是一个可行路径。
为什么这件事重要
n-gram 嵌入表正在成为大模型的标配。DeepSeek、Qwen 的最新版本都在用,因为它们能以很小的计算代价提升模型质量——查表是 O(1) 操作。但代价是内存膨胀:1960亿参数的表,用16位存就是392GB。
如果4比特就能保留99%的效果,那意味着:
- 部署门槛大幅降低:同样一张显卡能跑更大的模型
- 推理成本下降:内存带宽是推理的主要瓶颈之一
- n-gram 表可以做得更大:同样内存预算下,表可以扩4倍
诚实评价
这篇论文的局限也很明显:
- 实验主要在小到中等规模模型上(最大3B),虽然在大模型上做了验证,但"再投资"实验没有在 DeepSeek 级别上做
- 码本选择和混合精度策略需要针对具体模型调优,不是"一键最优"
- 2比特以下的极端压缩需要微调配合,不是完全免训练
但总体来说,这是一篇非常实用的工程论文。它回答了一个业界急需答案的问题:那些庞大的 n-gram 记忆库,到底需要多少比特?
答案比大多数人预想的要少。
论文:arxiv.org/abs/2610.31646
代码:github.com/dualverse-ai/lowbit-ngram
讨论回复
加载中...正在加载回复...
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。