LoRA 和 QLoRA 的核心区别
1. LoRA 是什么?
LoRA,全称是Low-Rank Adaptation,低秩适配微调。
正常全参微调是:
模型所有参数都参与训练比如一个 7B 模型,大约有 70 亿参数,全部训练显存压力很大。
LoRA 的做法是:
冻结原始大模型参数 只在部分线性层旁边加一小组可训练参数 训练这些新增的小参数也就是说,原模型本体不动,只训练一个“小外挂”。
可以简单画成:
原始权重 W:冻结,不训练 输入 x → W x + LoRA新增参数部分LoRA 微调完后,保存的不是整个模型,而是一个很小的adapter文件。
例如:
原始模型:7B,十几 GB LoRA adapter:几十 MB 到几百 MB2. QLoRA 是什么?
QLoRA 可以理解为Quantized LoRA,也就是量化版 LoRA。
它比 LoRA 多做了一步:
先把原始模型从 FP16/BF16 压缩成 4bit 然后再做 LoRA 微调普通 LoRA:
原模型用 FP16/BF16 加载 LoRA 参数参与训练QLoRA:
原模型用 4bit 加载 LoRA 参数参与训练所以 QLoRA 的最大优势是:
显存占用更低比如同样微调 7B 模型:
| 微调方式 | 原模型精度 | 是否训练原模型 | 显存占用 | 效果 |
|---|---|---|---|---|
| 全参微调 | FP16/BF16 | 是 | 很高 | 上限最高 |
| LoRA | FP16/BF16 | 否 | 中等 | 很好 |
| QLoRA | 4bit | 否 | 最低 | 接近 LoRA |
3. 两者最关键的区别
区别一:原模型加载精度不同
LoRA 一般这样:
原模型:FP16 / BF16 LoRA参数:FP16 / BF16QLoRA 一般这样:
原模型:4bit量化 LoRA参数:FP16 / BF16所以 QLoRA 更省显存。
区别二:显存需求不同
举个大概例子:
| 模型规模 | LoRA 大概显存 | QLoRA 大概显存 |
|---|---|---|
| 7B | 16GB 左右 | 6GB–10GB 左右 |
| 13B/14B | 32GB 左右 | 12GB–18GB 左右 |
| 30B/32B | 60GB+ | 24GB–32GB 左右 |
| 65B/70B | 120GB+ | 48GB–80GB 左右 |
实际显存还和这些因素有关:
batch size sequence length gradient checkpointing optimizer 是否多卡 是否使用 flash attention区别三:训练速度和稳定性不同
一般来说:
LoRA:更稳定,训练速度可能更快,效果略好 QLoRA:更省显存,但训练和推理时有量化/反量化开销如果你的显存够,优先 LoRA。
如果你的显存不够,就用 QLoRA。
4. 效果
通常情况下:
全参微调 > LoRA ≈ QLoRA但在很多实际任务中,LoRA 和 QLoRA 的效果差距不大。
特别是你做这些任务时:
领域问答 格式转换 标准文件解析 企业年报文本分析 代码风格学习 指令遵循增强QLoRA 完全够用。
5.部署
如何部署:
| 服务器情况 | 推荐 |
|---|---|
| 单卡 8GB | QLoRA,小模型 |
| 单卡 12GB | QLoRA,3B/7B 级别 |
| 单卡 16GB | QLoRA 为主,LoRA 可尝试小模型 |
| 单卡 24GB,例如 RTX 3090/4090 | QLoRA 微调 7B/14B,LoRA 微调 7B |
| 单卡 48GB | LoRA 7B/14B,QLoRA 32B |
| A100 80GB | LoRA 32B,QLoRA 70B |
| 多卡服务器 | 可以考虑 LoRA 大模型或全参微调 |
如果你是常见的RTX 3090/4090 24GB,推荐:
Qwen2.5-7B-Instruct + QLoRA Qwen3-4B/8B + QLoRA Llama-3.1-8B-Instruct + QLoRA