微调数据怎么构造?

微调效果差?先看看你喂了什么数据
RLHF和DPO把"怎么让模型学人类偏好"讲清楚了。但你有没有想过一个问题——模型能学到好东西,前提是你得给它喂真正好的东西。
我见过太多团队在算法上死磕,调参调了三个月,效果还是烂。回头一看,问题全在数据。
微调这事儿,算法顶多占两成功劳。剩下八成,全看你数据准备得怎么样。
今天就聊聊微调数据怎么构造,格式、质量、清洗和配比,这些坑怎么躲。
微调失败,八成问题出在数据上
一个扎心的现实:2024年叫"行业大模型元年",但据业内统计,超过八成的微调项目最后都没跑起来。
更扎心的是,这些项目里,真正死在算法上的寥寥无几。问题全出在数据上。
打个比方。你要培养一个专业医生,给他全世界最先进的医学理论教材。但教材里充斥着错误病例、过期知识,还有大量自相矛盾的表述。再聪明的苗子也给你教废。
微调项目也是这样。算法团队吭哧吭哧调参,工程团队日夜优化部署,结果数据质量稀烂,一切白干。
我们团队去年做个客服模型微调,算法用的是最新的DPO,数据是从日志里随便捞了50万条。结果训练出来的东西跟预期差十万八千里。后来老老实实重新整理数据,花了两个月清洗筛选,最后用8万条高质量数据重新训了一遍,效果反而好了不少。
这就是现实:数据不行,再好的算法也白搭。

你可能不服气:我找了最牛的模型架构,用了最火的微调框架,怎么效果还是不行?
其实答案很简单:再精妙的算法,也没法从低质、有偏的数据里提炼出稳健的知识模式。巧妇难为无米之炊嘛。
反过来想,企业最大的优势是什么?独有的、高质量的领域数据。这东西花再多钱也买不来,是真正能打的东西。
所以微调这件事,重点在数据。你准备喂给模型的"教材",直接决定了模型能学到什么。
数据从哪来——三个来源
明确了数据重要性,下一个问题:数据从哪来?
实战里通常从三个地方入手。

第一,内部业务数据。
这是最值钱的部分。企业数据库里的历史记录、系统日志、客户工单,都是天然的训练素材。
举个例子,客服大模型微调,内部数据就是历史客服对话。真实场景、真实用户、真实问题,拿来就能用。
但有个硬要求:必须严格脱敏。用户姓名、手机号、地址这些敏感信息,一个都不能留。去年有个公司没注意这块,结果数据泄露被罚了几百万,教训很深。
第二,公开数据集。
网络上合规获取的数据,开源数据集、AI抽取技术搞来的文本,都算这一类。
优点是量大、覆盖面广。缺点是质量参差不齐,版权合规性也得仔细审查。用之前一定要过法务这关。
第三,LLM生成数据。
用大模型自己生成训练数据。成本低,还能补充长尾场景——那些真实数据里很少出现、但模型也需要会的情况。
比如你发现模型在处理"用户投诉物流损坏"这类场景表现差,真实数据不够,就可以让GPT-4帮你生成一批类似的对话。
三个来源怎么配合,看你实际情况。如果你内部数据够丰富、够高质量,公开数据和生成数据只是锦上添花。但如果你冷启动、什么都没有,那三个来源都得用上。
数据怎么洗干净——三步走
数据收集来了,不代表就能用。原始数据往往是"毛坯房",得精装修才能住人。
清洗流程一般分三步:

第一步:规则清洗。
用Hive、Spark、Flink这些工具,按照硬规则过滤明显错误。
比如去重——同样的对话出现一百次,不能让模型重复学一百遍。
比如删异常值——对话长度超过10万字的、用户输入全是乱码的、一句话里夹着几千个感叹号的,这些都要筛掉。
这一步速度快,但筛不掉细小的沙子。
第二步:AI清洗。
修复错别字、语法错误、逻辑矛盾。
现在的方案通常是先用小模型做初筛,再用大模型做精细修复。还会用标准数据集做校准——比如一批医学问答数据,要确保答案符合医学常识,不符合的标记出来人工复核。
这一步是精细打磨,把肉眼不好发现的毛病都揪出来。
第三步:人工审核。
随机抽样一批,做最终审核。
抽多少条合适?行业经验大概是100条左右。抽太少代表性不够,抽太多成本太高。
审核结果要反馈到前两步,形成闭环。如果AI清洗漏了一堆错别字,说明规则要升级;如果人工审核发现系统性问题,说明整个流程设计有漏洞。
三步走完,数据才能算"干净"。
数据格式怎么对齐——标准化不只是格式问题
数据洗干净了,接下来要格式化。
这一步很多人忽视,觉得"把文本喂进去就行了"。错。大错特错。格式不对,模型根本学不会你想让它学的东西。
现在主流微调框架都兼容ChatML标准,本质上是给对话加了一层结构化标记:
<|im_start|>system
你是一个有帮助的助手。<|im_end|>
<|im_start|>user
怎么退订会员?<|im_end|>
<|im_start|>assistant
请告诉我您的账号和具体问题。<|im_end|>system是系统提示,user是用户输入,assistant是期望的模型回复。模型通过学习这种格式,明白什么时候该扮演什么角色、什么时候该输出什么内容。
格式之外,还有两件事必须做:
第一,语义化版本号。
每个数据集都要打版本标签,比如v1.0.0、v1.1.0、v2.0.0。
改了什么、为什么改、谁批准的,全都记录在案。微调效果出问题的时候,你才能溯源查到底是哪批数据引入的。
第二,写数据集卡片(Dataset Card)。
这东西就像图书馆的馆藏目录。

卡片上要写清楚:数据从哪来的、经过了哪些处理步骤、有多少条、多少token、有什么已知限制。
比如:"v1.0.0版本基于2023年1月-6月的客服对话,脱敏后保留意图和回复,过滤了涉及退款金额的具体数值。"
有了这张卡,后续的人接手、审计模型效果,都能快速上手。不写清楚,等于给后人挖坑。
数据配比怎么设计——训练集、验证集、测试集
格式搞定了,现在要分数据。这是很多新手容易翻车的地方。
微调数据一般分成三份:训练集、验证集、测试集。比例大概是8:1:1,具体看数据量大小调整。
配比设计本质上是在回答一个问题:每份数据分别解决什么问题?
训练集是模型的主教材,要足够大、覆盖足够全面。日常那些重复性问答场景,至少覆盖80%以上。
验证集是模型的模拟题,用来判断模型学得好不好、需不需要提前停止训练。关键是要能代表真实分布——你线上用户问什么,验证集里就得有什么。
测试集是最终考试卷,必须严格隔离。训练的时候绝对不能碰,验证的时候看一眼调调参数都不行。否则你测出来的指标全是"作弊分",上线必翻车。
用备考来理解:练习题要做够、模拟题要贴近真题、考试题不能提前看过。道理一样。
有个实战数据给你参考:10,000条高质量对话微调7B模型,意图识别准确率能到92%以上。
前提是这10000条都是精挑细选的高质量数据,而不是随便从日志里捞10万条灌进去。量不是关键,质才是。
什么时候需要数据增强——不是越多越好
数据不够怎么办?增强。
但我要先泼盆冷水:不是越多越好。
数据增强的目的是让模型适应噪声干扰、作为正则化手段避免过拟合、学习更广泛的特征。
常用方法就那么几种:
文本领域,同义词替换、回译(中→英→中)。比如"如何注销账户"增强成"怎么取消账号"、"怎样关闭会员"。
图像领域,旋转、裁剪、调整亮度这些老招数。
什么时候该用、什么时候不该用,有个简单判断标准:

该用的场景: 原始数据少、噪声多、模型有过拟合迹象。
不该用的场景: 原始数据已经足够丰富、模型还没过拟合、生成的数据跟真实分布差太远。
有个坑特别容易踩:过度增强。
你以为在帮模型学习更广泛的知识,实际上只是在让它记忆一堆改过头的病句。模型考场上见到正常句子,反而不会了。
说白了,增强是调味品,不是主菜。适量提鲜,过量齁人。
写在最后
微调数据的构建是一个系统工程。从明确目标、收集数据、清洗质量、格式化标准到配比设计,每一步都决定了最终模型的表现上限。
你可能觉得麻烦。确实麻烦。但这就是微调的本质——模型能走多远,取决于你给它铺的路有多扎实。
市面上不缺开源模型,缺的是能真正用好数据的人。
下一步要聊的,就是微调过程中那些让人头秃的经典问题:过拟合怎么办?灾难性遗忘怎么破?模型产生幻觉怎么治?
这些问题,你准备好了吗?
