WJAD / MEMORY.md
fuzirui's picture
Sync WJAD codebase
0cfefd2 verified

显存与内存估算(bf16 AMP + GradNorm + PCGrad)

scripts/estimate_memory.py 生成。模型规模:18 层主干(9 Dense + 9 MoE,每 MoE 层 7 路由 + 1 共享专家)+ DINOv3 ViT-B/16 + 6 层校准 + 1024 检测 token + 24 控制 token。

项目 数值
总参数 725.62 M
可训练 (Stage1, DINOv3 冻结) 639.96 M
可训练 (Stage2, DINOv3 解冻) 725.62 M
序列长度(拼接后) 2848

显存(含 15% 余量)

Batch Size Stage2 峰值 推荐单卡 GPU HF Sandbox 选项
1 ~16 GB T4 16GB(紧)/ L4 24GB t4-small
2 ~18 GB L4 24GB l4x1
4 ~22 GB L4 24GB / A10G 24GB a10g-small
8 (目标) ~30 GB A10G Large 48GB / A100 40GB a10g-large
16 ~46 GB A100 80GB / H100 80GB a100-large

显存细分(BS=8 Stage2):

  • 权重 (bf16): 1.35 GB
  • 优化器 (AdamW fp32 m+v + 主副本): 8.11 GB
  • 主激活 (bf16, 18 + 6 层): ~12.6 GB
  • PCGrad retain_graph 开销: ~6.3 GB
  • 缓冲 / cuDNN workspace / 碎片: ~2 GB

如显存不足:

  • gradient_checkpointing(激活降至 ~1/3,可把 BS=8 塞进 A10G 24GB 大约 28GB)
  • BS=4 + grad_accum_steps=2 等价 BS=8 训练
  • 关 PCGrad(节省 ~6 GB),但牺牲多任务收敛质量

主机内存 / 磁盘

项目 数值(BS=8)
主机 RAM 推荐 ≥ 32 GB(DataLoader 4 workers × prefetch 2 + 模型 CPU 副本)
磁盘(一个 weather 子集,sandbox 验证) ~50 GB
磁盘(synthetic 全量 121 帧 × 7 weather × 5843 clip) ~700 GB
磁盘(synthetic + lidar + hdmap 全量) ~3 TB

设备选择建议

  • 本地烟囱(CPU/小卡)scripts/smoke_test.py 用极小张量验证 forward+backward,不需要 GPU。
  • HF Sandboxa10g-large (48 GB),BS=8 + bf16 + PCGrad 一次成功;约 $1.05/小时(HF 价格随时调整请以官方为准)。
  • HF Jobs 全量训练a100x1 (80 GB) 或 h100x1,BS=8~16。

复现命令

# 升级依赖到最新(写入 requirements.lock.txt)
python scripts/update_deps.py --torch-index https://download.pytorch.org/whl/cu124

# 估算
python scripts/estimate_memory.py

# Sandbox 推送
python scripts/push_to_sandbox.py --repo your-username/wjad-sandbox --gpu a10g-large

# Jobs 全量
python scripts/push_to_jobs.py --repo your-username/wjad --flavor a100x1