一、为什么需要微调¶
微调的核心价值,通常体现在下面几个方面:
- 解决预训练模型“通用但不够专”的问题。
- 处理目标场景与预训练数据之间的数据分布差异。
- 在有限计算资源下,用更高效的方式提升效果。
- 针对特定任务继续提升模型性能。
- 满足企业或个人对模型行为的个性化定制需求。
二、常见微调技术分类¶
2.1 全参数微调¶
全参数微调(Full Fine-Tuning)会更新预训练模型的全部参数,让模型尽可能贴合目标任务。
原理¶
利用目标任务数据集,通过梯度下降等优化算法更新模型的所有权重。
优点¶
- 性能上限通常最高。
- 适合数据量充足、任务复杂、领域差异大的场景。
缺点¶
- 算力和显存消耗都很大。
- 每个任务都要保存完整模型副本,存储成本高。
- 小数据集上更容易过拟合。
适用场景¶
数据量足、任务复杂、和原始预训练差异较大的领域任务,例如专业文本生成、复杂分类、多轮生成等。
2.2 参数高效微调¶
参数高效微调(PEFT)只训练少量参数,或者额外插入少量模块,从而显著降低训练和存储成本。
常见方法¶
- Adapter:
- 在每层里插入小型网络模块,仅训练这些模块。
- 优点是参数量小、支持多任务复用。
- LoRA:
- 通过低秩分解只更新少量低秩矩阵参数。
- 优点是高效、模块化、适合任务切换。
- QLoRA:
- 把量化和 LoRA 结合起来,用更低显存做大模型微调。
- 优点是显存效率高,适合消费级 GPU。
- Prompt Tuning:
- 不改模型主体,只学习输入里的提示向量。
- 优点是参数极小,适合超大模型。
- Prefix Tuning:
- 在各层输入中加入可学习前缀,引导模型适配任务。
- 更适合生成类任务,但实现与调试复杂度更高。
适用场景¶
数据有限、资源紧张、需要低成本试错或快速部署时,PEFT 往往是优先选择。
2.3 迁移学习式微调¶
迁移学习式微调通常会先在和目标领域相关的中间数据集上做一次领域自适应,再进入具体任务微调。
原理¶
先用中间领域数据缩小和目标场景之间的分布差异,再做任务级微调。
优点¶
- 对数据稀缺但领域差异大的场景效果明显。
- 特别适合医疗、法律、金融等专业领域。
缺点¶
- 需要额外准备中间数据集。
- 训练流程更长、算力消耗更高。
2.4 知识蒸馏微调¶
知识蒸馏的思路是让小模型学习大模型的输出行为,以便在更低资源环境下保留大模型能力。
优点¶
- 推理成本低。
- 更适合边缘设备、端侧部署和轻量服务。
缺点¶
- 需要先有强教师模型。
- 蒸馏链路会增加训练复杂度。
2.5 指令微调¶
指令微调是近几年大语言模型里非常常见的一条路线,本质上是让模型通过“指令-回答”数据学会更好地遵循人类命令。
优点¶
- 提升零样本和少样本能力。
- 强化模型的多任务适应性。
缺点¶
- 依赖高质量指令数据。
- 数据构建成本往往不低。
适用场景¶
通用对话、问答助手、复杂指令执行这类需要“听得懂人话”的场景。
三、先建立一个简单判断¶
如果你追求极致效果,优先考虑全参数微调;如果你更在意资源成本和部署效率,LoRA、QLoRA 这类参数高效路线通常更现实;如果领域差异很大,再把迁移学习和指令微调结合起来,效果往往会更稳。