微调数据集构建指南:数据量、格式、质量标准与常见错误
决定微调一个大模型之后,很多团队把精力放在选择基础模型、配置训练参数上,却在数据准备上草草了事。结果往往是:训练过程很顺利,损失曲线很漂亮,但微调后的模型并没有达到预期效果,甚至在某些方面变得更差。微调的本质是让模型从数据中学习,数据的质量直接决定了模型能学到什么。 构建一个高质量的微调数据集,是微调项目中最重要的工作。
第一步:明确微调目标
在收集数据之前,先清楚地定义你希望模型学会什么:
- 格式与风格:让模型按照特定的格式输出,或者使用特定的语气和表达方式;
- 特定任务:提高在某类任务上的表现,例如特定领域的信息抽取、分类;
- 行为规范:让模型在特定情况下做出期望的反应,例如拒绝超出范围的请求;
- 领域表达:熟悉特定领域的术语和表达习惯。
需要注意,微调并不擅长向模型灌输大量新知识,这类需求更适合用检索增强来解决,参见微调还是提示词。
第二步:确定数据量
数据量没有固定标准,取决于任务的复杂度和基础模型的能力:
- 格式和风格调整:通常几百条高质量样本就能看到明显效果;
- 特定任务提升:可能需要数千条样本;
- 复杂的领域适配:需要更多数据。
一个重要的原则是:质量远比数量重要。 几百条精心准备的样本,往往比几万条质量参差不齐的样本效果更好。建议先用少量高质量数据进行试验,根据效果决定是否需要增加数据。
第三步:统一数据格式
对话格式
现代的对话模型通常使用多轮对话格式的训练数据,每条样本包括系统提示(可选)、用户消息和助手回复,多轮对话则包括多组用户与助手的交替消息。
与推理时保持一致
训练数据的格式必须与实际使用时的格式完全一致,包括:
- 使用相同的对话模板;
- 系统提示词的内容和风格一致;
- 如果推理时会提供检索内容,训练数据中也要包含类似结构的检索内容。
格式不一致是微调效果不佳的常见原因之一。
第四步:制定质量标准
为训练样本制定明确的质量标准,并让所有参与数据准备的人员遵循:
- 准确性:回复的内容必须正确,没有事实错误;
- 一致性:同类问题的回复风格、格式和处理方式保持一致;
- 完整性:回复完整地解决了用户的问题;
- 符合规范:回复符合期望的语气、长度和行为准则;
- 多样性:输入覆盖各种表达方式、难度和场景。
模型会学习数据中的一切,包括错误和不一致之处。一个包含矛盾回复的数据集,会让模型的行为变得不稳定。
第五步:数据来源
真实业务数据
从历史对话、工单、文档中整理,最贴近真实场景。需要注意隐私保护和数据清洗,去除个人信息和低质量内容,参见企业使用大模型的数据隐私指南。
人工编写
由领域专家编写高质量的示例,质量最高但成本也最高,适合作为核心数据和种子数据。
合成数据
用大模型参照种子数据生成更多样本,需要严格的质量控制,参见合成数据训练大模型。
模型辅助加人工审核
用模型生成初稿,人工审核和修改,在效率和质量之间取得平衡,参见用大模型做数据清洗与标注。
第六步:清洗与去重
- 去除格式错误、内容不完整的样本;
- 去除完全重复和高度相似的样本;
- 检查并修正错误的回复;
- 检查类别和场景的分布是否均衡。
第七步:划分训练集与测试集
- 保留一部分数据作为测试集,不参与训练,用于评估微调效果;
- 确保测试集与训练集之间没有重复或高度相似的样本,否则会高估模型效果;
- 测试集应覆盖各种场景,包括困难和边界情况;
- 同时准备一些通用能力的测试问题,检查微调是否损害了模型的通用能力。
常见错误
- 数据泄露:测试集中的样本或其变体出现在训练集中;
- 格式不一致:训练数据与推理时的格式不同;
- 质量不一:混入大量低质量样本,模型学到了不良习惯;
- 分布单一:数据只覆盖少数几种情况,模型在其他情况下表现不佳;
- 回复过于模板化:所有回复都使用相同的句式,模型变得机械;
- 只看损失曲线:训练损失下降不代表效果好,必须在测试集上评估实际输出。
小结
微调数据集的构建是一项需要认真对待的工程:明确目标,确定合适的数据量,统一格式并与推理时保持一致,制定并执行质量标准,选择合适的数据来源,做好清洗去重,合理划分测试集。坚持质量优先于数量,是微调成功的关键。微调方法本身可参考 LoRA 微调原理与实践。