大模型微调入门:LoRA、SFT的原理与实操

为什么需要微调大模型?

预训练大模型(如 LLaMA、Qwen、ChatGLM)已经具备强大的通用能力,但在特定业务场景下往往表现不够理想,主要原因有:

  • 不了解企业特有的术语、产品、流程
  • 输出格式不符合业务需求(如固定JSON结构)
  • 在垂直领域(医疗、法律、金融)的准确性不足
  • 语气/风格与品牌形象不匹配

微调(Fine-tuning)就是用业务数据对预训练模型进行进一步训练,让模型”记住”并擅长特定任务。

全量微调 vs 参数高效微调

全量微调(Full Fine-tuning):更新模型所有参数。效果好,但需要大量 GPU 显存(7B模型需要至少 80GB+ VRAM)和训练时间,成本极高。

参数高效微调(PEFT):只更新极少量新增参数(通常不超过模型总参数的1%),效果接近全量微调,但资源需求大幅降低。LoRA 是目前最流行的 PEFT 方法。

LoRA原理详解

LoRA(Low-Rank Adaptation)的核心思想:将参数更新矩阵分解为两个低秩矩阵的乘积

假设原始权重矩阵为 W(维度 d×k),LoRA 不直接更新 W,而是新增两个小矩阵 A(d×r)和 B(r×k),其中 r 远小于 d 和 k(通常 r=8 或 r=16)。

训练时只更新 A 和 B,推理时将 W+AB 作为有效权重。这样参数量从 d×k 降低到 r×(d+k),当 r=16,d=k=4096 时,参数量减少约99.6%。

SFT vs RLHF:选哪个?

SFT(Supervised Fine-Tuning,监督微调):用”问题-答案”对直接训练模型,让模型学会给出正确回答。是最常用、最简单的微调方式。

RLHF(Reinforcement Learning from Human Feedback,人类反馈强化学习):ChatGPT使用的方式,需要人工对模型输出打分,再通过强化学习让模型输出更受人类偏好的内容。效果更好,但流程复杂,需要大量标注资源。

对于大多数企业应用场景,SFT + LoRA 是性价比最高的起点

实操:使用LLaMA-Factory进行LoRA微调

LLaMA-Factory 是目前最流行的开源微调框架,支持 LLaMA、Qwen、ChatGLM 等主流模型,提供 WebUI 和命令行两种操作方式。

基本流程:

  1. 准备数据集:整理成 Alpaca 格式(instruction + input + output 的JSON),通常需要 500~5000 条高质量样本
  2. 安装环境pip install llamafactory,需要 CUDA 环境,最低 16GB 显存(可用 4-bit 量化降低要求)
  3. 启动 WebUIllamafactory-cli webui,在界面中选择基础模型、LoRA 参数、数据集,点击开始训练
  4. 导出合并模型:训练完成后将 LoRA 权重合并到基础模型,用于部署
  5. 部署测试:通过 Ollama 或 vLLM 部署,API 调用验证效果

微调数据集的关键要素

微调效果好坏,数据质量比数量更重要:

  • 多样性:覆盖目标任务的各种表达方式和边界情况
  • 一致性:同类问题的回答风格、格式要统一
  • 准确性:错误数据会让模型”学坏”,需严格审核
  • 数量:简单任务 200~500 条即可,复杂任务建议 2000 条以上

总结

大模型微调已经从学术研究走向工程实践。借助 LoRA 和 LLaMA-Factory 等工具,一台消费级 GPU(如 RTX 4090)就能完成 7B 参数模型的微调。关键是准备高质量的业务数据,并选择与业务场景匹配的基础模型。