docs: add pusht imf full-attention sweep spec
This commit is contained in:
107
docs/superpowers/specs/2026-03-27-pusht-imf-fullattn-design.md
Normal file
107
docs/superpowers/specs/2026-03-27-pusht-imf-fullattn-design.md
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
# PushT Image iMF Full-Attention Sweep Design
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
在一个独立新分支上,为 PushT 图像 iMF 路线新增 **full-attention** 变体(关闭因果注意力),并按与之前相同的架构扫描网格运行 **9 组实验**,每组训练 **350 epochs**。所有实验完成后,提取每组 **`max(test_mean_score)`** 并输出完整排名和趋势总结。
|
||||||
|
|
||||||
|
## Scope
|
||||||
|
本次工作仅覆盖:
|
||||||
|
1. 在不影响现有因果版 iMF 路线的前提下,新增 full-attention 实验链路;
|
||||||
|
2. 对 `n_emb ∈ {128, 256, 384}` 与 `n_layer ∈ {6, 12, 18}` 的 9 组组合做 350-epoch 扫描;
|
||||||
|
3. 在本机 5090 与 5880 双卡上做三路并行调度;
|
||||||
|
4. 在全部实验完成后自动汇总结果并直接向用户汇报。
|
||||||
|
|
||||||
|
不在本次范围内:
|
||||||
|
- 不替换或删除现有因果版 iMF 配置;
|
||||||
|
- 不改动已有 DiT baseline 实现;
|
||||||
|
- 不做多 seed 扩展;
|
||||||
|
- 不额外增加视频记录。
|
||||||
|
|
||||||
|
## Design Choice
|
||||||
|
采用“**新增独立配置 + 新分支**”的方式,而不是覆盖现有 iMF 默认配置。
|
||||||
|
|
||||||
|
原因:
|
||||||
|
- 现有因果版 iMF 已完成实验与结果记录,保持不动更利于对照;
|
||||||
|
- full-attention 作为新的实验链路,使用独立配置更易复现;
|
||||||
|
- 运行时只需要通过配置切换 `policy.causal_attn=false`,不需要重新设计 iMF 算法本身。
|
||||||
|
|
||||||
|
## Configuration Design
|
||||||
|
新增一个独立配置文件,例如:
|
||||||
|
- `image_pusht_diffusion_policy_dit_imf_fullattn.yaml`
|
||||||
|
|
||||||
|
其职责:
|
||||||
|
- 继承当前 PushT image iMF 配置链路;
|
||||||
|
- 保持 iMF 单步推理、SwanLab 标量记录、无视频记录;
|
||||||
|
- 显式设置:
|
||||||
|
- `policy.causal_attn=false`
|
||||||
|
- `policy.n_head=1`
|
||||||
|
- 保持其余 iMF 训练语义不变。
|
||||||
|
|
||||||
|
SwanLab 命名延续当前修复后的策略:
|
||||||
|
- `logging.name=${exp_name}`
|
||||||
|
- `logging.resume=false`
|
||||||
|
- `logging.id=null`
|
||||||
|
- `logging.group=${exp_name}` 或统一 sweep group override
|
||||||
|
|
||||||
|
## Code Change Strategy
|
||||||
|
优先最小改动:
|
||||||
|
- 若当前 `IMFTransformerForDiffusion` 已支持 `causal_attn=False` 分支,则不改核心算法,仅通过新配置关闭因果 mask;
|
||||||
|
- 如需补充回归验证,则新增针对 full-attention 配置/掩码行为的最小测试;
|
||||||
|
- 不改变已有因果版实验配置和已有测试语义。
|
||||||
|
|
||||||
|
## Experiment Matrix
|
||||||
|
实验网格固定为:
|
||||||
|
|
||||||
|
- `n_emb=128, n_layer=6`
|
||||||
|
- `n_emb=128, n_layer=12`
|
||||||
|
- `n_emb=128, n_layer=18`
|
||||||
|
- `n_emb=256, n_layer=6`
|
||||||
|
- `n_emb=256, n_layer=12`
|
||||||
|
- `n_emb=256, n_layer=18`
|
||||||
|
- `n_emb=384, n_layer=6`
|
||||||
|
- `n_emb=384, n_layer=12`
|
||||||
|
- `n_emb=384, n_layer=18`
|
||||||
|
|
||||||
|
统一设置:
|
||||||
|
- `training.num_epochs=350`
|
||||||
|
- `training.resume=false`
|
||||||
|
- `seed=42`
|
||||||
|
- PushT image 数据路径不变
|
||||||
|
- 指标以 **`logs.json.txt` 中 `test_mean_score` 的最大值** 为准
|
||||||
|
|
||||||
|
## Scheduling Design
|
||||||
|
使用三路串行队列并行执行 9 个实验:
|
||||||
|
|
||||||
|
- 本机 5090:1 个顺序队列
|
||||||
|
- 5880 GPU0:1 个顺序队列
|
||||||
|
- 5880 GPU1:1 个顺序队列
|
||||||
|
|
||||||
|
分配原则:
|
||||||
|
- 延续按 `n_emb × n_layer` 近似平衡工作量;
|
||||||
|
- 每张卡同一时刻只跑 1 个实验;
|
||||||
|
- 队列脚本负责“前一个结束后自动启动下一个”。
|
||||||
|
|
||||||
|
## Monitoring Design
|
||||||
|
继续采用“**训练队列脚本 + 监控 agent**”双层机制:
|
||||||
|
|
||||||
|
1. **实际调度**由本地/远端队列脚本负责;
|
||||||
|
2. **监控**由一个 xhigh 子 agent 轮询:
|
||||||
|
- 读取 pid 状态
|
||||||
|
- 检查 master log
|
||||||
|
- 检查每个 run 的 `logs.json.txt`
|
||||||
|
- 判断是否卡死/失败/全部完成
|
||||||
|
3. 一旦全部完成,监控 agent 直接返回:
|
||||||
|
- 9 组实验的最终 epoch
|
||||||
|
- 每组 `max(test_mean_score)`
|
||||||
|
- 排名表
|
||||||
|
- embedding / layer 趋势总结
|
||||||
|
|
||||||
|
本次要求下,agent 在收到全部完成信号后应直接向主会话回报结果,不等待用户再次提醒。
|
||||||
|
|
||||||
|
## Success Criteria
|
||||||
|
满足以下条件即视为完成:
|
||||||
|
1. full-attention iMF 配置在新分支上可运行;
|
||||||
|
2. 9 组 350-epoch 实验全部完成;
|
||||||
|
3. 不记录仿真视频,只记录标量;
|
||||||
|
4. SwanLab 运行命名不冲突;
|
||||||
|
5. 输出 9 组实验 `max(test_mean_score)` 的完整汇总与结论;
|
||||||
|
6. 全部实验结束后主会话可直接给用户最终总结。
|
||||||
Reference in New Issue
Block a user