大模型中微调的常用方案有哪些?
在大模型(LLM)的微调(Fine-tuning)领域,目前的方案主要可以从参数更新范围(全量 vs. 高效)和训练目标/阶段(指令微调 vs. 对齐)两个维度来分类。
以下是目前业界最常用的微调方案详解:
一、 基于参数更新范围的分类
这是最核心的技术分类,决定了你需要多少显存(VRAM)和算力。
1. 全量微调 (Full Fine-Tuning, FFT)
- 原理:对模型的所有参数(权重)进行更新。
- 特点:
- 优点:理论上效果上限最高,能让模型最彻底地适应新领域(如从通用领域转到极度垂直的医学或法律领域)。
- 缺点:资源消耗极大(通常需要 4-8 倍模型权重的显存),训练速度慢,且容易出现“灾难性遗忘”(Catastrophic Forgetting),即模型忘了原本通用的能力。
- 适用场景:拥有海量算力(H100/A100集群),且数据量巨大、领域跨度极大的情况。
2. 参数高效微调 (PEFT, Parameter-Efficient Fine-Tuning)
这是目前最主流的方案,旨在冻结大部分模型参数,仅更新极少量的参数,从而大幅降低显存需求。
LoRA (Low-Rank Adaptation) —— 【目前最常用】
- 原理:在模型的 Linear 层旁边增加一个旁路(由两个低秩矩阵 和 相乘组成)。训练时冻结原模型权重,只训练这两个小矩阵。
- 优点:参数量仅为原模型的千分之一甚至万分之一,显存占用极低,效果接近全量微调,且训练后的权重(Adapter)很小,易于分享和切换。
- 适用场景:绝大多数消费级显卡微调、企业私有化部署。
QLoRA (Quantized LoRA)
- 原理:在 LoRA 的基础上,将原模型的主干权重进行 4-bit 量化(NF4格式),进一步压缩显存,同时利用分页优化器(Paged Optimizers)防止显存爆满。
- 优点:能在单张消费级显卡(如 RTX 3090/4090)上微调 70B 甚至更大参数的模型。
- 适用场景:资源受限的个人开发者或中小企业。
P-Tuning v2 / Prefix Tuning
- 原理:在模型的每一层输入前添加可训练的连续向量(Soft Prompts/Prefixes)。
- 现状:在 ChatGLM 早期版本中很流行,但目前逐渐被 LoRA 取代,因为 LoRA 的稳定性更好,且对推理延迟无影响(LoRA权重可以合并回原模型)。
Adapter Tuning
- 原理:在预训练模型的层之间插入小型的神经网络层(Adapter layers)。
- 现状:PEFT 的早期形式,现在使用较少,因为会增加推理时的延迟。
二、 基于训练阶段与目标的分类
这部分决定了你“如何教”模型,通常结合上述的 LoRA 或全量微调技术来实施。
1. 有监督微调 (SFT, Supervised Fine-Tuning)
- 又称:指令微调 (Instruction Tuning)。
- 数据格式:
Prompt (输入) + Response (输出)对。 - 目的:让模型学会“听懂人话”,按照指令格式输出内容。
- 流程:这是微调的第一步。比如你有一个医疗问答数据集,通过 SFT 让模型学会医生回答问题的语气和逻辑。
2. 对齐微调 (Alignment Tuning)
在 SFT 之后,为了让模型更符合人类价值观(有用、诚实、无害),通常会进行这一步。
RLHF (Reinforcement Learning from Human Feedback)
- 方案:ChatGPT 采用的经典方案。包含三个阶段:SFT -> 训练奖励模型 (Reward Model) -> 使用 PPO (近端策略优化) 算法强化学习。
- 缺点:流程极其复杂,训练不稳定,超参数极难调试,对显存要求极高。
DPO (Direct Preference Optimization) —— 【目前最火】
- 原理:直接偏好优化。跳过了独立的“奖励模型”训练和复杂的 PPO 过程。直接使用人类偏好数据(即:对于同一个问题,答案 A 优于 答案 B)构建损失函数来优化模型。
- 优点:数学上等价于 RLHF,但稳定得多,计算成本低,效果往往更好。
- 现状:目前开源社区(如 HuggingFace Zephyr, Llama-3-Instruct)微调的主流选择。
ORPO / KTO / IPO
- 原理:DPO 的变体。例如 ORPO 不需要 SFT 阶段,直接在预训练模型上做偏好对齐;KTO 不需要成对的偏好数据,只需要知道某个答案是“好”还是“坏”。
三、 常用工具与框架
如果你要动手微调,通常会用到以下框架:
- Llama-Factory: 目前最流行的“零代码”或低代码微调工具,支持 WebUI 界面,集成了 LoRA, QLoRA, DPO 等几乎所有主流技术,适配国内主流模型(Qwen, Yi, ChatGLM, Baichuan 等)。
- HuggingFace PEFT: 官方库,专注于参数高效微调。
- DeepSpeed / FSDP: 微软和 Meta 推出的分布式训练框架,用于多卡/多机加速全量微调。
- Unsloth: 一个新兴的优化库,能让 Llama/Mistral 等模型的微调速度提升 2-5 倍,且显存占用更低(主要针对 LoRA/QLoRA)。
总结建议
- 没钱/显卡少:使用 QLoRA (4-bit) + SFT。
- 有一定资源/追求效果:使用 LoRA (16-bit) + SFT,如果还需要对齐价值观,接着做 DPO。
- 土豪/科研机构/彻底改行:使用 全量微调 (Full Fine-Tuning)。
- 新手入门:推荐使用 Llama-Factory 配合 Unsloth 进行实验。