Chennl's Profile
大模型微调模型训练

什么是大模型微调?

用通俗方式解释 CPT、SFT、DPO 的作用、训练指标,以及什么情况下值得采用微调方案。

本文说的微调是指在通用大模型的基础上进行模型调优的过程。

核心目标:让大模型更好地适应某个具体任务或领域,提升其在该场景下的性能、准确性和可靠性。

  • 通用大模型的训练过程:初始模型→预训练→预训练模型(学会了词和词之间的关系)→微调→微调模型(学会了怎么组织语言回答用户)→人类偏好调优RLHF→通用模型(学会了回答用户喜欢的答案)。

  • 通用模型的3种微调方式

    • CPT继续预训练:扩充模型的知识面,补充通用模型在特定领域的知识缺陷。

    • SFT微调训练:让模型学会如何回答用户问题,如何执行定向的任务。

    • DPO偏好调优训练:通过学习什么是好的回答&不好的回答,让模型理解人类偏好。

大模型微调方式

CPT继续预训练:让模型更懂某个领域

可以扩充模型的知识面,补充通用模型在特定领域的知识缺陷,比如医疗、法律、生物等。

训练数据

  • 数量要求:至少1000万token训练集

  • 数据集信息:详细完整的知识点信息(无标注文本)

  • 单条文字长度不能超过微调模型的上下文长度。

注意

完成CPT后,还需要继续进行微调和人类偏好调优,才能获得可用的微调模型。

完整的流程应该是:通用大模型→CPT→SFT→(可选但推荐)人类偏好调优。

原因是CPT本身通常是无监督的,它并没有直接教导模型如何执行具体的任务或遵循特点的指令格式。

SFT微调训练:让模型完成特定任务。

让模型学会如何回答用户问题,如何执行定向的任务。

训练数据

  • 数据要求:至少1000+条数据

  • 数据集信息:QA对,支持多轮对话。

微调方式

  • 全参数微调:训练后更新全部参数,需要大量的训练数据和算力消耗,成本高,有通识能力遗忘风险。

  • LoRA微调:参数高效微调中最常用的方式。不更新原始模型参数,仅外挂了个低秩矩阵(参数占比极小0.1%-1%),成本低,训练效率高。

注意训练时增加通用的对话语料进行训练,避免基础模型能力的遗失,导致模型只会回答领域的问题(过拟合风险)。

DPO偏好训练:让模型高质量回答

通过学习什么是好的回答&不好的回答,让模型理解人类偏好。

训练数据

  • 数量要求:至少100+条人类偏好数据

  • 数据集信息:问题+好的回答+不好的回答(QAA对)

DPO的训练方式比在提示词中给出负面案例的效果更好。

因为大模型在处理负面指令时,模型的注意力机制可能会导致「越不让它怎么样,反而会越怎么样」。

而DPO通过学习人类偏好,从根本上调整模型行为,使其学会生成符合要求的输出,而非仅仅规避负面案例。

微调方式对比总结

对比维度CPT继续预训练SFT微调训练DPO偏好训练
训练目标补充领域知识制定特定任务/指令对齐人类偏好
监督方式无监督有监督(标注数据)有监督(偏好排序)
数据形式纯文本指令-回答对问题+正/负面回答对
典型应用医疗/法律等垂直领域的知识增强客服/任务型对话内容安全性/回答质量优化

微调效果的验证指标

训练损失(Training Loss)

  • 指标含义:模型在训练集上的表现。

  • 指标目的:考察原题,每学习一轮数据,对比模型答案和标准答案间的差距(评估大模型的依从能力)。

  • 期望效果:应该越来越小,表明模型对学过的知识掌握得越来越好。

验证损失(Validation Loss)

  • 指标含义:模型在验证集上的表现。

  • 指标目的:考察非原题,每学习一轮数据,对比模型答案和标准答案间的差距(评估大模型的泛化能力)。

  • 期望效果:应该越来越小,表明模型理解了知识本身,对没学过的知识也能很好回答。如果训练损失持续下降而验证损失开始上升,说明出现过拟合了,需要增加训练语料的丰富程度。

验证准确率(Validation Accuracy)/其他

  • 指标含义:模型在验证集上,针对特定任务的性能指标。

    • 对于分类任务,直接用准确率很直观。

    • 对于生成任务(如摘要、翻译),则会使用ROUGE、BLEU等指标,

    • 对于问答任务,会使用EM、F1等。

  • 指标目的:直接反映模型是否达到你的微调目标,模型在实际任务上的表现如何。

什么时候需要微调?

在考虑微调前,需要想清楚微调的目的是什么?微调的话是否有数量足够多的、质量足够高的训练数据集?

非必要情况,建议不要做微调!

因为微调对数据集数量质量要求比较高,且微调模型会可能出现过拟合、灾难性遗忘等风险。

所以有限考虑是否有替代方案,如下:

  • 提示词调优:给出约束条件和输出示例。

  • RAG:补充特定的知识(RAG所需数据集质量远不及微调)。

  • 工具调用:调用成熟的工具补充模型缺失的能力,如计算能力。

哪些任务适合用微调

  1. 定向任务:需要严格按照要求进行输出

    要求模型无提示词约束下完成一个定向任务,比如关键词提取、问题分类等。

  2. 效率任务:需要快速输出结果

    取代传统的NLP任务,让低参模型快速执行定向任务,加速响应,比如OCR文本格式化、高并发的意图识别、查询等。

文章目录10 个章节