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

59 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 00 · 分层重构路线图
> 原则:按论文概念的依赖顺序逐层重建,每层完成后代码可运行、可验证。学习路径 = 提交历史。
> 后面各层不提前细化——细节在进入该层时随章节文档长出来(依据见 `appendix-claudemd-decisions.md` 的延迟接入哲学)。
## 当前进度(存档点)
> 每次断点(层完成/工作暂停)更新此节。恢复上下文时:读 CLAUDE.md → 本节 → 对应章节文档。
- **日期**: 2026-07-18
- **当前层**: 层 1(SFT 基线),待开工
- **层 0**: ✅ 已关账(2026-07-18)。两端 pytest 4/4 全绿;本地 env `ars-opd`torch 2.13 cu1304070Ti 可做小规模 GPU 调试);远程 env `/data/zym/envs/ars-opd`torch 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.py`detach 命门测试已预置(`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.py`API 客户端+缓存)+ `trainer.py`chunk 损失 + KL 锚定) | 远程端到端跑通(DeepSeek/MiniMax teacher |
| 6 | 评测与消融 | §5 | 数学评测脚本;三个消融开关 | MATH-500 子集上 student 有可测提升趋势 |
## 章节文档索引
| 文档 | 内容 | 状态 |
|------|------|------|
| `00-roadmap.md` | 本文 | ✅ |
| `01-paper-code-map.md` | 论文 §3-§4 精读 + 参考实现全景解剖 + 概念↔代码对照表 | ✅ |
| `02-sft-baseline.md` | 层 1:SFT 与数据管线 | ✅ 待读 |
| `03-whitebox-opd.md` | 层 2:token 级 KL 蒸馏及其脆弱性 | ⬜ |
| `04-mc-estimator.md` | 层 3:MC 估计 + 贝叶斯平滑 | ⬜ |
| `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_alpha`Dirichlet 平滑 |
| 相似度 φ | **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 缓存路径 |