大模型的微调/精调(Fine-tuning, 译为精调更为准确些)是指在预训练的大规模模型基础上,使用较小规模的领域数据或任务数据对模型继续训练,以适应特定任务的过程。它是迁移学习(Transfer Learning)的一种核心形式。
一、微调的基本原理
大模型(如GPT、BERT、LLaMA等)通常是在大规模通用数据上预训练的,它们学到了广泛的语言知识和推理能力。然而,在具体任务上(如医学问答、法律摘要、金融预测)仍然表现不佳。微调的目的就是用少量高质量的任务数据,对模型的部分或全部参数进行再训练,使其在目标任务上表现更好。
其基本思想是:
- 保留原模型已有的“通用能力”
- 加入新数据学习“特定能力”
二、微调的类型
1. 全参数微调(Full-parameter Fine-tuning)
- 对模型的所有参数进行更新。
- 优点:理论上可以达到最优效果。
- 缺点:需要大量计算资源和GPU内存;容易过拟合小数据集。
2. 参数高效微调(PEFT)
主要目标是在不修改全部参数的前提下达到微调效果,方法包括:
方法 | 原理 | 特点 |
---|---|---|
LoRA(Low-Rank Adaptation) | 插入低秩矩阵到权重中训练,冻结原模型参数 | 参数少,效率高 |
Adapter | 在Transformer层中插入小型子网络,仅训练这部分 | 插件化、可组合性强 |
Prefix Tuning | 固定模型,仅训练“前缀向量”作为提示 | 极度高效、适合生成类任务 |
BitFit | 仅训练偏置项 | 极致轻量级方案 |
3. 指令微调(Instruction Tuning)
- 给模型提供多样化指令输入与输出样例(如“翻译这段话成英文”),使其学会按人类意图执行任务。
- 是ChatGPT、Claude等对话模型的训练关键。
4. 对齐微调(Alignment Fine-tuning)
- 使用人类反馈或规则对模型输出进行偏好优化,如RLHF(Reinforcement Learning with Human Feedback)。
- ChatGPT 的核心组成部分。
三、微调的一般流程
- 准备数据集
- 数据应包括输入-输出对(如文本问答、文本分类标签等)
- 进行清洗、格式化、tokenization
- 选择微调方式
- 小模型可全参数微调
- 大模型优选LoRA、Adapter等PEFT方法
- 配置训练参数
- 学习率(1e-5 ~ 5e-5)
- batch size(依硬件能力)
- epoch(根据数据大小与过拟合程度)
- 加载预训练模型
- 使用如HuggingFace Transformers加载BERT、GPT等
- 训练过程
- 使用AdamW优化器
- 监控loss、准确率、验证指标等
- 模型保存与推理
- 保存权重、配置文件、Tokenizer等
- 推理时可用transformers或API调用
四、微调技巧与实战经验
- 冻结部分层数:只训练顶部几层,防止遗忘原有知识(catastrophic forgetting)
- 使用权重衰减(weight decay):防止过拟合
- 梯度裁剪(gradient clipping):稳定训练过程
- 学习率调度(lr scheduler):逐步减小学习率,提高收敛效果
- 混合精度训练(FP16):减少显存使用,加快训练
五、微调面临的挑战
- 数据稀缺性
- 特定领域的数据往往很少,需要数据增强或合成数据技术
- 过拟合
- 小样本下容易过拟合,需使用早停、正则化、dropout等手段
- 灾难性遗忘
- 全参数微调容易让模型忘记预训练知识
- 硬件资源限制
- 大模型(如70B)几乎无法在单机上直接训练
六、最新发展与趋势
- LoRA 2 / QLoRA
- 支持大模型在消费级GPU上进行精调,结合8-bit量化和LoRA结构
- OpenChat / Zephyr / DPO
- 结合监督微调与偏好优化(如DPO:Direct Preference Optimization)
- Multimodal Fine-tuning
- 针对图文、语音、视频等多模态任务的微调方法发展迅速
- 增量式微调 / Online Fine-tuning
- 模型不断接收新数据并调整行为,适合部署后的长期维护
- 数据合成与对齐数据集建设
- 合成人类指令任务(如Self-Instruct)以支持更广泛的对话场景