2.0 KiB
2.0 KiB
Phase 4A 显存不足问题
时间: 2025-10-30
问题: CUDA OOM with 6 GPUs
错误信息
RuntimeError: CUDA out of memory. Tried to allocate 626.00 MiB
(GPU 0; 31.73 GiB total capacity; 18.22 GiB already allocated; 10.25 MiB free;
18.93 GiB reserved in total by PyTorch)
原因分析
显存需求增长
Phase 3 (400×400):
- BEV features: 512 × 400 × 400 = 81.92 MB
- Decoder中间层: ~300 MB
- 梯度 + Optimizer状态: ~2x
- 总计: ~900 MB / sample
Phase 4A (800×800):
- BEV features: 512 × 800 × 800 = 327.68 MB (4x增长)
- Decoder中间层: ~1.2 GB (4x增长)
- 梯度 + Optimizer状态: ~2x
- 总计: ~3.6 GB / sample (4x增长!)
6 GPU配置
samples_per_gpu: 1
workers_per_gpu: 0
total_samples_per_iteration: 6
显存分配:
- 模型权重: ~2 GB
- 单个sample: ~3.6 GB
- 总计: ~5.6 GB per GPU
实际使用: 18.22 GB (接近32GB上限)
解决方案
方案A: 减少GPU数量到4 (已采用)
torchpack dist-run -np 4 # 6 → 4张GPU
优势:
- 每个GPU处理更大的batch
- 显存充足: 32 GB per GPU
- 训练速度: 稍慢但可接受
预计速度:
- Phase 3 (6 GPU): ~15小时/epoch
- Phase 4A (4 GPU): ~22小时/epoch (+47%)
- 20 epochs: ~440小时 ≈ 18天
方案B: 渐进式训练
- Stage 1: 先在600×600训练10 epochs
- Stage 2: Fine-tune到800×800训练10 epochs
优势: 更快收敛
劣势: 需要两阶段
方案C: 减少decoder深度
decoder_channels: [256, 128] # 从[256,256,128,128]减少
优势: 节省显存
劣势: 模型容量下降
已采取行动
- ✅ 修改START_PHASE4A_FIXED.sh: np=4
- ✅ 保持其他配置不变
- 🔄 重新启动训练
预期结果
GPU配置: 4张 Tesla V100S-PCIE-32GB
Batch total: 4 samples
显存使用: ~22 GB per GPU (充足)
训练时间: ~18天 (20 epochs)
预期性能:
Stop Line IoU: 0.27 → 0.42+
Divider IoU: 0.19 → 0.35+
mIoU: 0.41 → 0.54+
状态: 使用4 GPU重新启动中...