bev-project/archive/docs_old/PHASE5_RESTART_WORKERS0.md

2.3 KiB
Raw Blame History

🔄 Phase 5 训练重启workers=0

重启时间: 2025-10-21 20:00
原因: 之前训练卡在数据加载阶段workers=4导致
解决方案: 使用workers=0主进程加载数据


新配置

关键变更

  • GPU数量: 8 → 4 (降低复杂度)
  • Workers: 4 → 0 (避免死锁)
  • Batch size: 2/GPU (保持)
  • 配置文件: multitask_enhanced_phase1_HIGHRES.yaml (保持)

完整命令

torchpack dist-run -np 4 python tools/train.py \
  multitask_enhanced_phase1_HIGHRES.yaml \
  --model.encoders.camera.backbone.init_cfg.checkpoint=pretrained/swint-nuimages-pretrained.pth \
  --load_from runs/run-326653dc-74184412/epoch_19.pth \
  --data.samples_per_gpu=2 \
  --data.workers_per_gpu=0 \
  --run-dir runs/enhanced_from_epoch19

📊 当前状态

启动时间: 20:00
日志文件: enhanced_training_workers0.log
进程数: 11个
GPU状态: 初始化中


⏱️ 预计时间

调整后估算

  • GPU数量: 4 (vs 之前8)
  • 单epoch时间: 约 20-25分钟 (4 GPU slower)
  • 总epochs: 23
  • 预计总时长: 8-10小时
  • 预计完成: 明天上午6:00-8:00

🔍 监控

# 实时日志
tail -f enhanced_training_workers0.log | grep -v "Shapely"

# GPU状态
watch -n 5 nvidia-smi

# 查找训练进度
grep "Epoch\|Iter" enhanced_training_workers0.log | tail -20

💡 为什么workers=0

问题根源

  • workers > 0: 多进程数据加载,可能导致共享内存冲突
  • 分布式训练: 多GPU + 多workers = 复杂的进程间通信
  • nuScenes数据集: 大量小文件I/O密集

workers=0的优势

  • 主进程加载数据(简单可靠)
  • 避免共享内存问题
  • 避免多进程同步死锁
  • 稳定性高已验证epoch_19训练成功使用

workers=0的劣势

  • ⚠️ 数据加载稍慢(但可接受)
  • ⚠️ 可能有短暂的GPU等待

权衡: 稳定性 > 速度,宁可慢一点也要训练成功


🎯 期望结果

训练应该能够:

  1. 顺利完成数据加载
  2. 进入训练循环
  3. 稳定运行23个epochs
  4. mIoU提升到60-65%

已使用workers=0重启训练等待数据加载完成...