AGI围城
首页
基础知识
工程实践
所见所思
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

AGI围城

是的,这个世界还是很有趣的。
首页
基础知识
工程实践
所见所思
  • 学习
  • 面试
  • 心情杂货
  • 实用技巧
  • 友情链接
关于
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 提示词工程

  • 大模型API调用

  • OpenAI工具

  • 嵌入向量

  • 检索增强生成(RAG)

  • LlamaIndex

  • LangChain

  • Agent

  • Workflow

  • Transformer

  • 微调

    • 1.微调概述
      • 1.1 什么是微调
        • 1.1.1 预训练与微调的关系
        • 1.1.2 为什么需要微调
      • 1.2 微调的类型
        • 1.2.1 全量微调(Full Fine-tuning)
        • 1.2.2 参数高效微调(PEFT)
        • 1.2.3 指令微调(Instruction Tuning)
        • 1.2.4 对齐微调(Alignment Tuning)
      • 1.3 微调的基本流程
        • 1.3.1 数据准备
        • 1.3.2 模型选择
        • 1.3.3 训练与评估
      • 1.4 微调 vs 其他适配方法
      • 1.5 微调的挑战
        • 1.5.1 数据质量
        • 1.5.2 灾难性遗忘
        • 1.5.3 计算资源
    • 2.数据准备
    • 3.全量微调
    • 4.LoRA微调
    • 5.指令微调与对齐
    • 6.微调实战
  • MCP

  • A2A

  • 基础知识
  • 微调
xiao_sl
2025-04-15
目录

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. 收集数据:根据任务需求收集或构造训练数据
  2. 数据清洗:去除噪声、重复、低质量样本
  3. 格式转换:将数据转换为模型所需的格式
  4. 数据划分:划分训练集、验证集、测试集

# 1.3.2 模型选择

考虑因素 说明
模型规模 参数量越大能力越强,但资源需求也越高
模型架构 Decoder-Only(GPT)、Encoder-Only(BERT)等
预训练数据 是否包含目标领域的数据
开源协议 是否允许商用、是否需要申请

# 1.3.3 训练与评估

  1. 训练监控:观察 loss 曲线,检查是否正常收敛
  2. 验证评估:在验证集上评估模型表现
  3. 早停策略:验证集性能不再提升时停止训练
  4. 模型保存:保存最佳 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)
#微调#Fine-tuning
上次更新: 2025/12/19, 15:17:48
5.解码器
2.数据准备

← 5.解码器 2.数据准备→

最近更新
01
我是如何发现临时邮箱的?一个真实的故事
06-12
02
4.核心实现
05-26
03
3.A2A开发实践
05-22
更多文章>
Theme by Vdoing | Copyright © 2019-2025 AGI围城 | 桂ICP备2024034950号 | 桂公网安备45142202000030
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式