Handoff: 2026-06-14 20:53
Summary
本轮工作主要围绕 XNet 2D 当前实现收口兼容逻辑、将主卷积归一化从 BatchNorm 切换为 GroupNorm,并修复 VMamba force_torch 路径下的设备分支问题。当前状态是核心代码已改完,单元测试已通过,真实 GPU 环境下 batch_size=1 的监督训练烟测已完整跑通 1 个 epoch,并生成 last.pth。
Current State
- Complete: 删除
guide_mode 兼容字段及 guides 空输出;将 XNet 2D 主路径中的 Conv2dBN 迁移为 Conv2dGN;修复 lib/modules/lib_mamba/csm_triton.py 中 force_torch=True 时对 torch.cuda.device(...) 的无条件调用;新增 tests/test_csm_triton_cpu.py 回归测试;真实 GPU 烟测完成。
- In Progress: 尚未继续清理工作区内生成产物,
outputs/smoke/conv2dgn_bs1_smoke/last.pth 和若干 __pycache__ 仍在。
- Blocked: 无代码级阻塞;是否保留烟测产物、是否继续同步更多历史文档,需按后续任务决定。
Key Decisions
| Decision |
Rationale |
Alternative |
去掉 guide_mode 与 guides 兼容逻辑 |
现实现已不再依赖旧接口,占位兼容只会增加维护成本与文档歧义 |
继续保留兼容空字段 |
用 Conv2dGN 替换 2D 主卷积路径上的 BatchNorm |
GroupNorm 对 2D 分割更常见,且能稳定支持 batch_size=1 训练 |
保留 BatchNorm 并强制更大 batch,或引入更复杂的可切换 norm 配置 |
对 cross_scan_fn/cross_merge_fn 仅做最小设备分支修复 |
根因是 CPU/非 CUDA 张量仍进入 torch.cuda.device(...),最小修复可保持 CUDA/Triton 行为不变 |
大范围重构 VMamba 扫描/合并分发逻辑 |
Files Touched
| File |
Purpose |
Status |
lib/modules/lib_mamba/csm_triton.py |
修复 force_torch 路径下的 CPU/设备分支 |
modified |
tests/test_csm_triton_cpu.py |
为 cross_scan_fn 和 cross_merge_fn 增加 CPU fallback 回归测试 |
created |
outputs/smoke/conv2dgn_bs1_smoke/last.pth |
真实 GPU batch_size=1 训练烟测产物 |
created |
Verification
pytest -q tests/test_csm_triton_cpu.py tests/test_xnet_2d.py -> 7 passed in 4.26s
- 真实 GPU 烟测命令:
python tools/train.py --config configs/segmentation/train_sup_us_template.yaml --set train.epochs=1 train.batch_size=1 train.val_batch_size=1 train.num_workers=0 train.persistent_workers=false train.pin_memory=false validation.enabled=false logging.use_swanlab=false dataset.image_size='[64,64]' checkpoint.dir=outputs/smoke/conv2dgn_bs1_smoke
- 烟测结果:完整运行到
step 624/624,输出 epoch 汇总,并生成 outputs/smoke/conv2dgn_bs1_smoke/last.pth
Next Steps (Priority Order)
- 视需要清理工作区生成物 —— 删除
__pycache__ 与不需要提交的烟测产物。
- 若继续文档收口 —— 把剩余 xnet 历史文档逐篇统一成“当前实现对照说明”。
- 若继续训练验证 —— 增加一组标准 GPU 烟测命令,覆盖
bs=1 最小回归和常规 bs>1 配置。
Open Questions
outputs/smoke/conv2dgn_bs1_smoke/last.pth 是否需要保留为验证证据,还是在提交前删除。
tests/test_csm_triton_cpu.py 是否继续保留为 CPU fallback 回归测试;从实现上看建议保留。
Known Pitfalls
git status 里出现的 __pycache__ 为运行测试/训练生成,不应作为有效代码改动提交。
force_torch=True 的问题根因不是 Triton 本身,而是设备上下文切换代码对 CPU 张量不安全;后续若继续改 VMamba,避免再引入类似无条件 torch.cuda.device(...)。
- 烟测命令虽然设置了小输入
64x64 和 batch_size=1,但仍会完整跑完整个训练集 624 step,不是秒退型检查。
Branch Info
- Branch:
master
- Latest Commit:
d94a4364 — feat(layers): 将2D卷积归一化从BatchNorm切换到GroupNorm
- Base Branch:
master