feat(harness): checkpoint 存 unit_id 序列,断点续跑孪生对不拆

核心算法保真 #3(断点续跑):checkpoint 从逐题 question_id 改为存 unit_id
序列(孪生对折叠为单个 unit_id),恢复时 build_units + 按完整 unit 展开,
续跑后 pair 两成员同进同出、绝不被劈开。

- _batch_unit_ids/_batch_from_ids 对称折叠/展开,保序去重,纯非 AR 下
  unit_id==question_id、与旧逐题序列逐字节一致。
- momentum 采样抽取为 _sample_momentum_candidates 纯函数,docstring 显式
  记录 Phase 1 设计偏差:仅保证纯非 AR byte-identical,混格 momentum 不保证。
- 新增 test_checkpoint_pair(unit_id 落盘往返、pair 不拆)与
  test_non_ar_byte_identical(pools→batching→checkpoint→momentum 端到端黄金)。
This commit is contained in:
2026-07-15 08:22:18 -04:00
parent bd1f7a22a2
commit 6c6fb576ee
4 changed files with 627 additions and 16 deletions
+2 -1
View File
@@ -233,7 +233,8 @@ def write_checkpoint(
global_step: 全局 step 序号。
total_steps: 全局总 step 数。
version_snapshot: skills/prompts 版本快照。
epoch_batches: 本 epoch 的 batch 划分(question_id 列表的列表)。
epoch_batches: 本 epoch 的 batch 划分(unit_id 列表的列表,孪生对折叠为
单个 unit_id;纯非 AR 下 unit_id==question_id)。
config: 训练配置对象,用于计算 config_fingerprint。
关键实现细节: