决定微调一个大模型之后,很多团队把精力放在选择基础模型、配置训练参数上,却在数据准备上草草了事。结果往往是:训练过程很顺利,损失曲线很漂亮,但微调后的模型并没有达到预期效果,甚至在某些方面变得更差。微调的本质是让模型从数据中学习,数据的质量直接决定了模型能学到什么。 构建一个高质量的微调数据集,是微调项目中最重要的工作。

第一步:明确微调目标

在收集数据之前,先清楚地定义你希望模型学会什么:

  • 格式与风格:让模型按照特定的格式输出,或者使用特定的语气和表达方式;
  • 特定任务:提高在某类任务上的表现,例如特定领域的信息抽取、分类;
  • 行为规范:让模型在特定情况下做出期望的反应,例如拒绝超出范围的请求;
  • 领域表达:熟悉特定领域的术语和表达习惯。

需要注意,微调并不擅长向模型灌输大量新知识,这类需求更适合用检索增强来解决,参见微调还是提示词。

第二步:确定数据量

数据量没有固定标准,取决于任务的复杂度和基础模型的能力:

  • 格式和风格调整:通常几百条高质量样本就能看到明显效果;
  • 特定任务提升:可能需要数千条样本;
  • 复杂的领域适配:需要更多数据。

一个重要的原则是:质量远比数量重要。 几百条精心准备的样本,往往比几万条质量参差不齐的样本效果更好。建议先用少量高质量数据进行试验,根据效果决定是否需要增加数据。

第三步:统一数据格式

对话格式

现代的对话模型通常使用多轮对话格式的训练数据,每条样本包括系统提示(可选)、用户消息和助手回复,多轮对话则包括多组用户与助手的交替消息。

与推理时保持一致

训练数据的格式必须与实际使用时的格式完全一致,包括:

  • 使用相同的对话模板;
  • 系统提示词的内容和风格一致;
  • 如果推理时会提供检索内容,训练数据中也要包含类似结构的检索内容。

格式不一致是微调效果不佳的常见原因之一。

第四步:制定质量标准

为训练样本制定明确的质量标准,并让所有参与数据准备的人员遵循:

  • 准确性:回复的内容必须正确,没有事实错误;
  • 一致性:同类问题的回复风格、格式和处理方式保持一致;
  • 完整性:回复完整地解决了用户的问题;
  • 符合规范:回复符合期望的语气、长度和行为准则;
  • 多样性:输入覆盖各种表达方式、难度和场景。

模型会学习数据中的一切,包括错误和不一致之处。一个包含矛盾回复的数据集,会让模型的行为变得不稳定。

第五步:数据来源

真实业务数据

从历史对话、工单、文档中整理,最贴近真实场景。需要注意隐私保护和数据清洗,去除个人信息和低质量内容,参见企业使用大模型的数据隐私指南。

人工编写

由领域专家编写高质量的示例,质量最高但成本也最高,适合作为核心数据和种子数据。

合成数据

用大模型参照种子数据生成更多样本,需要严格的质量控制,参见合成数据训练大模型。

模型辅助加人工审核

用模型生成初稿,人工审核和修改,在效率和质量之间取得平衡,参见用大模型做数据清洗与标注。

第六步:清洗与去重

  • 去除格式错误、内容不完整的样本;
  • 去除完全重复和高度相似的样本;
  • 检查并修正错误的回复;
  • 检查类别和场景的分布是否均衡。

第七步:划分训练集与测试集

  • 保留一部分数据作为测试集,不参与训练,用于评估微调效果;
  • 确保测试集与训练集之间没有重复或高度相似的样本,否则会高估模型效果;
  • 测试集应覆盖各种场景,包括困难和边界情况;
  • 同时准备一些通用能力的测试问题,检查微调是否损害了模型的通用能力。

常见错误

  1. 数据泄露:测试集中的样本或其变体出现在训练集中;
  2. 格式不一致:训练数据与推理时的格式不同;
  3. 质量不一:混入大量低质量样本,模型学到了不良习惯;
  4. 分布单一:数据只覆盖少数几种情况,模型在其他情况下表现不佳;
  5. 回复过于模板化:所有回复都使用相同的句式,模型变得机械;
  6. 只看损失曲线:训练损失下降不代表效果好,必须在测试集上评估实际输出。

小结

微调数据集的构建是一项需要认真对待的工程:明确目标,确定合适的数据量,统一格式并与推理时保持一致,制定并执行质量标准,选择合适的数据来源,做好清洗去重,合理划分测试集。坚持质量优先于数量,是微调成功的关键。微调方法本身可参考 LoRA 微调原理与实践。