数据质量与覆盖报告

报告读取已发布且校验和完整的 CPT v2 / SFT v2 数据包,输出 JSON 和 Markdown。 无需模型凭据,不发起模型调用。CPT 血缘增量也可读取,但其中可能没有训练正文。

python -m training.quality_report \
  --input data/training/snapshots/cpt-all \
  --output data/reports/cpt-all

python -m training.quality_report \
  --input data/training/snapshots/cpt-next \
  --baseline data/reports/cpt-all \
  --targets config/coverage-targets.json \
  --output data/reports/cpt-next

输出目录必须尚不存在,且不能位于输入数据包内。报告目录包含 report.json、report.md、 manifest.json 和 checksums.sha256。输入校验失败时拒绝生成报告;CLI 失败退出码为 2。

统计与解释

  • 样本数、唯一内容数、包内精确重复副本及比例、逻辑文档数、图片数;CPT 统计包内保存的目标 tokenizer token 数。
  • 按 split、来源、来源语言标签、生成方法、任务、策略、模态统计覆盖;未知标签记为 unknown。
  • 同一文本有多个来源时,每个来源计一次,因此来源桶之和可以超过样本或 token 总量。
  • SFT 不估算监督 token;需在后续训练 tokenizer、聊天模板和 loss mask 固定后统计。
  • 报告中的语言来自来源元数据,不能据此断言翻译后正文的语言。
  • 审计条目统计状态与 reason 字段,不输出自由文本审核解释。审计条目可能重复且不包含统一候选分母,因此通过率为 null。
  • 检查包内相同内容、逻辑 work 和图片是否跨 split。
  • 报告保留内容哈希用于版本比较,不复制样本正文或模型响应。

版本对比与覆盖缺口

--baseline 接受之前生成并通过校验的报告目录。只有类型、统计范围、tokenizer 身份相同才能比较; 禁止把当天增量当作累计快照比较。记录新增、移除、保留内容数,划分变更,指标和覆盖桶差值。 配方变化单独标记。

--targets 接受 JSON 数组,配置每个维度标签的最低样本数。配置示例:

[{"field":"task","label":"table_calculation","min_samples":100}]

支持 source_name、language、method、task、strategy、modality。 输出 actual_samples 和 missing_samples,当前仅报告缺口,不自动安排模型生成。

每日运行

每日飞轮自动为本轮产出的 CPT 和可选 SFT 包生成报告,目录为 data/reports/training/<run_id>/cpt/ 和 sft/。日报 JSON 的 quality_reports 给出路径和关键指标。 未产生数据包时记为 not_available;报告失败会使运行标为 partial 并记录错误类型,已发布数据保留。 每日 CPT 通常是增量,SFT 是当前选定证据/配方的快照,两者不能直接累加成“今日新增样本”。 warnings 汇总数据质量提示。

最终配比包也支持质量报告。启用每日训练版本发布后,版本中自带覆盖目标、上一版对比和配比缺口;按日 JSON/Markdown 另保存在 reports/daily/。