202402 arxiv
1 背景
- 模型量化主要通过把模型的线性层【nn.Linear】(Embedding 层和 Lm_head 层除外)转化为低精度表示实现空间压缩
- 此前工作的基础是利用 Round-To-Nearest(RTN)方法把高精度浮点数近似映射到附近的整数网格
- 然而基于 RTN 的方法在极低位宽时(3bit 以下)存在严重的精度损失问题,量化后的模型能力损失十分严重
- 基于 RTN 的量化方法在 1bit 量化时几乎失效,难以有效地保留原模型的性能。
- ——>论文提出OneBit 框架,包括全新的 1bit 层结构、基于 SVID 的参数初始化方法和基于量化感知知识蒸馏的知识迁移
2 论文方法
2.1 1bit 结构
- OneBit 的终极目标是将 LLMs 的权重矩阵压缩到 1bit。
- 真正的 1bit 要求每个权重值只能用 1bit 表示,即只有两种可能的状态。
- 论文认为,在大模型的参数中,有两个重要因素都必须被考虑进来
- 浮点数的高精度
- 参数矩阵的高秩
- ——>引入两个 FP16 格式的值向量以补偿由于量化导致的精度损失
- 不仅保持了原始权重矩阵的高秩
- 还通过值向量提供了必要的浮点精度,有助于模型的训练和知识迁移
- 论文认为,在大模型的参数中,有两个重要因素都必须被考虑进来
- 假设对一个 4096*4096 的线性层进行压缩
- OneBit 需要一个 4096*4096 的 1bit 矩阵,和两个 4096*1 的 16bit 值向量
- ——>总的位数为 16,908,288,总的参数个数为 16,785,408,平均每个参数占用仅仅约 1.0073 个 bit
2.2 基于 SVID 初始化量化模型
- 为了使用充分训练好的原模型更好地初始化量化后的模型,进而促进更好的知识迁移效果,论文提出一种新的参数矩阵分解方法
- 值 - 符号独立的矩阵分解(SVID)
- 把符号和绝对值分开,并把绝对值进行秩 - 1 近似
-
- 秩 - 1 近似可以通过常见的矩阵分解方式实现,例如奇异值分解(SVD)和非负矩阵分解(NMF)
- 值 - 符号独立的矩阵分解(SVID)
2.3 通过知识蒸馏迁移原模型能力
- 通过知识蒸馏从未量化模型(教师网络)中学习,实现能力向 量化模型(学生网络)的迁移
3 实验
3.1 效果
- 从 1.3B 到 13B 不同大小、OPT 和 LLaMA-1/2 不同系列的模型来证明 OneBit 的有效性