全量参数微调

什么是全量微调?

Step1 transformer 模型中的一层可以简化如下形式
Y = W * X
Step2 现在需要一个W 使得当输入X=2时 输出Y=1 既希望W=0.5
1 = W * 2
Step3 首先堆W进行初始化 初始化的值服从均值为0 方差为1的分布 假设W初始化为0.1
Y = 0.1 * X
Step 可能经过10次或20次的反向传播 W最终更新到期望0.5
全部参数参与训练: 模型中所有权重矩阵 (例如你例子中的 W) 都参与训练和更新。
适应特定任务: 通过在目标任务的数据上进行训练,使模型更好地适应这个任务。
计算成本较高: 由于需要更新所有参数,全量微调的计算成本通常较高,尤其对于大型模型来说。
效果通常更好: 相比于只调整部分参数的微调方法,全量微调通常能取得更好的效果,因为它可以更充分地利用预训练模型的知识。

为什么样微调?

  1. 提升业务相关性
  2. 提升业务准确性
  3. 自定义交互
  4. 数据隐私和安全

微调方式

  1. 零代码(百度智能云千帆)
  2. 低代码(智能云平台的sdk)
  3. 自己部署大模型(Hugging Face)

示例

  1. 角色扮演
    1. 存在问题
      1. 大模型输出AI化
      2. 大模型角色风格不强化 不完全贴合人设要求。回答容易出戏。
      3. 大模型输出不稳定 有一定的比例会以错误的人设输出 回答内容出现串戏。
    2. 解决问题
      1. 通过模型微调 大模型输出更稳定 风格更强化 以满足应用要求。
  2. 作文批改(prompt 加入作文后普遍较长)
    1. 存在问题
      1. 评分不能准确遵循要求 打分普普遍偏高,不能严格按照扣分项进行扣分。
      2. 作文解析空泛 给出的意见没有指导性。
      3. 输出的格式有时不满足要求。
  3. 模型SFT(Supervised Fine-Tuning监督微调)训练流程
    1. 准备训练与评测数据 分析 + 处理 打造高质量数据
      1. 数据格式
        1. 〈prompt,Response>问答对(单论/多轮)的形式 根据应用场景决定数据格式为单论、多轮或混合。
      2. 微调数据要求
        1. 高质量 真实性 针对性 多样性
      3. 数量
        1. 最低需要100条 建议到5000条数据
      4. 拆分训练集与评测集
        1. 数据来源一致,但是内容不能重复。
        2. 评测集数据分布与真实数据分布一致。
        3. 测评集中覆盖期望通过微调解决的难点bad case(业务上不满足的数据)。
    2. 选择合适的模型
      1. 基础模型
        1. 根据基础模型的效果 耗时 价格 综合评估选择合适的基础模型。
      2. 训练模型
        1. 超参数是模型训练过程中可调整的变量。找到适合任务的最优配置也很重要。
    3. Loss 曲线的分析
      1. Loss 曲线收敛不明显 (尝试更多轮数)
      2. Loss 曲线有明显收敛 (正常)
      3. Loss 曲线接近于0 过拟合。 (提前stop)
    4. 模型效果测评
      1. 封闭式问题: 使用自动化测评微调后的模型效果。
      2. 开放式问题: 使用人工测评或者大模型测评微调后的模型效果。
    5. SFT 收益
      1. 在特定场景效果媲美甚至赶超超大规模的参数模型。
      2. 微调后的模型部署成本和调用成功都比更大规模参数更低。通过SFT 获得又快又好又便宜的模型。

其他

  1. InstructGPT 基于预训练的GPT-3 使用人工标注的高质量<Prompt,Response>的数据进行fine-tuning(指令微调) 训练通用的多任务模型
  2. 指令微调 SUpervised fine tuning(SFT)的一种特殊形式 专注于通过理解和遵循人类指令来增强大型语言模型的能力和可控性。
  3. 百度智能云千帆ModelBuilder使用SFT全量参数微调训练一个大模型
posted @ 2025-06-29 22:47  贺艳峰  阅读(141)  评论(0)    收藏  举报