微调与量化的常见概念
大模型微调与量化核心知识总结
1. 微调(Fine-tuning)
核心概念
微调是在已有预训练模型基础上继续训练,使模型适应特定任务、领域或行为。
简单理解:
- 预训练:让模型学会通用能力
- 微调:让模型变成某种专用模型
例如:
Qwen → AI 技术助手、代码助手、客服模型。
2. 为什么不用重新训练
全量重新训练一个大模型成本极高:
- 参数量巨大
- 数据需求大
- GPU资源需求高
因此实际开发主要采用参数高效微调(PEFT)。
3. 微调方式
Full Fine-tuning(全参数微调)
更新模型全部参数。
优点:
- 效果通常最好
缺点:
- 显存需求巨大
- 训练成本高
个人和小团队通常不采用。
PEFT(参数高效微调)
核心思想:
冻结原模型,只训练少量新增参数。
优势:
- 显存需求低
- 训练速度快
- 易于保存和部署多个任务版本
4. LoRA(重点)
LoRA(Low-Rank Adaptation):
不直接修改原始权重,而是在部分层加入低秩矩阵。
原权重:
W
训练:
W + ΔW
其中:
ΔW = A × B
A、B 是小矩阵。
优势:
- 训练参数量大幅减少
- 效果接近全量微调
- 当前应用最广泛
5. QLoRA(量化 + LoRA)
QLoRA:
Quantized LoRA。
流程:
FP16模型
↓
4bit量化(通常NF4)
↓
冻结量化模型
↓
训练LoRA参数
优势:
- 大幅降低显存
- 小显卡也可以微调较大模型
例如:
7B模型:
FP16约14GB
4bit后约4GB左右(实际略高)
6. 微调适合解决什么问题
适合:
- 输出格式固定
- 角色/风格调整
- 特定任务能力增强
- 工具调用习惯训练
不适合:
- 大量知识注入
知识更新通常优先考虑 RAG。
总结:
- RAG:解决"模型知道什么"
- 微调:解决"模型怎么做事"
7. 训练常见概念
Epoch
完整遍历训练数据的次数。
Batch Size
一次送入模型的数据量。
Learning Rate
参数更新幅度。
过大会导致训练不稳定,过小学习缓慢。
Gradient Accumulation
梯度累积。
用多次小batch模拟大batch,降低显存压力。
8. 常见工具链
训练:
- PyTorch
- Transformers
- PEFT
- TRL
- bitsandbytes
模型:
- Qwen
- Llama
- Mistral 等
9. 量化(Quantization)
核心概念
量化是降低模型参数表示精度,从而减少显存和提高推理效率。
区别:
- 微调:改变模型
- 量化:压缩模型
10. 位宽概念
参数占用:
格式 bit 占用
FP32 32bit 4 Byte FP16/BF16 16bit 2 Byte INT8 8bit 1 Byte INT4 4bit 0.5 Byte
位数越低:
- 显存越少
- 信息损失可能越大
11. 常见量化方式
INT8
整数8bit量化。
特点:
- 精度损失小
- 硬件支持好
适合生产部署。
INT4
4bit整数量化。
特点:
- 显存大幅下降
- 精度损失比INT8明显
GPTQ
通过优化量化误差进行权重量化。
特点:
- 4bit效果较好
- 常用于推理部署
AWQ
Activation-aware Weight Quantization。
核心:
保护重要权重,减少关键参数损失。
特点:
- LLM部署常用
- 推理效果优秀
NF4
Normal Float 4-bit。
QLoRA常用格式。
特点:
- 根据神经网络权重分布设计
- 4bit情况下保持较好训练效果
12. 微调和量化关系
典型流程:
基础模型
|
|
+-- RAG
|
+-- LoRA微调
|
+-- QLoRA(4bit量化训练)
部署阶段:
|
+-- AWQ/GPTQ等量化
核心理解:
- RAG:增加外部知识
- 微调:改变模型行为
- 量化:降低运行成本
