大模型微调
为什么要微调?
预训练的通用大模型虽然知识广博,但直接用在专业场景时,可能会"水土不服"。微调主要解决以下几个问题:
- 成为领域专家:让模型理解特定领域的术语和知识。比如,通用模型可能分不清中医里的"肝火旺盛"和"肝气郁结",但经过医案数据微调后,它就能准确辨析并给出符合逻辑的建议。
- 遵循特定格式:让模型的输出格式变得稳定、统一。例如,要求模型生成一份必须包含"事故描述、责任认定、赔偿明细、适用条款"四部分的保险理赔报告,微调可以极大提升格式遵从率。
- 塑造独特风格:让模型学会特定的"品牌声音"。比如,一个零售品牌的AI助手,需要语气亲切活泼,回复简短,并带有专属结束语。微调可以将这套风格内化,无需在每次提问时都用长 prompt 强调。
微调是怎么做的?
微调的核心是迁移学习。它不是从零开始训练,而是加载预训练好的模型权重,然后用你的数据继续训练,更新模型的参数。
根据更新参数的范围,主要分为两种策略:
| 策略类型 | 简介 | 适用场景 |
|---|---|---|
| 全参数微调 | 更新模型的所有参数,效果最好,但对数据和算力要求高。 | 数据充足、计算资源丰富、对精度要求极高。 |
| 参数高效微调 (PEFT) | 只更新一小部分额外参数,大部分模型参数保持冻结。代表方法是 LoRA。 | 资源受限环境(如消费级显卡),目前最主流的方式。 |
什么时候不需要微调?
微调虽好,但不是万能药。在以下情况,可能不需要或不适合微调:
- 提示词工程(Prompt Engineering)还能优化:如果通过精心设计的提示词和少量示例(Few-shot)就能达到不错的效果,应优先优化提示词。它的迭代速度更快,成本几乎为零。
- 知识更新非常频繁:如果业务依赖的知识每天都在变(如股票行情、最新新闻),微调就跟不上了。此时,检索增强生成(RAG)技术是更合适的选择。
- 数据量极少:如果只有几十条样本,微调很容易导致模型"死记硬背"(过拟合),效果反而更差。不如直接把这些高质量样本放进提示词里。
有哪些微调技术?
大模型的微调技术主要可以分为两大类:传统的全参数微调和当前主流的参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)。
PEFT 技术通过冻结预训练模型的大部分参数,仅训练少量新增的参数,极大地降低了计算成本和资源需求,使得在消费级硬件上微调大模型成为可能。
以下是几种主流的微调技术:
- 适配器微调 (Adapter Tuning)
这种方法像是在一个已经建好的大楼(预训练模型)里,为每个房间(如 Transformer 层)增加一个小小的、可定制的"适配器"模块。
原理:在模型的层与层之间插入一些小型的、可训练的神经网络模块(即"适配器"),同时冻结原始模型的绝大部分参数。训练时,只有这些新增的适配器模块的参数会被更新。
优点:非常节省显存和计算资源,并且可以为不同任务训练不同的适配器,方便切换。
缺点:由于增加了额外的网络层,可能会轻微增加模型推理时的延迟。 - 前缀/提示微调 (Prefix/Prompt Tuning)
这种方法不改变模型结构,而是通过给模型"喂"一些可学习的"提示"来引导其行为。
原理:在输入数据的前面,附加上一段或多段可训练的连续向量(即"前缀"或"软提示")。这些向量就像是为特定任务定制的指令,模型在学习过程中会调整这些向量,从而引导其输出符合预期的结果。
优点:需要训练的参数量极少,效率非常高,尤其适用于文本生成类任务。
缺点:性能可能在某些复杂任务上不如其他方法,且对初始化的提示向量比较敏感。
低秩适应 (LoRA)
LoRA (Low-Rank Adaptation) 是目前最流行、应用最广泛的 PEFT 技术,因其出色的效率和效果而备受青睐。
原理:LoRA 的核心思想是,模型在适应新任务时,其权重的更新量(即参数变化)具有"低秩"特性。因此,它不直接更新庞大的原始权重矩阵,而是用两个非常小的低秩矩阵来"模拟"这个更新过程。训练时,原始模型参数被冻结,只训练这两个小矩阵。
优点:
极低的资源消耗:可训练参数量可减少 99% 以上,显存占用大幅降低。
无推理延迟:训练完成后,可以将这两个小矩阵的权重合并到原始模型中,因此推理速度和原模型完全一样。
灵活切换:可以为不同任务保存不同的 LoRA 权重文件,根据需要随时加载,非常灵活。
衍生技术:QLoRA 在 LoRA 的基础上,进一步对预训练模型进行量化(如降至 4-bit 精度),使得在显存更小的显卡上微调更大规模的模型成为可能。
| 技术类型 | 核心思想 | 优点 | 缺点 |
|---|---|---|---|
| 适配器微调 | 插入小型可训练模块 | 模块化,易于管理多个任务 | 可能增加推理延迟 |
| 前缀/提示微调 | 添加可学习的输入向量 | 参数极少,效率高 | 对复杂任务效果可能受限 |
| LoRA | 用低秩矩阵模拟权重更新 | 资源消耗极低,无推理延迟,灵活 | 需要选择合适的秩(rank)等超参数 |
如何选择?
首选 LoRA/QLoRA:对于绝大多数场景,尤其是资源有限或需要快速实验时,LoRA 是最佳选择。它在效果、效率和灵活性之间取得了极好的平衡。
- 考虑适配器微调:如果你需要为同一个基座模型快速部署和切换大量不同的下游任务,适配器方案会非常方便。
- 尝试前缀微调:如果你的任务相对简单,且对参数量有极致要求,可以优先考虑前缀微调。