大模型的瓶颈早已从算法转移到数据。标注贵、标注歪、数据不够,是每个团队都撞过的墙。本文讲清楚三条路:把标注体系做标准、用合成数据补量、让数据飞轮自己转起来。
数据是模型的杠杆
一个常被低估的事实:相同模型结构,数据质量能拉开 10 倍以上的效果差距。预训练拼语料规模,微调拼指令质量,对齐拼偏好数据——每一层都吃数据。
数据工程的核心矛盾是质量与规模不可兼得:人工标注质量高但贵且慢,自动获取规模大但噪声多。工程目标不是追求「完美数据」,而是建立一套质量可度量、错误可追溯、迭代可持续的数据管线。
标注任务设计:从需求到 Schema
任何标注任务都从明确的**标注规范(Annotation Guideline)**开始。好的规范让不同标注员对同一输入给出一致答案,坏规范则让标注变成彩票。设计要点:
- 任务分解:一次标注只做一件事。分类、抽取、对齐、评测分开做,降低认知负担。
- Schema 收敛:类别数量控制在 5~20 个;类目超过 30 个时先做粗分类再细分,避免标注员疲劳误标。
- 边界样例(Edge Cases):规范里必须写明「模棱两可时怎么处理」,配 3~5 个典型反例。
# 一份简洁的标注规范示例(意图分类)
# 类别: 询价 | 投诉 | 售后 | 闲聊
# 边界: 同时含投诉与询价 → 标"投诉+询价"多标签
# 反例: "你们家东西多少钱" 只问价格 → 询价(非闲聊)
规范写好要先跑 20~50 条试标注,用一致性指标验证后再铺开,避免几万条标注做完才发现 Schema 定错。
标注质量保障:一致性、争议与复核
质量保障的抓手是可量化的质量指标,而非「感觉还行」:
- 一致性(Agreement):多名标注员对同一条目的标注一致率,分类任务用 Cohen’s Kappa,多标签用 Fleiss’ Kappa。Kappa < 0.7 说明规范或任务有问题,先别铺量。
- 争议样本仲裁:标注不一致的样本不投票了事,而是抽出给专家裁决,把裁决结果回写规范,持续收敛。
- 抽样复核:按固定比例(如 5%)双标,用不一致率反推整体质量;发现漂移立即暂停批量标注。
# 一致性计算的简化示意
# Kappa = (实际一致率 - 随机一致率) / (1 - 随机一致率)
# 两支标注团队各自标同一批 100 条,一致率 85%,
# 随机一致率若为 33%(3 类等概率),则 Kappa ≈ (0.85-0.33)/(1-0.33) ≈ 0.78 → 可接受
一条工程铁律:质量抽检不是「事后抽查」,而是「持续喂给模型当验证集」。把争议样本和错误标注沉淀成错误库,既是标注改进的依据,也是测试集扩充的来源。
主动学习与弱监督:花更少的钱标更准的数据
**主动学习(Active Learning)**让模型自己告诉你「哪些数据最值得标」:用当前模型对未标注数据打分,优先标注那些模型最不确定(最高熵、最低置信度)的样本。这样同样预算下,模型进步更快。
# 主动学习的不确定性采样示意
import numpy as np
def entropy_score(probs):
return -np.sum(probs * np.log(probs + 1e-9), axis=-1)
# 选熵最高的 500 条交给人工标注
uncertain = np.argsort(entropy_score(model_preds))[-500:]
弱监督(Weak Supervision)则绕过人工:用规则、词典、知识库自动打标,再用众包或少量人工校准。标注函数(Labeling Functions)可以快速铺出百万级弱标签,模型学到后去噪声,再迭代。弱监督的底线是必须配抽样人工复核,否则噪声会在训练中放大。
合成数据:让模型当自己的数据源
合成数据是 2024 年以来的数据主线,主流做法分三类:
- LLM 蒸馏:用强模型生成指令与回答,蒸馏成弱模型的微调数据。关键是多样性控制——prompt 模板化 + 随机组合 + 主题采样,避免生成数据分布坍缩。
- 自我修正(Self-Improvement):让模型生成 → 自评 → 修正,迭代多轮产出更高质数据。典型如自对齐(Self-Align)、RLAIF。
- 场景合成:在仿真/规则世界里造数据(自动驾驶的天气扰动、NLP 的模板注入),覆盖真实场景难以采集的长尾。
# 用 LLM 生成指令数据的简化 prompt 模板
# 你是一名数据工程师,请围绕「{主题}」生成 {难度} 的指令数据 {n} 条,
# 要求:指令独立、答案正确、难度分布均匀、不与已有条目重复。
合成数据的三个致命陷阱:坍缩(重复)、幻觉(错误)、偏置(放大既有偏见)。应对方法:去重 + 质量过滤 + 多样性约束,且合成数据永远要与真实数据按比例混合,合成占比过高会损害鲁棒性。
数据飞轮:把线上反馈变成训练数据
**数据飞轮(Data Flywheel)**让数据自己越滚越多、越滚越准,是产品的护城河。核心闭环四步:
- 线上收集:记录用户对模型输出的反馈——点赞、点踩、纠正、复述、后续追问。
- 信号挖掘:从行为信号提取隐含标注(用户复制粘贴、重试、满意度评分)。
- 困难样本回流:把线上失败案例(答非所问、幻觉、拒答)沉淀为困难样本库,定期评估。
- 再训练:困难样本 + 反馈数据进入微调与评测循环。
# 数据飞轮的困难样本回流管线(示意)
# 线上请求 → 质量打分(规则+小模型) → 低分样本入困难库
# 定期: 困难库 → 人工/LLM 修正 → 评测集 → 微调 → 回归验证
飞轮的关键是让「坏样本」可见:没有线上质量监控,坏样本沉在日志里永远不会变成数据。建一个实时打分通道,把低置信度、用户不满意的输出自动捞出来,是飞轮启动的第一步。
数据治理与合规
数据量大了,治理问题接踵而至:
- 去重:近似去重(MinHash/SimHash)防合成数据坍缩、防训练集污染。
- 泄漏防护:严格隔离训练集与测试集、时间切分防未来数据泄漏,评测才可信。
- 隐私合规:PII 脱敏、版权语料授权、用户数据最小化。隐私是红线,合规事故的成本远超省下的标注费。
- 血缘与版本:每条数据记录来源(人工/规则/合成)与版本,可追溯才可归因。
# 简单的 PII 脱敏示意(伪代码)
# 邮箱/手机号/身份证 → 正则识别 → 替换为占位符
# 姓名/地址 → 本地小模型 NER 识别 → 掩码
治理的产出是一份「数据资产清单」:谁产生的、质量多高、用在哪个训练环节、如何复现。没有这份清单,团队扩展时数据管线就是黑箱。
总结
数据工程的三条主线:人工标注要标准化(规范先行、一致性量化、争议仲裁、抽样复核),数据补量要自动化(主动学习挑样本、弱监督铺标签、合成数据造多样性),数据增长要飞轮化(线上反馈回流、困难样本再训练)。贯穿始终的是治理——去重、防泄漏、隐私与血缘,确保规模不变成包袱。记住:数据管线不是一次建完的,它是和模型一起持续迭代的产品。
继续阅读
探索更多技术文章
浏览归档,发现更多关于系统设计、工具链和工程实践的内容。