bev-project/FP16_Batch2配置总结.md

281 lines
5.6 KiB
Markdown
Raw Permalink Normal View History

# FP16 + Batch=2 优化配置总结
**配置时间**: 2025-11-01 22:20 UTC
**状态**: ✅ Ready to launch
---
## 🎯 配置概览
### 核心优化
```
✓ FP16混合精度训练
✓ Batch size: 1 → 2/GPU
✓ 总batch: 8 → 16
✓ 学习率: 2e-5 → 4e-5
```
### 预期性能提升
| 指标 | FP32原始 | FP16+Batch2 | 改进 |
|------|----------|------------|------|
| **训练速度** | 2.65s/iter | ~1.5s/iter | **+43%** ⚡ |
| **显存占用** | 29GB/GPU | ~24-26GB/GPU | 节省5GB |
| **Epoch时间** | 11小时 | ~6小时 | **-45%** |
| **10 epochs** | 9天 | **~5天** | **节省4天** ⭐ |
---
## 📋 配置详情
### 配置文件
```yaml
# configs/.../multitask_BEV2X_phase4a_stage1_fp16.yaml
work_dir: /data/runs/phase4a_stage1_fp16_batch2
# FP16混合精度
fp16:
loss_scale: dynamic
# Batch优化
data:
samples_per_gpu: 2 # ⭐ 增加到2
workers_per_gpu: 0
# 学习率调整
optimizer:
type: AdamW
lr: 4.0e-5 # ⭐ 2倍batch → 2倍lr
weight_decay: 0.01
```
### 训练命令
```bash
torchpack dist-run -np 8 python tools/train.py \
configs/.../multitask_BEV2X_phase4a_stage1_fp16.yaml \
--model.encoders.camera.backbone.init_cfg.checkpoint /data/pretrained/swint-nuimages-pretrained.pth \
--load_from /data/runs/phase4a_stage1/epoch_1.pth \
--cfg-options work_dir=/data/runs/phase4a_stage1_fp16_batch2
```
---
## 🚀 启动方式
### 方法1: 一键启动(推荐)⭐
```bash
cd /workspace/bevfusion
bash CLEANUP_AND_START_FP16_BATCH2.sh
```
**功能**:
- ✅ 自动清理僵尸进程
- ✅ 检查GPU状态
- ✅ 启动FP16+Batch2训练
- ✅ 显示监控命令
### 方法2: 手动分步执行
```bash
# 步骤1: 清理僵尸进程
pkill -9 -f "train.py"
sleep 5
# 步骤2: 启动训练
cd /workspace/bevfusion
bash RESTART_PHASE4A_STAGE1_FP16.sh
```
---
## 📊 预期时间表
### 基于1.5s/iter速度
```
Epoch 1完成: ~6小时 (11/2 04:00 UTC)
Epoch 2完成: ~12小时 (11/2 10:00 UTC)
Epoch 5完成: ~30小时 (11/3 04:00 UTC)
Epoch 10完成: ~5天 (11/6 22:00 UTC) ⭐
```
**相比FP32节省**: 4天
**相比FP16单batch节省**: 1.5天
---
## ⚠️ 监控要点
### 启动后5分钟检查
**1. 确认FP16生效**
```bash
# 查看显存占用应该24-26GB
nvidia-smi
# 如果仍是29GB → FP16未生效
# 如果是19GB → Batch=2未生效
# 如果是24-26GB → ✅ 正确
```
**2. 确认速度提升**
```bash
# 查看iteration速度
tail -50 $(ls -t phase4a_stage1_fp16_batch2*.log | head -1) | grep "time:"
# 应该看到约1.4-1.6s/iter
# 如果仍是2.6s → 优化未生效
```
**3. 确认Loss正常**
```bash
# 查看Loss值
tail -100 $(ls -t phase4a_stage1_fp16_batch2*.log | head -1) | grep "loss:" | tail -5
# Loss应该在2.5-2.8范围
# 注意是否有NaN
```
### 1小时后检查
**稳定性验证**:
```bash
# 1. Loss趋势稳定无剧烈波动
# 2. 梯度范数正常10-20范围
# 3. 无OOM错误
# 4. 显存稳定在24-26GB
```
---
## 🔧 可能的问题与解决
### 问题1: 显存OOM
**症状**:
```
RuntimeError: CUDA out of memory
```
**解决**:
```bash
# 降回batch=1
# 修改配置文件:
data:
samples_per_gpu: 1
optimizer:
lr: 2.0e-5
```
### 问题2: Loss震荡
**症状**: Loss波动剧烈
**解决**:
```yaml
# 降低学习率
optimizer:
lr: 3.0e-5 # 从4e-5降低
```
### 问题3: 速度未提升
**检查**:
```bash
# 1. 确认FP16生效
grep -i "fp16\|amp" 最新日志.log
# 2. 确认batch=2生效
grep "samples_per_gpu" 最新日志.log
```
---
## 📈 性能基准对比
### 三种配置对比
| 配置 | Batch/GPU | 总Batch | 显存 | 速度 | Epoch | 10 Epochs | 学习率 |
|------|-----------|---------|------|------|-------|----------|--------|
| **FP32原始** | 1 | 8 | 29GB | 2.65s | 11h | **9天** | 2e-5 |
| **FP16单batch** | 1 | 8 | 19GB | 1.9s | 7.5h | **6.5天** | 2e-5 |
| **FP16+Batch2** ⭐ | 2 | 16 | 25GB | 1.5s | 6h | **5天** | 4e-5 |
### 加速对比
```
FP32 → FP16单batch: 加速30%节省2.5天
FP32 → FP16+Batch2: 加速43%节省4天 ⭐
```
---
## ✅ 配置验证清单
### 文件检查
- [x] 配置文件: `multitask_BEV2X_phase4a_stage1_fp16.yaml`
- [x] 启动脚本: `RESTART_PHASE4A_STAGE1_FP16.sh`
- [x] 一键脚本: `CLEANUP_AND_START_FP16_BATCH2.sh`
- [x] Checkpoint: `/data/runs/phase4a_stage1/epoch_1.pth`
- [x] 预训练模型: `/data/pretrained/swint-nuimages-pretrained.pth`
### 配置验证
- [x] FP16启用: ✅ `fp16.loss_scale: dynamic`
- [x] Batch=2: ✅ `samples_per_gpu: 2`
- [x] 学习率: ✅ `lr: 4.0e-5`
- [x] work_dir: ✅ `/data/runs/phase4a_stage1_fp16_batch2`
- [x] Workers: ✅ `workers_per_gpu: 0`
### GPU环境
- [x] GPU型号: Tesla V100S-PCIE-32GB
- [x] CUDA能力: 7.0 (支持Tensor Cores)
- [x] GPU数量: 8
- [x] PyTorch: 1.10.1+cu102
- [x] FP16支持: ✅
---
## 🎯 预期最终效果
### 性能指标
```
预计完成时间: 2025-11-06 22:00 UTC (5天后)
vs FP32原始: 节省4天
vs FP16单batch: 节省1.5天
最终性能预期:
mIoU: 0.48+ (相比Phase 3的0.41)
Divider IoU: 0.28+ (相比0.19)
Stop Line IoU: 0.35+ (相比0.27)
```
### 资源效率
```
GPU利用率: 100%
显存利用率: 75-80% (24-26GB/32GB)
训练效率: 相比FP32提升43%
```
---
## 📝 下一步计划
### 训练完成后11/6
1. 评估性能指标
2. 对比Phase 3 baseline
3. 决策是否继续Stage 2 (800×800)
4. 或启动Phase 4B (MapTR增强Divider)
### 可选优化
如果显存占用<23GB且稳定可以考虑
- 增加到batch=3 (进一步加速10-15%)
- 但需要调整学习率到6e-5
---
**文档版本**: 1.0
**最后更新**: 2025-11-01 22:20 UTC
**状态**: ✅ 配置完成,可立即启动
**建议**: 立即执行 `CLEANUP_AND_START_FP16_BATCH2.sh` 启动训练!⚡