LoftQ原理

1. 核心思想

量化感知 LoRA 的核心思想是:

在模型量化过程中,同时考虑 LoRA 的低秩补偿能力,使"量化权重 + LoRA 低秩矩阵"共同逼近原始全精度权重,从而降低量化带来的性能损失。

其目标可以表示为:

W≈Q+ABT W \approx Q + AB^T W≈Q+ABT

其中:

  • WWW:原始全精度权重
  • QQQ:低比特量化后的权重
  • A,BA,BA,B:LoRA 的低秩矩阵
  • ABTAB^TABT:用于补偿量化误差的低秩矩阵

2. 传统量化带来的问题

传统量化直接将原始全精度权重 WWW 映射为低比特权重:

Q=qN(W) Q = q_N(W) Q=qN(W)

由于量化会将连续的浮点数映射为有限的离散数值,因此会产生量化误差:

R=W−Q R = W - Q R=W−Q

其中:

R R R

表示量化过程中丢失的权重信息。

如果量化误差较大,就会导致模型精度下降。


3. 使用 LoRA 补偿量化误差

量化感知 LoRA 希望利用 LoRA 的低秩矩阵来表示量化误差中最重要的部分,即:

ABT≈W−Q AB^T \approx W - Q ABT≈W−Q

因此:

Q+ABT≈W Q + AB^T \approx W Q+ABT≈W

也就是说,可以将原始权重近似拆分为两部分:

W≈Q+ABT \boxed{ W \approx Q + AB^T } W≈Q+ABT

其中:

  • QQQ 负责保存模型的大部分权重信息;
  • ABTAB^TABT 负责补偿量化过程中损失的重要信息。

4. 量化与 LoRA 交替优化

量化感知 LoRA 并不是简单地先量化、再添加 LoRA,而是通过量化和低秩分解的交替过程进行优化。

第一步:量化

在第 iii 次迭代中,首先减去上一轮 LoRA 已经能够表示的部分,然后再进行量化:

Qi=qN(W−Ai−1Bi−1T) Q_i = q_N \left( W - A_{i-1}B_{i-1}^{T} \right) Qi=qN(W−Ai−1Bi−1T)

这一过程可以理解为:

LoRA 已经负责保存的信息,不需要再让量化权重重复保存。

因此,量化权重和 LoRA 之间形成一种"分工"。


5. 计算量化残差

得到新的量化权重 QiQ_iQi 后,计算原始权重和量化权重之间的残差:

Ri=W−Qi R_i = W - Q_i Ri=W−Qi

其中:

Ri R_i Ri

表示当前量化权重还没有准确表示的权重信息。

接下来让 LoRA 去补偿这部分残差。


6. 对残差进行 SVD 分解

对残差矩阵 RiR_iRi 进行奇异值分解:

Ri=UΣVT R_i = U\Sigma V^T Ri=UΣVT

其中:

  • UUU:左奇异向量矩阵
  • Σ\SigmaΣ:奇异值矩阵
  • VVV:右奇异向量矩阵

奇异值大小可以反映不同方向的重要程度。


7. 截断 SVD

由于 LoRA 的秩 rrr 通常很小,因此不能完整表示整个残差矩阵。

因此,只保留最大的前 rrr 个奇异值:

Ri≈UrΣrVrT R_i \approx U_r \Sigma_r V_r^T Ri≈UrΣrVrT

这一过程称为:

截断 SVD(Truncated SVD)

其作用是:

提取量化误差中最重要的低秩结构。


8. 构造 LoRA 矩阵

可以根据截断 SVD 构造 LoRA 的两个低秩矩阵:

Ai=UrΣr1/2A_i = U_r \Sigma_r^{1/2}Ai=UrΣr1/2

Bi=VrΣr1/2B_i = V_r \Sigma_r^{1/2}Bi=VrΣr1/2

于是:

AiBiT=UrΣrVrTA_iB_i^T= U_r\Sigma_rV_r^TAiBiT=UrΣrVrT

因此:

AiBiT≈Ri A_iB_i^T \approx R_i AiBiT≈Ri

又因为:

Ri=W−Qi R_i = W - Q_i Ri=W−Qi

所以:

AiBiT≈W−Qi \boxed{ A_iB_i^T \approx W - Q_i } AiBiT≈W−Qi


9. 恢复原始权重

将 LoRA 补偿矩阵与量化权重相加:

Qi+AiBiT Q_i + A_iB_i^T Qi+AiBiT

因为:

AiBiT≈W−Qi A_iB_i^T \approx W - Q_i AiBiT≈W−Qi

所以:

Qi+AiBiT≈Qi+W−Qi Q_i + A_iB_i^T \approx Q_i + W - Q_i Qi+AiBiT≈Qi+W−Qi

最终得到:

Qi+AiBiT≈W \boxed{ Q_i + A_iB_i^T \approx W } Qi+AiBiT≈W

这说明 LoRA 可以有效补偿量化带来的主要权重误差。


10. 迭代优化

为了进一步减小误差,可以重复执行:

Q1→A1B1T→Q2→A2B2T→⋯ Q_1 \rightarrow A_1B_1^T \rightarrow Q_2 \rightarrow A_2B_2^T \rightarrow \cdots Q1→A1B1T→Q2→A2B2T→⋯

每一轮都重新调整:

  • 量化权重 QiQ_iQi
  • LoRA 补偿矩阵 AiBiTA_iB_i^TAiBiT

使整体误差不断减小:

∥W−Qi−AiBiT∥F \left\| W - Q_i - A_iB_i^T \right\|_F W−Qi−AiBiT F

最终得到更加匹配的量化权重和 LoRA 初始化参数。


总结

量化感知 LoRA 的基本思想可以概括为:

W≈Q⏟量化权重+ABT⏟LoRA低秩补偿 \boxed{ W \approx \underbrace{Q}{\text{量化权重}} + \underbrace{AB^T}{\text{LoRA低秩补偿}} } W≈量化权重 Q+LoRA低秩补偿 ABT

其中:

量化负责压缩模型,LoRA 负责补偿量化过程中丢失的重要信息。

通过对量化残差进行截断 SVD,可以提取最重要的低秩误差结构,并用于初始化 LoRA 参数,从而在降低模型存储和显存开销的同时,尽可能保持原始模型的性能。

相关推荐
Navigator_Z2 小时前
LeetCode //C - 1240. Tiling a Rectangle with the Fewest Squares
c语言·算法·leetcode
稻米哟2 小时前
力扣100——双指针
算法·leetcode
明志数科4 小时前
具身智能真机采集工程实践:5类高频失效模式与规避清单
人工智能·算法·机器学习
CSDN_RTKLIB4 小时前
空间哈希与拓扑缓存
算法
大熊背5 小时前
IspPipeline色相旋转模块实现
人工智能·算法·计算机视觉
爱学习的小白柏5 小时前
同城双活的核心不是双活,是逼着数据别出机房
大数据·人工智能·算法·langchain·ai编程
鹿角片ljp5 小时前
LeetCode 31:下一个排列|右找小,右找大,交换,右反转
java·数据结构·算法
橘子汽水1686 小时前
Leetcode 198,118打家劫舍,杨辉三角
算法·leetcode
LuminousCPP6 小时前
数据结构-排序(三):快速排序进阶|挖坑法、双指针交换与手动栈非递归实现
c语言·数据结构·笔记·算法·排序算法