Files
ars-opd-rebuild/docs/00-roadmap.md
T
iomgaa 20e6d97427 层1/T2: teacher.py 批量生成 + sha256 JSONL 缓存;teacher 改定 MiniMax-M3
- teacher.py: 通用 OpenAI 兼容客户端(配置驱动 base_url,替代 OpenRouter 专用);
  缓存即断点(逐条落盘+flush,重跑自动续传);单条失败先落盘其余、结束汇总显式报错;
  M3 思考段 <think>...</think> 入库前剥离(只剥开头一段)
- configs.py: 新增 TeacherGenConfig(采样参数显式化;连接三元组走 .env)
- scripts/generate_teacher_completions.py: 自包含生成脚本(本地跑,与训练侧
  同 seed 同子集约束已注明)
- teacher 决策变更同步:.env.example / docs/00 关键设定与存档点 / docs/02
- tests/test_teacher.py: 10 个单测(假客户端注入),含与 attach 的端到端契约闭环

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-18 07:52:53 -04:00

5.1 KiB
Raw Blame History

00 · 分层重构路线图

原则:按论文概念的依赖顺序逐层重建,每层完成后代码可运行、可验证。学习路径 = 提交历史。 后面各层不提前细化——细节在进入该层时随章节文档长出来(依据见 appendix-claudemd-decisions.md 的延迟接入哲学)。

当前进度(存档点)

每次断点(层完成/工作暂停)更新此节。恢复上下文时:读 CLAUDE.md → 本节 → 对应章节文档。

  • 日期: 2026-07-18
  • 当前层: 层 1SFT 基线),待开工
  • 层 0: 已关账(2026-07-18)。两端 pytest 4/4 全绿;本地 env ars-opdtorch 2.13 cu1304070Ti 可做小规模 GPU 调试);远程 env /data/zym/envs/ars-opdtorch 2.10 cu1288 卡可见);gitea 双端打通(SSH 222
  • 已完成学习: 第一章全部精讲(式 1-8、§3.1-3.6、detach 命门专题);第二章已写好待读
  • 下一步: Claude 编写 T1→T3→T4→T2→T5(工作模式已改:Claude 写码、用户精读提问,见 CLAUDE.md URGENT.1);默认参数已通过(teacher=MiniMax-M3 经自建网关 / enable_thinking=False / max_length=4096 / 1k 子集);T1/T3/T4 已完成入库
  • 层 1 讨论已完成的: docs/02 全部难点已精讲(collator 五步流水线与坑二、FSDP 决策与 DDP 触发点、删除/替代清单逐项理由、hash 不稳定演示)
  • 未精讲的文档账: docs/01 的 §3.7(KL 锚三处实现差异)、§3.8(论文外稳定器)、§4(训练步流程走读)
  • 未精讲的文档账: docs/01 的 §3.7(KL 锚三处实现差异)、§3.8(论文外稳定器)、§4(训练步流程走读)
  • 远程磁盘备忘: 根分区 100% 的结构性原因是 /root/zym(507G 历史工作区)压在根分区,建议择期整体搬迁 /data;临时缓解 = 清 /tmp/pip-unpack-*、旧 tar.gz、journal。所有新增写盘已改道 /data/zym

分层计划

主题 论文对应 产出 验证方式
0 环境与骨架 本地/远程 conda 环境、gitea 同步、包骨架 两端 pytest 空跑通过
1 SFT 基线 §3.1 式(1) 数据管线 + 最小 SFT 训练脚本(Qwen3-0.6B 远程 4 卡跑通,loss 正常下降
2 White-box OPD 基线 §3.1 式(2) token 级反向 KL 蒸馏(teacher Qwen3-4B 本地 vLLM 远程跑通;理解式(2)梯度爆炸问题(§4.1)
3 相似度 + MC 估计器 §3.2.1-3.2.2 式(3)(4)(5) similarity.py + estimator.py(纯逻辑) 本地 CPU 单测,对拍 validate_mc_estimator.pydetach 命门测试已预置(tests/test_estimator_detach.py),完成后需接入真实实现
4 Peak-entropy 调度器 §3.2.3 式(6)(7) chunking.py(纯逻辑) 本地 CPU 单测:toy 熵序列上验证 chunk 选择与合并
5 完整 OmniOPD §3.2.4 式(8) teacher.pyAPI 客户端+缓存)+ trainer.pychunk 损失 + KL 锚定) 远程端到端跑通(DeepSeek/MiniMax teacher
6 评测与消融 §5 数学评测脚本;三个消融开关 MATH-500 子集上 student 有可测提升趋势

章节文档索引

文档 内容 状态
00-roadmap.md 本文
01-paper-code-map.md 论文 §3-§4 精读 + 参考实现全景解剖 + 概念↔代码对照表
02-sft-baseline.md 层 1SFT 与数据管线 待读
03-whitebox-opd.md 层 2:token 级 KL 蒸馏及其脆弱性
04-mc-estimator.md 层 3MC 估计 + 贝叶斯平滑
05-entropy-chunking.md 层 4:熵调度
06-omniopd-full.md 层 5:完整损失与 teacher 客户端
07-eval-ablation.md 层 6:评测与消融

关键设定(与论文默认对齐,规模缩小)

参数 论文默认 本项目 说明
chunk 数 M 10 10 每条轨迹审计的 chunk 数
rollout 数 N 10 10 每个 chunk 的 teacher MC 采样数(§4.2 证明 N=10 是甜点)
chunk 长度 C 50 50 token 数
先验强度 α 1.0 1.0 chunk_alphaDirichlet 平滑
相似度 φ edit_distance(§5.1 edit_distance ⚠️ 代码默认 rouge1config L298)与论文默认背离,须显式指定
KL 锚权重 β 0.1(§5.1 0.1 ⚠️ 代码默认 mc_kl_weight=0 与论文背离,须显式指定
训练数据 DAPO-Math-17Kprompt-only 同(层 1 先抽 ~1k 子集控制 API 成本) 一份数据服务层 1-6;学生升到 1.7B 后可直接对表论文 Table 1
Student Qwen3-1.7B / 4B Qwen3-0.6B 跑通优先;升级 1.7B 即可与论文对比
Teacher Qwen3-32B / Claude-4.5-Haiku / Gemini-2.5-Flash MiniMax-M3(自建 new-api 网关,OpenAI 兼容;2026-07-18 由 DeepSeek 改定) logit-free 主路径;M3 是 reasoning 模型,思考段入库前剥离(teacher.py strip_think
SFT 基线定义 teacher rollout 上的离线蒸馏(非人写答案) 对应参考实现 _generate_teacher_completions + JSONL 缓存路径