大模型微调入门:用自有数据定制模型
预训练基座模型通晓广博知识,却未必贴合你的业务:它可能拒绝执行特定格式、语气不对、或在专业领域答不准。微调(Fine-Tuning)就是用你自己的数据,把通用模型改造成「懂行」的专用模型。本文对比全量微调与参数高效微调(LoRA/QLoRA)、讲清指令微调的数据格式与偏好对齐思路,并给出选型、门槛与部署落地要点。
为什么要微调
当你发现提示词怎么写都达不到稳定效果时,往往就是微调的信号。常见动机有三类:
- 领域适配:注入行业术语、专有名词与知识边界,让模型在垂直场景答得准。
- 风格定制:固定输出语气、长度与格式,例如客服口吻或严格的 JSON 报表。
- 任务绑定:让模型稳定完成分类、抽取、函数调用等具体动作。
与单纯调提示相比,微调把能力「固化」进权重,适合高并发、低延迟且要求行为一致的生产场景。【已核验】
全量微调与参数高效微调
全量微调(Full Fine-Tuning)更新模型全部权重,拟合能力最强,但显存与算力开销极高:以 7B 模型为例,仅优化器状态与梯度就可能需要数十 GB 显存,更大模型需多卡分布式训练,对多数团队并不现实。
参数高效微调(PEFT)只训练注入的少量参数、冻结基座主体,因而单卡即可完成。其中最常用的是 LoRA 与 QLoRA,二者均可经由 Hugging Face 的 PEFT 库落地,这是社区广泛采用的事实标准方案。【已核验】
LoRA(Low-Rank Adaptation, Hu et al., 2021)假设权重更新量近似低秩,于是用两个小矩阵 B、A 近似增量 ΔW = BA,训练时只优化这两块小矩阵,参数量可降至全量的约万分之一,显存显著降低,且推理时可将 BA 合并回原权重、无额外延迟。
QLoRA(Dettmers et al., 2023)在 LoRA 之上把基座量化为 4-bit(NF4 格式),使 65B 级别模型也能在单张 48GB 显卡上微调,同时尽量保留接近 16-bit 全量微调的表现。它将微调成本压到了消费级与单卡可承受的范围。
from peft import LoraConfig, get_peft_model
config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM",
)
model = get_peft_model(base_model, config)
指令微调的数据格式
最常见的入门做法是监督微调(SFT):用「指令-回答」配对数据继续训练模型。数据格式并不复杂,一条样本通常包含系统设定、用户输入与期望回答。
{
"messages": [
{"role": "system", "content": "你是一名严谨的医疗客服"},
{"role": "user", "content": "我嗓子疼怎么办"},
{"role": "assistant", "content": "建议多喝温水、充分休息;若持续高热请就医。"}
]
}
数据质量远比数量重要:几千条干净、多样、覆盖典型场景的样本,常优于数万条噪声数据。训练时通常用较小学习率,以保留基座的通用能力、避免灾难性遗忘。
偏好对齐:RLHF 与 DPO
SFT 之后模型仍可能「听起来合理却不准」。偏好对齐负责让行为更符合人类期望。经典做法是 RLHF:先由标注者对多个回答排序、训练奖励模型,再用强化学习(如 PPO)优化策略,并以 KL 惩罚约束其偏离参考模型。该流程工程较重。
更轻量的替代是 DPO(Direct Preference Optimization, Rafailov et al., 2023):它把偏好对齐转化为一个直接分类损失,免去单独训练奖励模型,上手更简单。是否必须做偏好对齐,取决于你对「安全、语气、拒答」的要求强度;许多内部任务仅靠 SFT 已足够。【待核实】
数据量与算力门槛
粗略门槛(随模型与框架演进而变化,以实测为准):
- 风格或轻量任务适配:数百到数千条样本、单卡即可(QLoRA)。
- 领域知识注入:视领域规模,常需数千到数万条高质量样本。
- 全量微调大模型:通常需要集群级算力与专业工程能力。
起步建议用 LoRA/QLoRA 在单卡试跑,用一小批数据验证管线,再决定是否扩大投入。【已核验】
与 RAG、Prompt 的取舍
微调不是万能,先问自己能否用更轻的方案解决:
- 优先 Prompt:任务通用、模型本就擅长,调好指令与上下文最快。
- 优先 RAG:知识需频繁更新、要求可溯源、且不希望把私有数据写进权重。RAG 把答案限制在检索到的资料内,适合知识型问答。
- 选择微调:需要固化风格、绑定稳定格式,或在低延迟高并发下摆脱长上下文成本。
实践中三者常组合:RAG 提供实时知识,Prompt 组织行为,微调沉淀稳定能力。
部署与推理注意
微调产物多为适配器(adapter)或小权重差,部署时需注意:
- 合并与加载:LoRA 可合并回基座以零额外延迟推理,也可保持分离、按需热插拔多个适配器。
- 版本与回滚:为每组结果留存数据、超参与评测,便于对比与回退。
- 评测闭环:用 held-out 测试集与真实样本做回归,防止「看似更好、实则退化」。
- 合规:训练数据须去敏,避免泄露隐私或版权材料。
小结
微调是用自有数据把通用模型定制为专用模型的关键手段。入门优先选择 LoRA/QLoRA(可经 Hugging Face PEFT 落地),以 SFT 指令数据驱动,仅在确有需要时叠加 DPO 类偏好对齐。动手前先用 Prompt 与 RAG 排查,确认必须固化风格或格式再投入算力,并在部署时保留合并、版本与评测闭环。
参考与延伸阅读
- Hu, E. J. et al. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685 (2021).
- Dettmers, T. et al. QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314 (2023).
- Rafailov, R. et al. Direct Preference Optimization. arXiv:2305.18290 (2023).
- Ouyang, L. et al. Training language models to follow instructions with human feedback (InstructGPT). arXiv:2203.02155 (2022).
- Hugging Face PEFT 文档: https://huggingface.co/docs/peft 【已核验】
- 本栏目相关:LoRA 微调、QLoRA 微调、指令微调、偏好对齐。