论文阅读笔记——QLORA: Efficient Finetuning of Quantized LLMs

QLoRA 论文

4-bit 标准浮点数量化

常见的量化技术是最大绝对值量化:
X I n t 8 = r o u n d ( 127 a b s m a x ( X F P 32 ) X F P 32 ) = r o u n d ( c F P 32 , X F P 32 ) 式(1) X^{Int8}=round(\frac{127}{absmax(X^{FP32})}X^{FP32}) = round(c^{FP32},X^{FP32}) \qquad \qquad \text{式(1)} XInt8=round(absmax(XFP32)127XFP32)=round(cFP32,XFP32)式(1)

其中 c 是量化常数,为这个张量特征的绝对值最大值。

反量化为:
d e q u a n t ( c F P 32 , X I n t 8 ) = X I n t 8 c F P 32 = X F P 32 式(2) dequant(c^{FP32},X^{Int8})=\frac{X^{Int8}}{c^{FP32}}=X^{FP32} \qquad \qquad \text{式(2)} dequant(cFP32,XInt8)=cFP32XInt8=XFP32式(2)

分位数量化

分位数 数学上的定义为把顺序排列 的一组数据分割为若干个相等块的分割点的数值。在标准正态分布中,对于分布 X 给定的概率 α \alpha α ,如果存在 u a u_a ua ,使得他的分布函数(CDF) P ( X < u a ) = α P(X<u_a)=\alpha P(X<ua)=α ,则称 u a u_a ua 为标准正态分布的 α \alpha α 分位数,显然他是严格递增的,故存在反函数。CDF 的反函数的一个重要作用是用来生成该随机分布的随机变量。

Time Dettmers 认为 k-bit 的有损最小熵编码具有以下特性:当将输入数据进行量化时,每个可能的 k-bit 整数值出现的概率是相等的

那么对于预训练模型(参数符合正态分布),可以通过 CDF 的反函数 Q X = F X − 1 Q_X=F_X^{-1} QX=FX−1 简化分位数计算。对于两个分位点的中心 q i q_i qi 有:
q i = 1 2 ( Q X ( i 2 k + 1 ) + Q x ( i + 1 2 k + 1 ) ) q_i=\frac{1}{2}(Q_X(\frac{i}{2^k+1})+Q_x(\frac{i+1}{2^k+1})) qi=21(QX(2k+1i)+Qx(2k+1i+1))

然后量化计算得到:

  1. 归一化常数 N = m a x ( ∣ T ∣ ) N=max(|T|) N=max(∣T∣),将输入张量映射到目标范围
  2. 对于 T / N T/N T/N 的每个元素,采用二进制搜索找到最接近阈值的 q i q_i qi
    T i Q = a r g m i n j = 0 2 n ∣ Q j m a p − T i N ∣ 式(3) T_i^Q=argmin_{j=0}^{2^n}|Q_j^{map}-\frac{T_i}{N}| \qquad \qquad \text{式(3)} TiQ=argminj=02n∣Qjmap−NTi∣式(3)

分块 k 位量化

在式(1)中 127 a b s m a x ( X F P 32 ) \frac{127}{absmax(X^{FP32})} absmax(XFP32)127 如果是个异常的极大值或者极小值,那么会造成整个张量的绝大多数值在量化后在 0 附近,破坏了量化特征的均匀性。
分块 k 位量化通过将张量分成若干个块,让每个块有独立量化常数 c,解决了异常值问题,并减少了核之间的通信,有更好的并行性。

4-bit 标准浮点数量化通过将数据分为负数和正数两部分分别量化:负数部分用7位表示(8个值,含0),正数部分用8位表示(9个值,含0)。合并时去掉一个重复的0,最终占满4比特的16个值。这种方法确保零点精确映射到0,并充分利用了4比特的全部信息

双重量化

当我们保存模型时我们不仅要保存量化后的结果,还要保存每个块的量化常数。虽然量化后的参数只有4bit的精度,但是这个量化常量的精度是 float32。在 QLoRA 中,每个块的大小是 64,因为块中的每个值占 4 比特。这相当于为了存储量化常数,模型要额外占用 32/(64∗4)=12.5% 的显存。QLoRA 的双重量化就是对这个量化常数再做一次 8 bit 的量化。

分页优化

分页优化是针对梯度检查点做的进一步优化,以防止在显存使用峰值时发生显存OOM的问题。QLoRA分页优化其实就是当显存不足是,将保存的部分梯度检查点转移到CPU内存上。

QLoRA 核心工作在于模型量化,通过定义 4NF 的精度单位,大幅节约了训练时所用显存。因其作为 LoRA 系列被得到广泛应用,尽管本人对模型量化并没有太多研究,仅以此记录,如果有不对地方,还请各位给予批评指正。

实验结果

相关推荐
通问AI22 分钟前
Apple Intelligence 国行备案深度技术解析:阿里千问如何被集成到苹果端侧AI架构
人工智能·架构
视***间31 分钟前
算力赋能零售与创意新生态:视程空间Pandora,解锁线下场景智能化无限可能
人工智能·边缘计算·智慧零售·ai算力·视程空间·创意开发
冬奇Lab43 分钟前
MCP 系列(08):企业治理——Registry、路由与可观测性
人工智能·llm·mcp
冬奇Lab1 小时前
每日一个开源项目(第161篇):Open Interpreter - 开源 AI 编程 Agent,用 Rust 重写,支持 Kimi、Qwen、DeepSeek
人工智能·开源·资讯
renhongxia11 小时前
世界模型,是“空中楼阁”还是AGI的“最后一块拼图”?
运维·服务器·数据库·人工智能·算法·agi
天上路人1 小时前
AU-48双麦多功能语音处理模组:100dB AEC + 波束定向拾音,会议与监控全场景覆盖
人工智能·ai降噪·语音处理·ai语音·麦克风·回音消除
甲维斯1 小时前
Codex定制皮肤,Windows一键切换已经搞定!
人工智能
逐米时代1 小时前
AI智能体与制造执行系统(MES)的数据打通
人工智能
华盈生物2 小时前
从bulk数据到组织原位观察:超多重免疫荧光成像如何为转化研究提供蛋白层线索?
深度学习·pcf·多模态数据·空间单细胞蛋白组·单细胞组织原位空间蛋白组学·组织原位空间蛋白组学·超多重蛋白成像技术
dunge20262 小时前
2026年7月最新ChatGPT Plus / Pro 与 Codex:当 AI Agent 最新5.6版本来袭,必须理解事务、幂等与补偿
开发语言·人工智能·python