日期:2026-09-25
我们早期攒了一批微调数据,来源杂,有客服录音转写、有论坛爬取、有内部文档摘抄,脏样本和重复样本混在里面也没人管。第一次训出来的模型,在几个核心场景反而比基座更差,客服话术开始胡说,我们排查半天才定位到是数据里混了错误的标准答案。那时候才意识到,微调拼的不是数据量,是数据净度。
当时团队觉得数据越多越好,爬了一堆就往里灌,没有清洗、没有评估,训完直接上。结论很清楚,微调前必须把数据当资产治理,脏样本比少样本更坑,得有清洗、打分、评估再到回灌的闭环。这个项目给我留下的教训是,便宜的数据往往是贵的,灌得爽训完才发现问题最致命。
新方案在微调前加了一条数据管线,原始数据进来先做去重和格式归一,再过一个质量打分模型,给每条样本打可信度分,低于阈值的进人工复核而不是直接丢弃。定向补数据针对评估暴露的弱项,比如模型总答错退款政策,就专门补一批退款场景的样本,而不是盲目加量。
训练后做任务级评估,在固定测试集上跑分,弱项自动标出来回流到数据侧,形成回灌闭环。每一版模型的评估报告和对应的数据版本都归档,出问题能回溯到是哪批数据带偏的。上线后我们第一次能回答老板的疑问:这一版比上一版好在哪、差在哪,靠的是固定的考题而不是感觉。
数据清洗去重难在近义重复,字面不同意思一样的样本,直接去重会漏。我们用向量相似度做软去重,相似度过高的归为一簇只留代表,既去重又保多样性。质量打分模型本身要可信,我们用人工标过的一小批样本做基准,打分模型的判断和人工一致率要到九成以上才敢用,否则它自己就是噪声源。
定向补数据要精准,不能看到弱项就狂加同类,容易过拟合。我们按弱项的错误类型拆细,每类补到评估分稳定才停,补的量反而比盲目加少。评估回灌闭环的关键是测试集固定,训练集怎么变,测试集不动,才能看出这一版到底是变好还是变坏,不然每次都换考题等于没考。
数据管线的核心流程如下,打分模型的准入门槛不能省:
data_pipeline:
dedup: vector_soft_cluster(similarity > 0.92 -> keep_one)
normalize: format_unify
quality_score:
human_agreement >= 0.90 # 低于不许用
below_threshold -> human_review
eval: fixed_testset # 训练集可变, 考题不动
feedback: weak_items -> targeted_augment脏样本剔除率约三成,也就是近三成原始样本因为重复、格式错或答案错被清掉,清完之后首训的模型在核心场景不再比基座差。评估通过率从最初的不及格提到九成以上,每一版模型上线前都有明确分位。定向补数据量虽不大,但弱项场景的任务准确率平均提了十几个点,性价比远好于堆总量。
我们对比过两版模型,一版用脏数据直接训,一版过清洗闭环,后者在五个核心任务上四项明显更优,唯一持平的那项是数据本就干净的领域。这个对照让我们彻底改了堆数据的习惯。跑通闭环后,每两周就能出一版评估可读的模型,迭代节奏从按月变成按周。
我们把每一批被清掉的数据都留了样本库,复盘时翻出来看,大多是从论坛爬来的带噪声内容,证明来源治理比数量治理更前置。后来我们要求所有外部来源先进隔离区过一遍清洗再进训练池,脏数据从源头就少了一大半,下游打分模型的负担也轻了。我们还给数据版本打了标签,哪版模型对应哪版数据一目了然,出问题能精确回滚而不是整库重训。我们事后承认,早半年做这件事能少交很多学费,模型变差的那次客户投诉是最贵的教训。
我们还把脏数据样本做成了内部培训材料,新来的标注员先看这些反面案例,上手速度明显快,人工复核的一致率也更高。数据治理最后变成了一件团队共识的事,而不只是管线的几个脚本,谁往里灌脏东西都会被拦下来。我们复盘时承认,早半年做这件事能少交很多学费,模型变差的那次客户投诉是最贵的教训。
微调拼的不是数据量而是数据净度,脏样本比少样本更坑,我们吃过实打实的亏,模型变差才回头查数据。质量打分模型自己得先可信,否则它引入的噪声比要滤的还多,这一步别省标数据。测试集一定要固定,训练集怎么动考题不动,才看得出模型真的变好。定向补数据讲精准不讲海量,按错误类型拆细补,比狂加同类有效。我们当时迷信数据量,是模型变差才被逼做治理的。下一步想把线上 bad case 自动回流成补数据,让闭环跑得更快。
案例片段(已脱敏): 数据管线:原始数据去重(向量相似度软去重)+ 格式归一 + 质量打分(与人工一致率 ≥90% 才启用),低分进人工复核;训练后固定测试集评估,弱项回灌定向补数据。某次对照:脏样本剔除率 30%;评估通过率由不及格升至 92%;弱项场景任务准确率平均 +14pt;清洗闭环版模型在 5 个核心任务中 4 项明显优于脏数据版;迭代节奏由按月变按周。