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

实验结果

相关推荐
科技小花3 小时前
全球化深水区,数据治理成为企业出海 “核心竞争力”
大数据·数据库·人工智能·数据治理·数据中台·全球化
zhuiyisuifeng4 小时前
2026前瞻:GPTimage2镜像官网或将颠覆视觉创作
人工智能·gpt
徐健峰4 小时前
GPT-image-2 热门玩法实战(一):AI 看手相 — 一张手掌照片生成专业手相分析图
人工智能·gpt
weixin_370976354 小时前
AI的终极赛跑:进入AGI,还是泡沫破灭?
大数据·人工智能·agi
Slow菜鸟4 小时前
AI学习篇(五) | awesome-design-md 使用说明
人工智能·学习
ZC跨境爬虫5 小时前
跟着 MDN 学 HTML day_9:(信件语义标记)
前端·css·笔记·ui·html
冬奇Lab5 小时前
RAG 系列(五):Embedding 模型——语义理解的核心
人工智能·llm·aigc
深小乐5 小时前
AI 周刊【2026.04.27-05.03】:Anthropic 9000亿美元估值、英伟达死磕智能体、中央重磅定调AI
人工智能
码点滴5 小时前
什么时候用 DeepSeek V4,而不是 GPT-5/Claude/Gemini?
人工智能·gpt·架构·大模型·deepseek
狐狐生风5 小时前
LangChain 向量存储:Chroma、FAISS
人工智能·python·学习·langchain·faiss·agentai