第 2 章 · 量化选型与微调入门
考点梳理
2.1 量化原理(“为什么能省”)
大模型 ≈ 参数矩阵的乘加运算,参数用 FP16(每个数 2 字节)存储。量化 = 用更少的位数近似表示参数:
| 精度 | 每参数 | 7B 模型权重大小(示例) | 说明 |
|---|---|---|---|
| FP16 | 2 字节 | ≈ 14GB | 基线 |
| INT8 | 1 字节 | ≈ 7GB | 掉点很小(“均衡之选”) |
| INT4(GPTQ/AWQ) | 0.5 字节 | ≈ 3.5GB | 显存紧张首选,掉点要测 |
为什么 INT4 还能用:模型对部分参数不敏感——量化方法的核心是找"重要参数"保护:
| 方法 | 思路 | 特点 |
|---|---|---|
| GPTQ | 用校准数据逐层补偿误差 | 主流,效果好 |
| AWQ | 激活感知:保护被大激活值"点亮"的通道 | 推理快(无需逐 token 反量化,4090 上表现好) |
| SmoothQuant | 把"难量化的维度"平滑到另一边 | 常与 INT8/INT4 组合 |
| KV 量化(FP8/INT8 KV) | 对 KV Cache 降精度 | 省 KV 显存(长上下文场景大) |
记忆锚:“AWQ 保通道推理快,GPTQ 校准稳,KV 量化省长文”。
2.2 量化选型决策(“3 问”)
① 显存够 FP16 吗? → 够 → 别量化(精度无损)
② 够 INT8 吗? → 够 → INT8(掉点小、部署简单)
③ 只够 INT4? → INT4(AWQ 优先)+ 必测掉点
INT4 适用判断(“高频追问”):
| 场景 | INT4 是否合适 |
|---|---|
| 客服问答/摘要/改写(容错高) | 合适(用户可编辑兜底) |
| 代码生成/数学推理(容错低) | 谨慎(掉点直接体现在正确率) |
| 长上下文 RAG(32K+) | 合适(省下的显存换上下文长度) |
2.3 掉点验证流程(“必做 4 步”)
① 建业务测试集(50 条:核心 70% / 边界 20% / 对抗 10%)
② FP16 基线跑一遍 → 记各指标(准确率/相似度/人工评分)
③ INT4 同集跑一遍 → 对比 diff
④ 判定:掉点 ≤ 业务阈值(如 2%)→ 上线;否则回 INT8 或换量化方法
汇报标准句(“评审/面试合格回答”):
“INT4-AWQ 在 50 条业务集上掉点 1.8%(基线 87% → 85.2%),其中代码类子集掉 3.1%、问答类掉 1.2%;客服场景容错高,判定可接受,且显存从 15.8G 降到 4.2G,同卡并发 ×3。”
铁律:“量化必测掉点;‘别人说够用’不是答案,‘我测过’才是”。
2.4 LoRA 微调入门(“L2/L3 加分”)
什么时候微调而不是 Prompt/RAG(“选型核心”):
| 需求 | 方案 | 理由 |
|---|---|---|
| 补知识(公司文档/最新数据) | RAG | 知识可更新、可溯源 |
| 改格式/语气/风格 | Prompt 工程 | 便宜、即时 |
| 领域术语/固定表达/复杂任务模式 | LoRA 微调 | 知识注入 + 行为塑造 |
LoRA 原理 1 句话:冻结原模型,旁挂一组低秩小矩阵 A×B(秩 r 通常 8~64),只训这两个小矩阵——“参数量省 100 倍,单卡可训 7B”。
LoRA 四要素(“必背”):
| 要素 | 内容 | 典型值(示例) |
|---|---|---|
| 数据 | 指令-回答对(质量 > 数量) | 500~2000 条(领域);格式一致 |
| 超参 | 秩 r / alpha / lr | r=16,alpha=32,lr=1e-4~2e-4,1~3 epoch |
| 位置 | 加在哪几层 | attention 的 q/v 投影(主流) |
| 评测 | 训练集外测试集 + 通用集(防遗忘) | 领域集涨 + 通用集不掉 |
防遗忘(“高频坑”):只喂领域数据 → 通用能力退化(“微调完不会聊天了”)。对策:混 10~20% 通用指令数据 + 通用测试集回归。
记忆锚:“知识找 RAG,格式找 Prompt,风格/术语找 LoRA;数据质量第一,防遗忘要通用集”。
🧠 记忆工具箱
口诀速记
- 量化:“FP16 十四 G,INT8 七,INT4 三点五”;
- 方法:“AWQ 保通道快,GPTQ 校准稳,KV 量化省长文”;
- 选型:“够 FP16 不量化,够 INT8 用 INT8,只够 INT4 必测点”;
- 掉点:“基线对照测两遍,两分阈值定去留”;
- LoRA:“冻结原身挂小参,五百条数据起步,秩十六学习率 1e-4,防遗忘混通用”。
场景锚点
- 量化想象"“搬家压缩行李”":你不是旅行的人(不需要用东西),你是"打包的"(“压缩”)——“FP16 = 原箱全装;INT4 = 真空压缩袋(体积 ÷4,但个别易碎品可能压坏 = 掉点)”——“压之前先确认’哪些是易碎品’(校准数据/敏感通道),压完开箱检查(测试集验证),坏两件以内(掉点 ≤2%)才敢走”。
- LoRA 想象"“给专家加小抄本”":专家(原模型)不用重新培训(冻结),只发一本小抄本(低秩矩阵)让他记公司黑话——“小抄本薄(参数少、训得快),但要定期混入’常识复习页’(通用数据),不然他记熟公司黑话后忘了说普通话(灾难性遗忘)”。
⚠️ 易错提醒
- INT4"不测就上" = 赌博:“不同任务掉点差异大”(“代码/数学最敏感”);
- 量化"只看权重显存":“KV Cache 在长上下文场景才是大头”(“32K 上下文 + 高并发 → 考虑 KV 量化”);
- 微调"数据量越大越好" = 错:“500 条高质量 > 5000 条噪声”(“先清洗再训练”);
- LoRA"训完只测领域集":“通用能力可能已退化”(“必须通用集回归”);
- RAG vs 微调"二选一" = 常见误判:“知识用 RAG(可更新),行为用微调(要内化),常组合用”。