论文阅读笔记——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 系列被得到广泛应用,尽管本人对模型量化并没有太多研究,仅以此记录,如果有不对地方,还请各位给予批评指正。

实验结果

相关推荐
火山引擎开发者社区4 分钟前
多行业专家招募|参与访谈最高拿 4000元/h 现金报酬!
人工智能
大模型码小白6 分钟前
数据可视化:AI处理多维数据的HTML5可视化方案
大数据·前端·javascript·人工智能·机器学习·信息可视化·html5
IvorySQL7 分钟前
基于 PostgreSQL 的非线性回归原理与 AI 数据库融合实践
数据库·人工智能·postgresql
甲维斯7 分钟前
GPT6发布了,“O哥”速评!
人工智能
AI增长技术研究院7 分钟前
品牌别名实用指南:维护主名称、别名和禁用名清单
人工智能
字节跳动视频云技术团队10 分钟前
豆包视频通话升级,火山引擎多模态传输系统提供技术支撑
人工智能·音视频开发
AAA代码批发商12 分钟前
DAYS 38 TCP并发服务器模型详解
linux·网络·笔记·学习
searchforAI15 分钟前
AI自动总结YouTube视频:英文内容一键总结、智能时间戳、视频重点快速看
人工智能·ai·音视频
cxk180827216 分钟前
2026 年9月 AI 营销机构选型方法论:基于 GEO 精采信模式的三维评估体系
大数据·人工智能·科技·ai·geo·昆明geo
威视锐科技17 分钟前
AI-RAN:下一代无线接入网,5G-A迈向6G的智能底座
人工智能·5g·威视锐