2026-06-14_xnet_gn_vmamba_handoff.md 3.9 KB

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.pyforce_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_modeguides 兼容逻辑 现实现已不再依赖旧接口,占位兼容只会增加维护成本与文档歧义 继续保留兼容空字段
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_fncross_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)

  1. 视需要清理工作区生成物 —— 删除 __pycache__ 与不需要提交的烟测产物。
  2. 若继续文档收口 —— 把剩余 xnet 历史文档逐篇统一成“当前实现对照说明”。
  3. 若继续训练验证 —— 增加一组标准 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(...)
  • 烟测命令虽然设置了小输入 64x64batch_size=1,但仍会完整跑完整个训练集 624 step,不是秒退型检查。

Branch Info

  • Branch: master
  • Latest Commit: d94a4364feat(layers): 将2D卷积归一化从BatchNorm切换到GroupNorm
  • Base Branch: master