仓库地址
https://github.com/hiyouga/LlamaFactory?tab=readme-ov-file
本文以 LLM 实体抽取任务为例,介绍基于 LlamaFactory 的微调流程。
微调种类
LlamaFactory 支持多种微调方式,主要分为参数更新策略和训练目标两个维度。
怎么更新参数
1) Full-tuning(全量微调)
做法:模型所有参数都更新。 优点:
- 表达能力最强,理论上效果上限最高。
- 训练/推理代码最简单。 缺点:
- 显存、训练成本最高;多卡/ZeRO/FSDP 常见。
- 容易'灾难性遗忘',数据不够干净时容易把模型训歪。 适用场景:数据量大、预算足、想做真正的模型版本迭代。
2) Freeze-tuning(冻结主干)
做法:大部分参数冻结,只训练很少一部分(如最后几层、Adapter)。 优点:成本低、稳定。 缺点:可塑性有限,效果上限通常不如 LoRA/全量。 适用场景:快速适配、资源很紧、轻微对齐/迁移。
3) LoRA(最常用的 PEFT)
做法:冻结原权重,在注意力/MLP 的线性层旁边加一对低秩矩阵 A,B,只训练增量部分。 优点:
- 性价比极高:显存大幅下降,效果通常接近全量微调。
- 可为同一个基座模型保存多套 LoRA。 缺点:仍然需要基座模型以 FP16/BF16 方式加载训练。 适用场景:几乎所有常规微调(SFT、DPO、ORPO、SimPO)。默认首选。
4) QLoRA(LoRA + 4bit 量化)
做法:基座权重量化到 4bit(NF4),仍然只训练 LoRA 参数。 优点:显存最省,单卡也能训更大的模型。 缺点:依赖 bitsandbytes/量化算子,速度可能慢一点,有数值兼容坑。 适用场景:有限 GPU 上把模型尺寸顶上去,非常常用。
用什么训练目标/数据形式
1) SFT(Supervised Fine-Tuning)
数据:(prompt, response) 的标准监督数据。 原理:最大化参考答案的似然(cross-entropy)。 优点:最简单、最稳、最常用的第一步;让模型学会按指令说话。 缺点:只能学到数据分布,不直接优化偏好/安全。
2) Reward Modeling(RM,奖励模型)
数据:偏好对比(A vs B)或打分数据。 用途:预测人类更喜欢哪个回答,为 RL(如 PPO)提供 reward。 优点:将人类偏好变成可优化的标量信号。 缺点:需维护额外模型;reward 容易被钻空子。
3) PPO Training(经典 RLHF)
数据:prompt + RM 评分。 原理:用 PPO 最大化 reward,同时用 KL 约束偏离原模型。 优点:能直接优化偏好得分。 缺点:成本最高、最难调;对实现细节敏感。


