大模型关键能力 / 微调技术(Fine-tuning)
CHAPTER 04 · TOPIC 05

微调技术(Fine-tuning)

微调是在预训练模型的基础上,用特定领域或任务的数据进一步训练模型,使其适应特定应用场景。如果说预训练让模型"通识百物",那微调就是让模型"专精一域"。本章详解各种微调方法,重点介绍当前最实用的 LoRA 系列技术。

一句话理解

微调是在预训练模型的基础上,用特定领域或任务的数据进一步训练模型,使其适应特定应用场景。如果说预训练让模型"通识百物",那微调就是让模型"专精一域"。本章详解各种微调方法,重点介绍当前最实用的 LoRA 系列技术。

阅读前置

建议完成第 02 章

本文关注

微调 vs 预训练 vs RAG、全参数微调(Full Fine-tuning)、参数高效微调(PEFT)

所在知识层

能力扩展 · 大模型关键能力

文章导航
主教学视觉微调技术(Fine-tuning) · 知识结构

点击图中节点可定位到对应正文。

核心主题关系与流向

引言

微调是在预训练模型的基础上,用特定领域或任务的数据进一步训练模型,使其适应特定应用场景。如果说预训练让模型"通识百物",那微调就是让模型"专精一域"。本章详解各种微调方法,重点介绍当前最实用的 LoRA 系列技术。


1. 微调 vs 预训练 vs RAG

1.1 三者的定位

TEXT
预训练(Pre-training):
  目的:获取通用语言能力
  数据:万亿 tokens 的通用文本
  成本:数百万美元
  频率:一次性(或定期重新训练)

微调(Fine-tuning):
  目的:适应特定任务/领域/风格
  数据:千到百万条标注数据
  成本:数百到数万美元
  频率:按需(新任务/新领域时)

RAG(检索增强生成):
  目的:注入外部知识
  数据:知识库文档
  成本:低(不需要训练)
  频率:实时更新知识库即可

1.2 何时用微调,何时用 RAG

场景推荐方案理由
知识经常更新RAG更新文档即可,不需要重新训练
需要改变输出风格/格式微调改变模型行为,RAG 做不到
需要专业领域术语微调让模型内化领域语言
需要答案可溯源RAG可以指向具体文档来源
需要降低幻觉RAG + 微调RAG 提供事实,微调提升遵循能力
预算有限RAG不需要 GPU 训练资源
需要减少 prompt 长度微调模型已内化知识,不需要长提示

2. 全参数微调(Full Fine-tuning)

2.1 原理

直接对整个预训练模型的所有参数进行梯度更新:

语义 SVG 重绘微调技术(Fine-tuning)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

预训练模型(如 7B 参数)所有 7B 参数都参与梯度更新微调后的模型
查看原文结构
预训练模型(如 7B 参数)
    ↓
所有 7B 参数都参与梯度更新
    ↓
微调后的模型

2.2 适用场景

  • 有充足的计算资源
  • 有大规模高质量标注数据(10 万条以上)
  • 需要模型发生根本性的行为变化
  • 构建领域专用基座模型(如医学、法律领域模型)

3. 参数高效微调(PEFT)

3.1 核心思想

不更新全部参数,而是训练少量"附加参数"来适配新任务:

语义 SVG 重绘微调技术(Fine-tuning)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

预训练模型(冻结大部分参数)+ 少量可…只训练附加参数(通常 < 1% 的总参…推理时合并附加参数,不增加推理延迟
查看原文结构
预训练模型(冻结大部分参数)+ 少量可训练参数
    ↓
只训练附加参数(通常 < 1% 的总参数)
    ↓
推理时合并附加参数,不增加推理延迟

3.2 LoRA(Low-Rank Adaptation)

最流行的参数高效微调方法,由 Microsoft 在 2021 年提出。

核心原理:

语义 SVG 重绘微调技术(Fine-tuning)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

输入与上下文前向传播:系统核心h = Wx + BAx原始输出 LoRA 增量工具、结果与反馈
查看原文结构
前向传播:
  h = Wx + BAx
     ↑       ↑
   原始输出  LoRA 增量

LoRA 的关键优势:

优势说明
参数高效只需训练原参数量的 0.1-1%
内存节省70B 模型的 LoRA 只需 1-2 张 GPU
无推理延迟训练后可将 LoRA 权重合并到原模型
多任务切换同一个基座模型 + 不同的 LoRA 适配器
存储节省每个 LoRA 适配器只有几 MB

3.3 QLoRA(Quantized LoRA)

在 LoRA 基础上结合量化,进一步降低显存需求:

语义 SVG 重绘微调技术(Fine-tuning)

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

1. 4-bit NormalFloa…将基础模型量化为 4-bit信息论最优的量化方式70B 模型从 140GB35GB
查看原文结构
1. 4-bit NormalFloat (NF4) 量化
   - 将基础模型量化为 4-bit
   - 信息论最优的量化方式
   - 70B 模型从 140GB → ~35GB

3.4 LoRA 配置参数

PYTHON
from peft import LoraConfig, get_peft_model

lora_config = LoraConfig(
    r=16,                    # LoRA 秩(rank),越大能力越强但参数越多
    lora_alpha=32,           # 缩放因子,通常设为 2*r
    target_modules=[         # 对哪些层应用 LoRA
        "q_proj",            # 查询投影
        "k_proj",            # 键投影
        "v_proj",            # 值投影
        "o_proj",            # 输出投影
        "gate_proj",         # FFN 门控
        "up_proj",           # FFN 上升
        "down_proj",         # FFN 下降
    ],
    lora_dropout=0.05,       # Dropout 率,防止过拟合
    bias="none",             # 偏置的训练策略
    task_type="CAUSAL_LM"    # 任务类型
)

model = get_peft_model(base_model, lora_config)
model.print_trainable_parameters()
# 输出: trainable params: 20M || all params: 7B || trainable%: 0.28%

3.5 其他 PEFT 方法

方法原理参数量效果
Adapter在 Transformer 层间插入小型适配器模块~1-3%
Prefix Tuning在每层添加可学习的前缀向量~0.1%
P-Tuning v2在每层添加可学习的连续提示~0.1-3%中-好
LoRA低秩矩阵分解~0.1-1%好(推荐)
QLoRA量化 + LoRA~0.1-1%好(最省显存)

4. 微调数据准备

4.1 数据格式

**指令微调格式(最常用):**

JSON
[
  {
    "instruction": "将以下文本翻译成英文",
    "input": "今天天气真好",
    "output": "The weather is really nice today."
  },
  {
    "instruction": "对以下文本进行情感分类",
    "input": "这个产品太差了,完全不能用",
    "output": "负面"
  }
]

对话格式:

JSON
{
  "conversations": [
    {"role": "system", "content": "你是一位专业的法律顾问"},
    {"role": "user", "content": "租房合同到期房东不退押金怎么办?"},
    {"role": "assistant", "content": "根据《民法典》第七百零三条..."}
  ]
}

4.2 数据质量控制

TEXT
高质量微调数据的特点:
1. 准确性:输出内容正确无误
2. 一致性:风格、格式、术语统一
3. 多样性:覆盖各种输入场景
4. 完整性:回答充分完整,不遗漏要点
5. 安全性:不包含有害内容

数据清洗建议:
- 去重(精确去重 + 模糊去重)
- 人工审核(至少抽检 5-10%)
- 使用 GPT-4 辅助检查质量
- 确保输入-输出配对的准确性

4.3 数据量参考

场景推荐数据量说明
风格/格式调整50-500 条少量高质量示例即可
特定任务优化1K-10K 条如分类、抽取、总结
领域适应10K-100K 条如医疗、法律、金融
构建基座模型100K-1M+ 条如指令跟随的通用能力

5. 微调实践指南

5.1 训练流程

语义 SVG 重绘微调技术(Fine-tuning) · 结构 1

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

1. 准备数据收集和清洗数据格式化为训练格式划分训练集/验证集(9:1 或 95:…
查看原文结构
1. 准备数据
   ├── 收集和清洗数据
   ├── 格式化为训练格式
   └── 划分训练集/验证集(9:1 或 95:5)
语义 SVG 重绘微调技术(Fine-tuning) · 结构 2

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

2. 选择基座模型根据需求选择模型大小(7B/13B/7…选择基座版本(Base 还是 Inst…
查看原文结构
2. 选择基座模型
   ├── 根据需求选择模型大小(7B/13B/70B)
   └── 选择基座版本(Base 还是 Instruct/Chat)
语义 SVG 重绘微调技术(Fine-tuning) · 结构 3

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

3. 配置训练参数学习率:1e-5 3e-4(LoRA …Batch Size:根据显存调整(通…Epoch:2-5 个 epoch(太…Warmup:10% 的训练步数
查看原文结构
3. 配置训练参数
   ├── 学习率:1e-5 ~ 3e-4(LoRA 可以大一些)
   ├── Batch Size:根据显存调整(通常 4-16)
   ├── Epoch:2-5 个 epoch(太多会过拟合)
   └── Warmup:10% 的训练步数
语义 SVG 重绘微调技术(Fine-tuning) · 结构 4

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

4. 训练监控训练 loss 和验证 loss保存 checkpoint早停(验证 loss 不再下降时停止)
查看原文结构
4. 训练
   ├── 监控训练 loss 和验证 loss
   ├── 保存 checkpoint
   └── 早停(验证 loss 不再下降时停止)
语义 SVG 重绘微调技术(Fine-tuning) · 结构 5

根据原图的箭头、并列、分层与循环关系选择对应图形;可展开核对原文结构。

查看原文结构
5. 评估
   ├── 自动指标评估
   ├── 人工质量评估
   └── A/B 测试(与原模型对比)

5.2 常见问题与解决

问题原因解决方案
训练 loss 不下降学习率太小 / 数据有问题增大学习率 / 检查数据
过拟合数据太少 / epoch 太多增加数据 / 减少 epoch / 加 dropout
灾难性遗忘微调过度减少 epoch / 使用 LoRA / 混合通用数据
输出重复数据中有重复模式增加数据多样性 / 降低 temperature
格式不一致训练数据格式不统一统一数据格式 / 增加格式示例

5.3 主流微调工具

工具特点适用场景
LLaMA-Factory一站式,支持多种方法快速实验和调参
Axolotl灵活,YAML 配置有经验的开发者
Hugging Face TRL官方库,集成好SFT + RLHF/DPO
Unsloth极致速度优化2-5 倍训练加速
OpenAI Fine-tuning云端一键微调不想管理基础设施

6. 本章小结

方法训练参数显存需求效果推荐场景
全参数微调100%极高最好大团队,大数据
LoRA~0.1-1%中等接近全量大多数场景(推荐)
QLoRA~0.1-1%接近 LoRA显存有限时
Adapter~1-3%中等多任务适配

核心建议: 大多数情况下,从 LoRA/QLoRA 开始尝试,只有在效果不满足要求时才考虑全参数微调。


相关章节


延伸阅读

  • Hu, E.J. et al. (2022). "LoRA: Low-Rank Adaptation of Large Language Models". ICLR
  • Dettmers, T. et al. (2023). "QLoRA: Efficient Finetuning of Quantized Language Models". NeurIPS
  • Houlsby, N. et al. (2021). "Parameter-Efficient Transfer Learning for NLP". ACL