1.微调概述
微调(Fine-tuning)是将预训练模型适配到特定任务的关键技术。通过在特定领域数据上继续训练,模型能够获得专业能力,同时保留预训练阶段学到的通用知识。
# 1.1 什么是微调
# 1.1.1 预训练与微调的关系
大语言模型的训练通常分为两个阶段:
- 预训练(Pre-training):在海量通用数据上学习语言的基本规律,获得通用的语言理解和生成能力
- 微调(Fine-tuning):在特定任务或领域数据上继续训练,让模型适应具体需求
这种"预训练 + 微调"的范式被称为迁移学习,它让我们无需从零开始训练模型,大幅降低了训练成本。
# 1.1.2 为什么需要微调
预训练模型虽然强大,但在特定场景下可能存在不足:
| 问题 | 描述 | 微调解决方案 |
|---|---|---|
| 领域知识不足 | 通用模型对专业领域(医疗、法律)理解有限 | 在领域数据上微调 |
| 输出格式不符 | 模型输出风格与业务需求不匹配 | 用期望格式的数据微调 |
| 任务表现欠佳 | 特定任务(如代码生成)效果不理想 | 用任务相关数据微调 |
| 响应风格不当 | 回复过于冗长或不够专业 | 用风格化数据微调 |
# 1.2 微调的类型
# 1.2.1 全量微调(Full Fine-tuning)
更新模型的所有参数,让模型完全适应新任务。
- 优点:效果最好,模型能充分学习新任务
- 缺点:计算成本高,需要大量显存,容易过拟合
- 适用:数据充足、计算资源丰富的场景
# 1.2.2 参数高效微调(PEFT)
只更新少量参数,冻结大部分预训练权重。
- 优点:计算成本低,显存占用小,不易过拟合
- 缺点:效果可能略逊于全量微调
- 适用:资源有限、数据较少的场景
常见的 PEFT 方法:
| 方法 | 原理 |
|---|---|
| LoRA | 在权重矩阵旁添加低秩分解矩阵 |
| Adapter | 在 Transformer 层间插入小型适配器模块 |
| Prefix Tuning | 在输入前添加可学习的前缀向量 |
| Prompt Tuning | 只训练软提示(soft prompt)向量 |
# 1.2.3 指令微调(Instruction Tuning)
使用指令-响应格式的数据进行微调,让模型学会遵循人类指令。
指令微调是 ChatGPT 等对话模型的关键训练步骤,让模型从"续写文本"转变为"回答问题"。
# 1.2.4 对齐微调(Alignment Tuning)
通过人类反馈让模型输出更符合人类偏好,主要方法包括:
- RLHF(Reinforcement Learning from Human Feedback):基于人类反馈的强化学习
- DPO(Direct Preference Optimization):直接偏好优化,无需训练奖励模型
# 1.3 微调的基本流程
# 1.3.1 数据准备
- 收集数据:根据任务需求收集或构造训练数据
- 数据清洗:去除噪声、重复、低质量样本
- 格式转换:将数据转换为模型所需的格式
- 数据划分:划分训练集、验证集、测试集
# 1.3.2 模型选择
| 考虑因素 | 说明 |
|---|---|
| 模型规模 | 参数量越大能力越强,但资源需求也越高 |
| 模型架构 | Decoder-Only(GPT)、Encoder-Only(BERT)等 |
| 预训练数据 | 是否包含目标领域的数据 |
| 开源协议 | 是否允许商用、是否需要申请 |
# 1.3.3 训练与评估
- 训练监控:观察 loss 曲线,检查是否正常收敛
- 验证评估:在验证集上评估模型表现
- 早停策略:验证集性能不再提升时停止训练
- 模型保存:保存最佳 checkpoint
# 1.4 微调 vs 其他适配方法
| 方法 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| Prompt Engineering | 设计提示词引导模型 | 无需训练,即时生效 | 效果有限,依赖提示设计 |
| RAG | 检索外部知识增强生成 | 知识可更新,无需重训 | 依赖检索质量 |
| 微调 | 在特定数据上继续训练 | 效果最好,深度定制 | 需要数据和计算资源 |
选择建议:
- 快速验证:先尝试 Prompt Engineering
- 知识密集型:考虑 RAG
- 深度定制:选择微调
# 1.5 微调的挑战
# 1.5.1 数据质量
"垃圾进,垃圾出"——数据质量直接决定微调效果。常见问题:
- 数据量不足导致过拟合
- 数据噪声导致模型学到错误模式
- 数据分布偏差导致泛化能力差
# 1.5.2 灾难性遗忘
微调可能导致模型"忘记"预训练阶段学到的知识。
解决方法:
- 使用较小的学习率
- 混合通用数据和领域数据
- 采用参数高效微调方法
# 1.5.3 计算资源
全量微调大模型需要大量 GPU 显存:
| 模型规模 | 全量微调显存需求(估算) |
|---|---|
| 7B | ~60GB |
| 13B | ~120GB |
| 70B | ~600GB |
解决方法:
- 使用 LoRA 等参数高效方法
- 梯度检查点(Gradient Checkpointing)
- 混合精度训练(FP16/BF16)
- 分布式训练
编辑 (opens new window)
上次更新: 2025/12/19, 15:17:48