数据截至 (上游 commit 669f534823b0)
01 · 工具箱骨架:标注与决策分离
这一章讲什么: Dolma 全部机制的地基——documents/attributes 分存的数据模型、并行执行框架
BaseParallelProcessor、以及 tagger 运行时如何在一遍扫描里跑完多个 tagger。读完你就理解了整个工具箱的「世界观」。
1. 它要解决的小问题
清洗语料要跑很多「检查项」:数词数、判语言、查毒性、找 PII、查重复……每项都要把全量数据扫一遍。
天真的做法是每项检查直接改数据(删掉不合格的行)。这有两个致命伤:
- 不可逆:阈值定错了、规则写错了,被删的数据就没了,只能从头再来。
- 没法调配方:想对比「阈值 0.3 vs 0.5 哪个训出来好」,就得保存 N 份几十 TB 的数据副本。
Dolma 的答案是:检查只做检查,判决另算。
2. 思路:原文是只读的,检查报告单独存档
核心设计一句话:
tagger 永远不修改
documents/,只往平行的attributes/<实验名>/目录写「报告」;报告与原文逐行对齐,用 id 关联。
报告里写的是什么?不是「合格/不合格」的判决,而是测量值:一个 [start, end, score] 三元组的列表——text[start:end] 这段文本,在某个维度上得了 score 分。
判决(留/删/替换)被推迟到混合阶段,用声明式表达式去查这些测量值(那是第 03 章的事)。