Ch.09
QLoRA 与量化:缩得更小再微调
量化流:FP16→INT8→FP16
用尺度α映射到INT8,计算时再除回。
FP16输入max(abs)算αINT8量化反量化核对还原
分步看
- ① FP16: 原始浮点向量。
- ② max(abs): 定缩放基准。
- ③ α: 适配范围的尺度。
- ④ INT8: 乘后四舍五入存整数。
- ⑤ 反量化: ÷α 还原。
- ⑥ QLoRA: 压缩骨干 + 只训 LoRA。
QLoRA与量化
框架4-bit压缩,LoRA家具保持清晰。
骨干反量化 ,只学LoRA 。
4-bit加载冻结骨干训LoRA前向·保存
QLoRA训练流
- ① 4-bit加载LLM。
- ② 量化骨干固定。
- ③ 仅LoRA用FP16/BF16训练。
- ④ 保存适配器·部署。
第 08 章 LoRA 减少了新学参数,但巨大的预训练权重 仍占大部分显存。就像只想换家具,房子本身还是太大、太重。
本章讲用 量化 把“房子”整体变轻,以及与 LoRA 结合的 QLoRA:压缩·冻结的骨干 + 高精度的 LoRA 笔记。
比喻: 把 4K 电影压成手机 MP4,剧情还在,只是数字更短。在普通电脑上更容易做领域对齐。
公式导读(量化 · QLoRA)
1. 位宽与内存 — 为何压缩?
一句概要: 每个权重用多少比特存,决定文件大小和 GPU 显存。
大模型有亿万级参数。用 FP32 很准但很重。量化就是:平时存短整数码(INT8、4-bit…),算的时候再还原成接近浮点的数。
比喻: 同一张照片存 RAW(大) 还是 JPEG(小)——看起来差不多,体积差很多。
- 格式FP32
- 约/权重4 字节
- 通俗说法最高精度
- 格式FP16
- 约/权重2 字节
- 通俗说法一半
- 格式INT8
- 约/权重1 字节
- 通俗说法8 位整数格
- 格式INT4
- 约/权重0.5 字节
- 通俗说法4-bit 极限
| 格式 | 约/权重 | 通俗说法 |
|---|---|---|
| FP32 | 4 字节 | 最高精度 |
| FP16 | 2 字节 | 一半 |
| INT8 | 1 字节 | 8 位整数格 |
| INT4 | 0.5 字节 | 4-bit 极限 |
逐行读表:比特越少,每个权重占的字节越少。教学上 32 位→4 位 可记 32÷4=8,约 8 倍更轻。题库 32/4、16/4 等同源。
与 QLoRA: 第 08 章 LoRA 减的是训练量, 仍很大。QLoRA 先把 压到 4-bit 等,再只训 高精度 LoRA。
2. INT8 量化 — 分开「存」和「算」
一句概要: 磁盘/显存里放短整数;矩阵乘之前用 ÷α 还原成近似浮点。
不是永远只用整数算。习惯是 存小、算宽(FP16/BF16)。
步骤(与动画一致):
1. 找块内最大绝对值(如 5.4)
2. 定 α 让峰值对应 127(约 23.5)
3. 乘 α 四舍五入存(如 1.2→28)
4. 用时 28÷23.5≈1.2 反量化
本章核心公式(符号集中在此):
- : 原浮点
- : 存的整数码
- : 计算用近似浮点
- : 放大/缩小的尺子
口诀: 乘整存 →,除还原 ←。题里的 28、127、α≈24 都是这 四步 的结果。
3. QLoRA 一层 — 宽路(骨干)+窄路(LoRA)
输入 分两路:① 压缩·冻结骨干 + ② LoRA,相加得 。
好记: 上=压缩百科(算前展开),下=笔记(只训这里)。
读法: 骨干反应 + LoRA 修正。骨干固定,只训 LoRA。
4. 其余关键词 — NF4 · 双重量化 · 结构
NF4 — 权重常中间密、两端稀,NF4 在密集区格子更细,比粗暴 4-bit 更不容易塌质量。做题记 按分布的 4-bit。
双重量化 — 每块一个 α,块多了 α 表也大,所以再压 α 表;小块节省累积起来可观。
结构 — 想象 一份共享的压缩 7B 骨干,医疗/法律/FAQ 等任务只换薄 LoRA。不必每次存一整份大模型。
QLoRA 与量化:轻量驾驭大模型
1. 什么是量化?—— 大数装进小格子
权重常用 FP32·FP16 浮点保存,越精密文件和显存越大。量化 变成 INT8·4-bit 整数码,大幅缩小存储。
比喻: RAW 照片变 JPEG,体积约 ¼·⅛,样子几乎一样。
例子: `0.0137` 存成 `14`,矩阵乘前 还原成相近浮点。要点不是“永远只用整数算”,而是 “存小、算宽”。
2. 量化怎么缩数字 — 定尺子(α)
先找一组里最大的数(绝对值最大)。例:`1.2`, `-0.5`, `5.4` → 以 5.4 为基准。
简单说: 让最大值对应整数 127,定 α(约 23.5)。乘 α 四舍五入存(`1.2`→28),用时 28÷23.5≈1.2 除回来(反量化)。
一句: 乘整存 → 除还原。题里的 28、127、α≈24 都走这条链。
3. NF4 — 更聪明的 4-bit
权重常靠近 0。NF4 在常出现的区间格子更密——记 按分布的 4-bit 即可。
双重量化 再把 α 表 压一层。
4. QLoRA — 量化 + LoRA
第 08 章 LoRA:大词典 不动,只训 小笔记 LoRA。
QLoRA 再加:词典本身也变轻。
- : 4-bit 压缩·冻结
- LoRA: 用 FP16/BF16 只对齐你的数据
比喻: 百科 微缩胶片,笔记 清晰墨水。公式见 导读。
为何重要
1. 让更多人能调大模型
全量微调 显存压力大,但用自己的数据对齐的需求在增加。QLoRA 压缩冻结骨干、只训 适配器,在 普通 GPU 上也更容易上手。第 08 章 LoRA 减训练量,QLoRA 还减 冻结百科的体积。
2. NF4 与双重量化
粗暴 4-bit 容易伤质量。NF4 是 按分布的 4-bit,教学上往往 更稳。双重量化 再压 α 表,多块累积后差别可观。
3. 一个底座,多个适配器
压缩骨干 + 小 LoRA,在同一大型模型上接 不同任务,不必每次存完整 7B—只换薄适配器即可。第 08 章学 换便利贴,本章再学 把百科本身变轻,合起来就是 QLoRA。
4. 为何分开看 — 少糊涂
显存: 压缩冻结骨干 + 在训 LoRA + batch·序列长 也要看。计算: 存小、算前还原。训练: 骨干固定,只改 LoRA。
如何用
第一步:载入压缩骨干
开始 QLoRA 时,首先要做的是把已经很强的 预训练大模型 以 更轻的存储形式 读进来。权重在磁盘和显存里往往是 4-bit·NF4 这类 短整数码;真正做矩阵乘法时,再 短暂还原 成 FP16/BF16 等更宽的数字,计算才更稳。
比喻: 不必把整套百科全摆上书架,而是先做成 微缩胶片,需要哪一页再 展开清晰副本 来读。所以本章的第一步习惯是:存得小,算时用更宽的类型。
第二步:挂 LoRA 微调
冻结 。4-bit 部分通常不学,只训 LoRA(FP16/BF16)。只有 LoRA 在变 — 压缩骨干 + LoRA 相加。
第三步:用数据和旋钮一起调节
要贴合任务,既要看好 教什么(数据),也要看好 学多猛、学多薄(超参)。准备与任务匹配的样本(指令、对话、FAQ 等),再调节 学习率、轮数、LoRA rank(适配器厚度),以及 4-bit 与 8-bit 压到哪一步。
若显存仍紧,常见做法是先把 batch 或序列长度 降下来。若回答质量不够,通常会更自然地去查 数据、rank、学习率,而不是立刻解冻整个骨干。
第四步:训练结束后留下什么
训练结束后,往往保留 一份共享的压缩骨干,每个任务只多 一小份 LoRA 适配器。同样是 7B 量级,也可以想象 医疗、法律、内部 FAQ 等不同用途 只换适配器。
量化流程是 找 max → 定 α → 乘后四舍五入存 → ÷α 还原。QLoRA 是在此之上 「4-bit 冻结 + 只训高精度 LoRA」。一句话:大词典只轻载一次,多种定制用薄薄的笔记(适配器)反复写。
总结
一句话:把沉重的 词典() 4-bit 压缩·冻结,只用 小 LoRA 对齐,就是 QLoRA。
四块(好记):
①量化=乘整存除还原
②NF4=更聪明的4-bit
③QLoRA=轻词典+LoRA
④结构=一个底座+换适配器
图景: 存小·算前还原·只训LoRA。误区: 整段微调4-bit骨干(×)·INT4=一半显存(×,约8倍)。
解题提示
做量化·QLoRA 题时,先想 「压缩·冻结骨干 + LoRA 适配器」。第 08 章 LoRA 减训练量,QLoRA 还减 体积。数值题把 位宽倍数(32÷4=8)、÷α 还原 与 28、127、24 出自哪一步连起来。
下面是题库同形示例,从 概念·判断 读起即可。
「QLoRA 核心最接近?
① 全量 FP32 重训
② 4-bit 压缩骨干 + 仅 LoRA 高精度
③ 删标签」
→ 答案 2
为什么? 骨干冻结,只靠适配器对齐任务。
示例(判断 · ox)
「QLoRA 里通常把 4-bit 整段 FP16 微调。」
→ 通常 冻结 → 答案 0
① 会话里常见的数值题型(与题库同形)
示例(位宽倍数 · vote) — FP32→INT4 教学倍数? → 8
示例(INT8 四舍五入 · vote) — 时 → 28
示例(量化尺度 · aggregate) — max abs → 24
示例(幂 · config) — 最接近? → 16
示例(场景 · scenario)
「仅 LoRA 仍显存不足时 下一招?
① 删标签
② 4-bit QLoRA 压缩骨干
③ 去掉注意力」
→ 答案 2
示例(NF4 · concept)
「NF4 最接近?
① RNN 激活
② 4-bit、按分布的码本
③ 优化器名」
→ 答案 2
示例(双重量化 · concept)
「Double quantization 好处?
① LoRA rank 自动升
② 再压 α 表
③ 批大小自动升」
→ 答案 2
示例(对错 · 显存)
「INT4 约为 FP16 一半 显存(教学用)。」
→ 实际小得多 → 答案 0(教学 约 8 倍)
示例(对错 · QLoRA)
「QLoRA 同时使用 量化 与 LoRA。」
→ 答案 1
示例(选择 · NF4 位数)
「NF4 接近几 bit?」
→ 4
示例(选择 · INT8)
「INT8 常见 最大正码?」
→ 127