Skip to content

Latest commit

 

History

History
294 lines (233 loc) · 12.2 KB

File metadata and controls

294 lines (233 loc) · 12.2 KB

大模型微调 📋9

create date last modify

Keywords: SFT


背景

  • 计算机背景;
  • 了解 Transformer, BERT 等基础模型;
  • 想要入门大模型领域需要了解的基础概念;

基础概念

大模型训练的三个阶段

  • 预训练 (Pre-training):
    • 模型在海量文本数据上学习, 获得通用的语言能力和知识;
    • 产出是一个 基础模型 (Base Model);
  • 有监督微调 (Supervised Fine-Tuning, SFT):
    • 使用高质量的问答或指令遵循数据对基础模型进行微调, 教会它如何与用户交互、遵循指令;
    • 产出是一个 SFT 模型, 这也是 RLHF 的基础;
  • 基于人类反馈的强化学习 (Reinforcement Learning from Human Feedback, RLHF) / 偏好学习 / 对齐学习:
    • 目标是让模型输出的答案不仅正确, 而且要符合人类的偏好 (例如: 更有帮助、更无害、更诚实的、排版美观等);
    • SFT 可以教会模型 "回答问题", 而 RLHF 旨在教会模型 "更好地回答问题";

有监督微调 (SFT) / 指令微调

  • 全参数微调
  • 参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT)
    • LoRA (Low-Rank Adaptation)
    • Prefix Tuning, P-Tuning, Adapter, BitFit 等;

RLHF

  • RLHF 要解决的核心问题 (背景/目的)
  • RLHF 的核心组件/模型;
    • 策略模型 (Policy Model) / 策略函数

      Actor 模型

    • 优化算法 / 优化器

      TRPO → PPO (Clip/KL) → DPO → GRPO/IPO/KTO/...

    • 参考模型 (Reference Model)
    • 奖励模型 (Reward Model, 可选) / 奖励函数
    • 价值模型 (Critic Model, 可选) / 价值函数

PEFT

LoRA 及其变体

LoRA 笔记

  • 基本思路:
    • 对需要微调的 线性层 (如 nn.Linear), 冻结其原始权重 $W \in \mathbb{R}^{d_{\text{out}} \times d_{\text{in}}}$, 引入一个 低秩更新矩阵 $\Delta W$, 用两个小矩阵参数化:

    • 前向过程 (旁路相加):

      • 缩放因子 $\dfrac{\alpha}{r}$ 控制 $\Delta W$ 的幅度, 避免训练初期过大扰动;
  • 代码 Demo:

Adapter

  • 思路:
    • 在 Transformer 每层的前馈网络 (或注意力输出) 后插入一个小型可训练的 瓶颈层 (bottleneck)
  • 代码 Demo

Prefix/Prompt Tuning

  • 思路:
    • Prefix Tuning 在 Transformer 每一层的注意力机制 中, 为 Key/Value 拼接可训练的 前缀向量;
    • Prompt Tuning 仅在 输入嵌入层 前拼接可训练的软提示向量;
  • 代码 Demo

P-Tuning V1/V2

  • 思路:
    • 将原本人工设计的离散 Prompt 替换为可训练的连续向量 (virtual tokens);
    • 这些向量通过一个提示编码器 (Prompt Encoder) (通常是 LSTM + MLP) 生成;
    • V1/V2 的区别类似 Prefix/Prompt Tuning, 仅作用于输入层 vs 作用于每一个 TransformerBlock;
  • 代码 Demo

BitFit (Bias Fine-Tuning)

  • 思路:
    • 在微调大模型时, 只更新偏置参数 (bias), 冻结所有权重矩阵;
  • 动机:
    • 偏置参数占模型总参数量极小, 但 在很多任务中对输出分布的平移有显著影响;
  • 缺点:
    • 表达能力有限, 对需要大幅调整特征空间的任务效果可能不如 LoRA 等方法;
  • 代码 Demo

Q&A


1. 🏷️ 基础概念

1.1. ✅ 什么是 大模型微调? 为什么需要 微调?

• 大模型微调是利用 特定数据通用预训练模型 进行 再训练, 以高效地让其 适配下游任务 的关键技术;
优势: 高适配, 低成本, 高效率

1.2. ✅ 微调预训练 的区别

• 训练目标不同, 数据规模不同, 训练成本不同, 模型能力侧重不同

  • 展开详情 ⬇️
    维度 预训练 微调
    训练目标不同 学习通用语言模式与知识表示, 构建广泛的基础能力 适配特定任务或领域, 提升在该场景下的性能
    数据规模不同 使用大规模、跨领域的通用数据集 使用较小规模、领域相关或任务特定的数据集
    训练成本不同 需要极高的计算资源与时间成本 在已有模型基础上进行, 成本显著降低
    模型能力侧重不同 获得广泛的通用能力 强化特定任务能力, 可能牺牲部分通用性

1.3. ✅ 说明大模型微调的 一般流程

• 1.需求分析, 2.数据准备, 3.模型选择, 4.微调策略, 5.训练与监控, 6.模型评估, 7.部署与持续优化

大模型把所有任务统一到了 生成任务, 因此确定 输入输出形式任务类型 更重要;

  • 展开详情 ⬇️

    1. 需求分析: 确定 输入输出 形式, 评价指标;
    2. 数据准备/预处理: 收集高质量数据, 清洗, 去噪, 格式化; 数据集划分;
    3. 模型选择: 考虑因素包括 模型能力 (通用/领域), 参数量计算资源;
    4. 微调策略: 全参数微调 / 参数高效微调 (LoRA 等方法); 偏好学习 (RL)
    5. 训练与监控: 训练环境, 超参数 (学习率、批大小、优化器), 验证集指标变化;
    6. 模型评估: 测试集性能评估 (过拟合/欠拟合), case 分析;
    7. 部署与持续优化: 模型部署; 收集反馈数据, 增量微调/再训练;

1.4. ✅ 什么是 灾难性遗忘? 如何缓解?

含义: 模型在新数据上学习时, 覆盖了之前学到的知识;
缓解方法: PEFT, 混合训练数据, 更小的学习率, 正则化约束, 参数隔离, 渐进式微调

1.5. ✅ 如何设计高质量 SFT 数据? 如何保证 覆盖率/多样性/一致性?

高质量: 多样性, 覆盖率; 一致性;

  • 展开详情 ⬇️
    • 覆盖率:
      • 构建数据分类体系 (taxonomy)
      • 覆盖率取决于分类体系的完整度;
    • 多样性:
      • 指令多样性: 模板参数化, 同义改写, 风格变换, 语言映射, 噪声与错别字扰动;
      • 深度多样性: 直接回答, 思维链, 深度思考;
      • 风格多样性: 角色, 语气;
      • 上下文多样性: 单轮, 多轮;
    • 一致性:
      • 多人/多 Agent/多 Prompt

    构建高质量SFT数据

1.6. ❓ 有哪些提高 训练稳定性 的技巧?

• 数据质量, 模型结构, 初始化策略, 优化器, 训练策略, 调试与监控

2. 🏷️ PEFT

2.1. ✅ 比较 全量微调参数高效微调 (PEFT)

• 参数更新范围, 资源成本/训练速度, 数据需求, 灾难性遗忘, 适用场景
总结: 全量微调追求极致性能但成本高, PEFT 以低成本实现高适配性并保留通用能力 (减轻灾难性遗忘);

  • 展开详情 ⬇️
    对比维度 全量微调 参数高效微调 (PEFT)
    参数更新范围 全部参数 少量新增或选定的参数
    资源成本/训练速度 计算量与显存占用, 训练慢 计算量与显存占用, 训练快
    数据需求 需要大规模数据以避免过拟合 对数据量要求相对较低
    灾难性遗忘 严重 较轻
    适用场景 资源充足, 追求极致性能 资源有限, 多任务部署或快速迭代

2.2. ✅ 介绍常见的 PEFT 技术

• LoRA/QLoRA, Adapter, Prefix/Prompt Tuning, P-Tuning V1/V2, BitFit

  • 展开详情 ⬇️

    PEFT

2.3. 💡 比较 LoRA / Prefix Tuning / P-Tuning V2 / Adapter / BitFit

• 几个关键维度: 表示能力, 推理延迟, 可训练参数量

  • 展开详情 ⬇️
    • 表示能力: Adapter ≥ LoRA ≥ P‑Tuning V2 > Prefix Tuning > BitFit
    • 推理延迟: LoRA ≈ BitFit < P‑Tuning V2 ≈ Prefix Tuning < Adapter
    • 参数量: BitFit < P‑Tuning V2 ≈ Prefix Tuning < LoRA < Adapter