前言:
随着 DeepSeek、Qwen、Llama 等开源大模型的不断发展,越来越多的企业开始尝试训练属于自己的 AI 助手。然而,一个通用大模型并不能直接满足所有业务需求,例如企业知识库问答、客服机器人、代码助手等场景,都需要让模型学习新的领域知识或特定的输出风格
这时候,就需要用到模型微调(Fine-tuning)
我在这里将系统介绍大模型微调的原理、常见方法以及目前工业界最主流的 LoRA、QLoRA 技术,希望帮助大家建立完整的知识体系
一、什么是大模型微调?
在介绍微调之前,我们先了解一下大模型是如何训练出来的,一个大语言模型通常会经历三个阶段:
1、海量文本数据
2、预训练
3、微调
预训练(Pretraining):模型学习语言规律、知识和推理能力
例如:阅读互联网网页、阅读代码、阅读论文、阅读书籍
经过数万亿 Token 的训练之后,模型已经拥有较强的通用能力,但是,它并不知道:
企业内部业务流程
公司知识库
医疗规范
法律法规
客服回复风格
因此,需要利用新的数据继续训练模型,这就是Fine-tuning(微调)
预训练决定模型"知道什么",微调决定模型"如何完成你的任务"。
二、为什么需要微调?
你可能会有疑惑:既然 Prompt 写得足够好,是不是就不需要微调了?
实际上,两者解决的问题不同。
Prompt 更适合:临时任务、一次性指令、灵活交互
微调更适合:固定输出格式、行业知识、企业术语、特定写作风格、提高稳定性、降低 Prompt 长度
例如,一个企业客服机器人,如果完全依赖 Prompt,可能需要每次都输入几百甚至上千字的系统提示;而经过微调后,模型可以天然遵循企业的话术和回答规范,大幅减少 Prompt 的复杂度
需要注意的是,对于知识更新频繁的场景(如企业文档、新闻、商品信息),RAG(检索增强生成)通常比微调更合适;而对于需要改变模型行为、风格或专业能力的任务,微调依然是重要手段。实际项目中,很多团队会采用Prompt + RAG + LoRA 微调的组合方案
三、大模型微调有哪些方式?
目前主流的微调方式可以分为两大类:
Fine-tuning │ ├── Full Fine-tuning │ └── PEFT(参数高效微调) ├── Adapter ├── Prefix Tuning ├── Prompt Tuning ├── BitFit ├── IA³ ├── LoRA └── QLoRA其中:
Full Fine-tuning 是传统方法
PEFT(Parameter-Efficient Fine-Tuning)是目前工业界主流方案
LoRA、QLoRA 是使用最广泛的两种技术
四、Full Fine-tuning(全参数微调)
全参数微调就是:模型中的所有参数全部参与训练
优点
能充分释放模型潜力
微调效果通常最好
适用于继续预训练(Continual Pretraining)
缺点
代价非常高,一个 70B 参数模型:
参数约 700 亿
Optimizer State 通常还需要额外存储 2~4 倍参数
往往需要几十张甚至上百张 GPU
因此,全参数微调更多出现在大型模型研发团队,而不是普通企业项目
五、PEFT:参数高效微调
由于 Full Fine-tuning 成本过高,研究者提出了PEFT(Parameter-Efficient Fine-Tuning)。
核心思想只有一句话:冻结原模型,只训练少量新增参数。
示意图如下:
原模型(冻结) ↓ 新增模块(训练) ↓ 输出这样做有几个明显优势:
GPU 显存占用低
训练速度快
可以维护多个业务适配器
原模型无需重复保存
PEFT 已成为目前大模型微调的主流方向。
六、LoRA:目前最流行的微调方法
如果要评选近几年影响力最大的微调技术,LoRA 一定榜上有名。
LoRA 全称:Low-Rank Adaptation(低秩适配)
它最大的特点就是:冻结原模型,仅学习一个低秩增量矩阵。
假设模型中某一层为:[Y = WX]
传统微调:更新 W
LoRA:先冻结 W,再训练 ΔW
最终:[W' = W + \Delta W]
LoRA 并不会直接学习完整的 ΔW,而是将它拆成两个低秩矩阵:[\Delta W = BA]
其中:
A:r × d
B:d × r
这里的r(Rank)一般远小于 d,通常设置为 8、16、32 或 64。
举个例子,原矩阵:
4096 × 4096参数量约:
1677 万如果:
Rank = 8LoRA 实际训练:
4096×8 + 8×4096总共约6.5 万参数,相比千万级参数,训练量减少了数百倍
七、QLoRA:消费级显卡也能训练大模型
LoRA 已经降低了训练成本,但模型本身仍然需要占用大量显存,于是,QLoRA 应运而生
QLoRA 可以理解为:
LoRA + 模型量化(Quantization)传统模型:
16 bitQLoRA:
4 bit训练时:
4bit 模型(冻结) + LoRA 参数(训练)这样可以显著降低显存需求
例如,一个 7B 模型:
| 精度 | 显存占用(约) |
|---|---|
| FP16 | 14GB |
| INT8 | 7GB |
| INT4 | 3.5GB |
因此,即使只有一张 24GB 显存的消费级 GPU,也能完成很多开源模型的微调任务,这也是目前开源社区最常见的微调方案
八、其他常见微调方法
除了 LoRA,还有一些经典方法:
Adapter
在 Transformer 中增加 Adapter 层,训练时:
Transformer:冻结 Adapter:训练特点:
效果不错
推理速度略慢
使用率已被 LoRA 超越
Prefix Tuning
训练一段可学习的 Prefix。
Prefix + 输入参数极少,但效果一般弱于 LoRA
Prompt Tuning
进一步缩小训练范围。
训练内容只有 Prompt Embedding。
适用于超大规模模型。
BitFit
仅训练 Bias 参数。
实现简单,但效果有限。
IA³
IA³ 不新增大型矩阵,而是在模型内部增加少量可学习的缩放参数,对中间激活进行调节。
特点:
参数量极少
推理效率高
在部分任务中效果接近 LoRA
微调方法对比
| 微调方式 | 更新参数 | 显存需求 | 效果 | 推荐程度 |
|---|---|---|---|---|
| Full Fine-tuning | 100% | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| Adapter | 1%~5% | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| LoRA | 0.1%~1% | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| QLoRA | 0.1%~1% | ⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Prefix Tuning | 极少 | ⭐ | ⭐⭐⭐ | ⭐⭐ |
| Prompt Tuning | 极少 | ⭐ | ⭐⭐⭐ | ⭐⭐ |
| BitFit | 极少 | ⭐ | ⭐⭐ | ⭐ |
| IA³ | 极少 | ⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
如何选择微调方案?
实际开发中,可以参考下面的建议:
算力充足,需要最大化性能:选择 Full Fine-tuning。
企业项目、需要快速适配业务:优先选择 LoRA。
单卡或消费级 GPU:优先选择 QLoRA。
维护多个业务版本:LoRA/QLoRA 更容易管理和部署。
对于绝大多数开发者而言,LoRA 或 QLoRA 已经能够满足 90% 以上的微调需求。