评测数据和线上样本为什么需要 lineage?
简化版
Lineage 是数据从哪里来、经过哪些清洗和标注、进入哪些训练/评测版本、最终影响哪个模型与发布的可追溯链路。没有血缘,分数变化无法归因,训练集与测试集泄漏难以发现,用户删除与许可证约束也无法向派生数据传播。
每个样本应有稳定 sample_id、source_id、内容哈希、授权/用途、采集时间、转换版本、标注记录、数据集快照和 split。构建数据集时生成不可变 Manifest;训练与评测只引用快照 ID,发布记录模型到快照的反向关系。
详细版
血缘图通常是:
source -> raw sample -> transform/PII filter -> annotation
-> dedup cluster -> dataset snapshot/split
-> train/eval run -> model/release
| 目标 | Lineage 提供的证据 |
|---|---|
| 可复现 | 输入快照、代码、参数和标注版本 |
| 防泄漏 | 去重簇和 split 分配历史 |
| 合规 | 来源、许可、同意、地域、删除传播 |
| 质量 | 错误样本追溯到来源与标注者 |
| 影响分析 | 某来源或样本影响的模型/评测 |
血缘元数据与敏感正文分离,正文加密并按权限读取。删除时根据反向图定位缓存、数据集、向量索引和衍生模型,按政策决定删除、重训或证明不可逆匿名化。
完整版教学
1. Lineage 不只是版本号
版本号只能说明“这是 v3”,血缘还解释 v3 由哪些源数据、转换、标注和过滤组成,以及被哪些下游资产使用。
它是一张有向图,而不是一列文件名。节点是数据/模型资产,边是生成、转换、拆分和使用关系。
2. 为什么评测数据尤其需要血缘
评测集决定模型上线结论。若样本进入训练集,或同一文档的近重复片段被拆到训练和测试,分数会虚高。
追踪来源文档、去重簇和 split assignment,才能证明评测独立性,并在发现污染时重建干净快照。
3. 单样本记录哪些字段
至少包含 sample_id、source_id、source_uri 的受控引用、内容哈希、采集时间、许可证/同意、数据分类、语言和当前状态。
内容修改后生成新 revision,不覆盖历史哈希。低熵敏感内容不使用裸哈希,以免被字典反推。
4. 转换步骤如何可复现
每次清洗、切分、脱敏、去重和格式转换记录代码版本、容器镜像、参数、输入与输出快照。
transform:
name: pii-redaction
code: commit-a17c
config_hash: sha256:...
input_snapshot: raw-20260918
output_snapshot: clean-20260918-v2
随机采样还要保存 Seed 和算法版本。
5. 标注血缘记录什么
保留标注指南版本、任务 ID、标注者或供应商、时间、原始标签、复核与仲裁结果。标注者身份可以伪名化,但要能做质量归因。
自动生成或模型辅助标注需记录生成模型、Prompt 与校验规则,不能把合成标签伪装成人工金标。
6. 去重与 Split 如何联动
先建立精确/近重复簇,再按簇分配 train/validation/test,避免同簇跨集合。仅对最终文本随机拆分会遗漏模板变化和段落重叠。
| 拆分方式 | 风险 | 改进 |
|---|---|---|
| 随机样本拆分 | 近重复泄漏 | 按去重簇拆分 |
| 随机时间混合 | 未来信息泄漏 | 时间切分 |
| 同用户跨集合 | 个性特征泄漏 | 按主体分组 |
| 同文档分片跨集合 | 上下文重复 | 按源文档分组 |
拆分策略本身也要版本化。
7. 数据集快照为什么不可变
训练或评测引用不可变 Manifest,其中列出样本 revision、权重和 split。新增/删除样本创建新快照,不原地修改。
这样历史 Run 才能重现;“读取某目录最新文件”会让同一 Run ID 在不同日期得到不同数据。
8. 线上样本怎样进入闭环
线上日志先经过授权、脱敏、质量筛选和去重,再进入候选池;人工确认后才能成为评测或训练数据。
记录从 request/trace 到派生样本的关系,但避免把租户秘密复制到普通数据平台。生产数据用途必须符合原始同意和合同。
9. 模型与数据如何双向关联
训练 Run 记录所有训练/验证快照、代码、超参数和基座模型;模型注册表记录 Run ID;发布 Manifest 再引用模型版本。
sample -> snapshot -> training_run -> model -> release
sample <- impact query -------------------------+
这支持“该模型用了什么数据”和“该数据影响了哪些模型”两种查询。
10. 删除请求如何传播
收到删除/撤权后,从 source 或 subject ID 反查原始、清洗、标注、索引、快照和缓存。已训练模型是否需要重训或机器遗忘,取决于法规、合同和风险政策。
删除任务记录范围、各系统状态、失败重试和验证证据。备份恢复后也必须重新应用删除墓碑。
11. 许可证与用途限制
来源许可可能允许评测但不允许训练,或禁止商业使用。将 purpose 标签写入资产元数据,并在数据集构建时做策略校验。
许可变化时通过下游图定位受影响快照和模型,停止新使用并评估已发布资产,而不是只删除下载文件。
12. 血缘系统怎样保持可信
流水线自动发出事件,减少手工填写;Manifest 进行签名和哈希校验;元数据 Schema 强制必填项。正文存储与元数据权限分离。
定期抽样从模型反查到源,再从源正查到发布,验证图没有断边。血缘缺失应阻止高风险数据进入生产。
13. 如何验收
选一个错误评测样本,要求在限定时间内找到来源、转换、标注、去重簇、快照和受影响模型。再模拟来源撤权,验证影响分析和删除传播。
监控孤儿资产、未知来源比例、快照可复现率、删除完成时间和跨 split 重复率。
数据血缘的价值,是让每个分数、模型和删除声明都有可验证的来源链与影响范围。
14. 常见误区与追问
- 误区:Git 管住 CSV 就有完整血缘。 转换、标注、权限和下游使用仍缺失。
- 误区:只给数据集一个版本号即可。 需要样本级 revision 与不可变 Manifest。
- 误区:随机拆分就能避免泄漏。 近重复、同主体和时间泄漏仍存在。
- 误区:线上日志可以直接加入训练。 必须经过授权、脱敏、筛选和去重。
- 误区:删除源文件就完成删除。 派生快照、索引、缓存和模型仍需处理。
- 追问:正文很敏感怎么办? 血缘只存受控 ID/哈希,正文留在加密权限域。
- 追问:如何发现评测污染? 追踪去重簇、源文档与训练快照的交集。
15. 加强记忆
- 先画图:来源、样本、转换、标注、快照、Run、模型、发布。
- 再定 ID:样本 revision、内容哈希和来源 ID。
- 再保复现:代码、参数、Seed、不可变 Manifest。
- 再防泄漏:去重簇后再分 Split。
- 再守用途:同意、许可、地域和目的标签。
- 再做反查:数据到模型、模型到数据都能查询。
- 最后做演练:错误归因和删除传播必须走通。