微调技术

前置知识

阅读本文前,建议先了解:


一、概述

微调(Fine-tuning)是在预训练的基础上,用少量专业数据对模型进行进一步训练,使其适应特定任务或领域。

如果把预训练比作”通识教育”,微调就是”专业培训”。

预训练:博览群书,成为通才(Base Model)
    ↓
微调:专业训练,成为专家(Fine-tuned Model)
    ↓
人类对齐:品德教育,成为合格公民(Chat Model)

微调的关键特点

  • 数据量少:相比预训练的万亿 Token,微调只需数万到数百万条数据
  • 针对性强:针对特定任务或领域进行优化
  • 成本低:相比预训练的巨额成本,微调成本可接受

二、为什么需要微调

Base Model 虽然知识渊博,但不够”好用”:

问题说明示例
不会对话倾向于续写文本,而不是回答问题问”什么是 AI”,它续写问题而不是回答
不遵循指令无法理解”请总结…”、“请翻译…”等指令无法执行明确的任务指令
输出不稳定可能生成不安全或不合适的内容缺乏安全边界
领域不专在专业领域(如医疗、法律)表现不佳通用知识无法直接应用于专业场景

微调的核心思想:用少量专业数据,让模型适应特定任务。


三、指令微调

3.1 什么是指令微调

指令微调(Instruction Tuning)让模型更好地理解和执行人类指令。

做法:准备一系列”指令 - 回答”数据对,教模型按照指令行动。

训练数据示例:

指令: "把以下句子翻译成英文:我爱学习"
回答: "I love learning"

指令: "总结以下文章:..."
回答: "本文主要讨论..."

指令: "写一首关于春天的诗"
回答: "春风拂面,万物复苏..."

[!比喻] 指令微调类比 就像教一个博学但不听话的学生:

  • 给他一本”指令手册”
  • 每个指令配上标准答案
  • 反复练习,直到他能按要求行事

3.2 指令数据格式

指令微调数据通常采用以下格式:

{
  "instruction": "你的任务描述",
  "input": "可选的输入内容",
  "output": "期望的输出"
}

示例:

{
  "instruction": "将以下中文翻译成英文",
  "input": "今天天气很好",
  "output": "The weather is very nice today."
}
 
{
  "instruction": "分类以下情感",
  "input": "这部电影太好看了!",
  "output": "正面"
}
 
{
  "instruction": "写一首关于秋天的诗",
  "input": "",
  "output": "秋风送爽,金桂飘香..."
}

3.3 指令微调的效果

经过指令微调后,模型变得:

  • ✅ 更”听话”,能理解并执行指令
  • ✅ 回答更自然、更有帮助
  • ✅ 能够更好地进行多轮对话
  • ✅ 输出更稳定、更可控

四、全参数微调 vs 高效微调

4.1 全参数微调

全参数微调(Full Fine-tuning)需要更新模型的所有参数。

示例(7B 模型):
- 参数量:70 亿
- 精度:FP16(2 bytes/参数)
- 显存需求:70 亿 × 2 × 3(模型 + 梯度 + 优化器)≈ 42GB

这还只是"最低配置",实际训练需要更多显存。
优点缺点
效果最佳显存需求极高
技术成熟训练时间长
适用广泛无法同时运行多个微调模型

4.2 高效微调(PEFT)

Parameter-Efficient Fine-Tuning (PEFT) 只更新少量参数,大幅降低成本。

核心思想:
不修改原模型参数(冻结),只训练添加的小型模块。

原模型(冻结)+ 适配器(可训练)→ 微调模型
优点说明
显存需求低几 GB 显存即可微调大模型
训练速度快只训练少量参数
可插拔同一 Base Model 可加载多个适配器
效果接近效果接近全参数微调

五、LoRA(Low-Rank Adaptation)

5.1 LoRA 原理

LoRA 是最流行的高效微调技术之一。

核心思想:不直接修改原模型参数,而是添加小型”适配器”(Adapter)层。

原始权重矩阵 W₀(冻结)

添加低秩分解:
W = W₀ + ΔW = W₀ + BA

其中:
- B ∈ R^(d×r),秩为 r 的矩阵
- A ∈ R^(r×d),秩为 r 的矩阵
- r << d,秩很小(通常 r=8 或 r=16)

可训练参数量:2 × d × r
原参数量:d × d

当 d=4096, r=8 时:
- LoRA 参数:2 × 4096 × 8 ≈ 65,536
- 原参数:4096 × 4096 ≈ 16,777,216
- 比例:约 0.4%

为什么叫"低秩"?

秩(Rank)是线性代数概念,表示矩阵的”信息密度”。

LoRA 假设:模型适应新任务所需的”新信息”很少,所以可以用低秩矩阵表示。

5.2 LoRA 的实现细节

应用位置:通常在 Transformer 的注意力层应用 LoRA:

Transformer 层:
├── 自注意力层(Q, K, V, O 矩阵)← LoRA 应用在这里
└── 前馈网络层(可选)

通常只微调 Q、V 矩阵,效果与微调全部矩阵相当。

合并操作:推理时,LoRA 权重可以合并到原模型:

推理时:
输出 = W₀x + BAx = (W₀ + BA)x

可以预先计算 W' = W₀ + BA,推理时无额外开销。

5.3 LoRA 的优势

优点说明
显存需求低几 GB 显存即可微调大模型
训练速度快只训练少量参数
可插拔同一 Base Model 可加载多个 LoRA
效果接近效果接近全参数微调
无推理开销权重可合并,推理速度不变

六、QLoRA(Quantized LoRA)

6.1 QLoRA 原理

QLoRA 在 LoRA 的基础上引入量化技术。

核心思想:将模型权重量化为 4-bit,进一步降低显存需求。

精度对比:
- 全精度(FP32):4 bytes/参数
- 半精度(FP16):2 bytes/参数
- 4-bit 量化:0.5 bytes/参数

显存需求对比(65B 模型):
- 全参数微调:~780 GB
- LoRA(16-bit):~72 GB
- QLoRA(4-bit):~48 GB

6.2 量化技术

QLoRA 使用NF4(Normal Float 4)量化:

NF4 的特点:
- 针对正态分布权重量化
- 4-bit 精度下保留最多信息
- 支持双重量化(double quantization)进一步压缩

6.3 QLoRA 的效果

指标QLoRALoRA全参数微调
显存需求⭐⭐⭐⭐⭐⭐⭐⭐
训练速度⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
效果⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

七、其他高效微调技术

技术核心思想适用场景
Prefix Tuning在输入前添加可学习的前缀向量文本生成任务
Prompt Tuning学习软提示(Soft Prompt)而非硬提示分类、生成任务
Adapter在 Transformer 层间插入小型适配器模块多任务学习
IA³学习缩放因子,几乎不增加参数资源极度受限

八、微调方法对比

方法可训练参数显存需求(7B 模型)训练时间效果
全参数微调100%~28GB最佳 ⭐⭐⭐⭐⭐
LoRA1-10%~12GB接近全参数 ⭐⭐⭐⭐
QLoRA1-10%~8GB略逊于 LoRA ⭐⭐⭐
Prefix/Prompt<1%~6GB极短中等 ⭐⭐⭐

如何选择微调方法

  • 追求最佳效果 → 全参数微调
  • 平衡效果与成本 → LoRA
  • 显存极度受限 → QLoRA
  • 快速原型验证 → Prefix/Prompt Tuning

九、领域微调

9.1 垂直领域微调

将通用模型微调为领域专家:

领域微调数据应用场景
医疗医学文献、病历、诊断记录辅助诊断、健康咨询
法律法律条文、判例、合同法律咨询、合同审查
金融财报、研报、新闻投资分析、风险评估
代码GitHub 代码、技术文档代码生成、代码审查
客服客服对话记录、FAQ自动客服、工单处理

9.2 多语言微调

将英文为主的模型微调为支持其他语言:

Base Model(主要英文)
    ↓
多语言指令数据微调
    ↓
多语言 Chat Model

数据来源

  • 翻译数据(将英文指令翻译为目标语言)
  • 原生多语言数据(直接收集各语言的指令 - 回答对)

十、微调的最佳实践

10.1 数据准备

建议说明
数据质量优先1000 条高质量数据胜过 10 万条低质量数据
多样性覆盖多种任务类型和场景
数据平衡避免某类任务数据过多导致过拟合
数据格式统一统一的 JSON 格式,便于处理

常见数据问题

  • 数据泄露:测试集数据出现在训练集中
  • 标注不一致:不同标注员的标准不统一
  • 分布偏移:训练数据与实际使用场景差异大

10.2 训练配置

参数推荐值说明
学习率1e-4 ~ 5e-5LoRA 微调常用
Batch Size根据显存调整越大越稳定
Epoch1-3过多容易过拟合
LoRA Rank8-64根据任务复杂度调整
LoRA Alpha16-32通常为 Rank 的 2 倍
Dropout0.05-0.1防止过拟合

10.3 评估方法

方法说明工具/指标
人工评估抽样检查输出质量Likert 量表、对比评估
自动评估使用基准测试集MMLU、BBH、TruthfulQA
对比评估与原始模型对比改进程度胜率(Win Rate)

十一、总结

微调是将 Base Model 转变为实用模型的关键步骤:

  1. 指令微调:让模型学会遵循指令
  2. 高效微调:LoRA/QLoRA 等技术大幅降低成本
  3. 领域微调:适应垂直领域和专业任务
  4. 最佳实践:数据质量、训练配置、评估方法

经过微调的模型,还需要经过人类对齐(RLHF)才能成为真正符合人类偏好的 Chat Model。


延伸阅读


更新日期更新内容
2026-04-09初始版本
2026-04-12增加 LoRA 原理详解、最佳实践