8.6 KiB
8.6 KiB
Phase 4A Stage 1 训练配置完整记录
记录时间: 2025-11-01 22:10 UTC
目的: 记录当前训练的完整配置,确保重启后配置一致
🔍 训练状态快照
训练进度
最后成功迭代: Epoch [1][11400/15448]
完成度: 73.8%
崩溃时间: 2025-11-01 21:32:21 UTC
崩溃原因: FileNotFoundError (日志路径问题)
性能指标(Iter 11400)
总Loss: 2.6705
学习率: 2.000e-05
梯度范数: 13.12
检测IoU: 0.6220
BEV分割Dice Loss:
- Drivable Area: 0.12
- Ped Crossing: 0.27
- Walkway: 0.25
- Stop Line: 0.39
- Carpark Area: 0.23
- Divider: 0.59 (最难类别)
📋 训练命令配置
完整启动命令
cd /workspace/bevfusion
torchpack dist-run -np 8 python tools/train.py \
configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/multitask_BEV2X_phase4a_stage1.yaml \
--model.encoders.camera.backbone.init_cfg.checkpoint /data/pretrained/swint-nuimages-pretrained.pth \
--load_from /data/runs/phase4a_stage1/epoch_1.pth \
--data.samples_per_gpu 1 \
--data.workers_per_gpu 0
关键参数
| 参数 | 值 | 说明 |
|---|---|---|
| GPU数量 | 8 | -np 8 |
| 配置文件 | multitask_BEV2X_phase4a_stage1.yaml |
Phase 4A Stage 1 |
| 预训练模型 | /data/pretrained/swint-nuimages-pretrained.pth |
Swin Transformer |
| 起始checkpoint | /data/runs/phase4a_stage1/epoch_1.pth |
525MB |
| Batch/GPU | 1 | samples_per_gpu |
| Workers/GPU | 0 | 避免共享内存问题 |
⚙️ 环境变量配置
必需环境变量
export PATH=/opt/conda/bin:$PATH
export LD_LIBRARY_PATH=/opt/conda/lib/python3.8/site-packages/torch/lib:/opt/conda/lib:/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PYTHONPATH=/workspace/bevfusion:$PYTHONPATH
Python环境
Python路径: /opt/conda/bin/python
Python版本: 3.8
PyTorch: 1.9.1+cu111 (推测)
CUDA: 11.1
mmcv: 1.4.0+
GPU环境
驱动版本: 570.172.08
GPU型号: Tesla V100S-PCIE-32GB
GPU数量: 8
显存: 32GB/卡
📝 配置文件关键参数
文件路径
配置文件: configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/multitask_BEV2X_phase4a_stage1.yaml
BEV分辨率配置 (Stage 1)
work_dir: /data/runs/phase4a_stage1
model:
encoders:
camera:
vtransform:
# Stage 1: 0.2m分辨率 (540×540输入)
xbound: [-54.0, 54.0, 0.2]
ybound: [-54.0, 54.0, 0.2]
downsample: 2 # 输出360×360
heads:
map:
type: EnhancedBEVSegmentationHead
# Stage 1: 输出600×600 @ 0.167m
grid_transform:
input_scope: [[-54.0, 54.0, 0.75], [-54.0, 54.0, 0.75]]
output_scope: [[-50, 50, 0.167], [-50, 50, 0.167]]
# 完整4层Decoder
decoder_channels: [256, 256, 128, 128]
# 损失配置
deep_supervision: true
use_dice_loss: true
dice_weight: 0.5
focal_alpha: 0.25
focal_gamma: 2.0
训练配置
max_epochs: 20
optimizer:
type: AdamW
lr: 2.0e-5
weight_decay: 0.01
lr_config:
policy: CosineAnnealing
warmup: linear
warmup_iters: 500
warmup_ratio: 0.33333333
min_lr_ratio: 1.0e-3
optimizer_config:
grad_clip:
max_norm: 35
norm_type: 2
checkpoint_config:
interval: 1
max_keep_ckpts: 5
evaluation:
interval: 5 # 每5个epoch评估一次
📦 Checkpoint文件状态
起始Checkpoint
文件: /data/runs/phase4a_stage1/epoch_1.pth
大小: 525MB
创建: 2025-11-01 08:37 UTC
MD5: (待计算)
状态: ✅ 存在且完整
预训练模型
文件: /data/pretrained/swint-nuimages-pretrained.pth
大小: 106MB
创建: 2025-11-01 08:30 UTC
状态: ✅ 存在且完整
输出目录
work_dir: /data/runs/phase4a_stage1/
当前内容:
- epoch_1.pth (525MB)
- configs.yaml (25KB)
- logging/ (日志目录)
- *.log (训练日志)
🚨 已知问题与解决方案
问题1: work_dir冲突
症状:
FileNotFoundError: /workspace/bevfusion/runs/run-326653dc-b1f87d36/20251101_130559.log.json
原因:
- 配置文件中设置
work_dir: /data/runs/phase4a_stage1 - 但torchpack仍然尝试在
/workspace/bevfusion/runs/下创建目录
解决方案:
# 方案A: 确保目录存在
mkdir -p /workspace/bevfusion/runs/run-326653dc-b1f87d36
# 方案B: 使用--cfg-options强制覆盖
--cfg-options work_dir=/data/runs/phase4a_stage1
# 方案C: 软链接(推荐)
ln -s /data/runs/phase4a_stage1 /workspace/bevfusion/runs/run-326653dc-b1f87d36
问题2: 显存占用
当前状态: 29GB/32GB (91%) 安全: ✅ 显存充足,无OOM风险
问题3: 磁盘空间
当前状态:
/workspace: 362GB/439GB (87%)
/data: 403GB/879GB (49%)
安全: ✅ /data空间充足
✅ 重启检查清单
启动前检查
- 确认环境变量设置正确
- 确认checkpoint文件存在
- 确认预训练模型存在
- 确认work_dir路径正确
- 清理僵尸进程
- 释放GPU显存
配置验证
- 配置文件未被修改
- GPU数量: 8
- Batch size: 1/GPU
- Workers: 0/GPU
- 学习率: 2.0e-5
启动后监控
- 检查日志正常生成
- 确认GPU满载
- 验证Loss恢复正常
- 监控显存使用
- 确认work_dir写入正常
🔧 标准重启脚本
脚本位置
/workspace/bevfusion/RESTART_PHASE4A_STAGE1_FROM_ITER11400.sh
脚本内容
#!/bin/bash
# Phase 4A Stage 1 重启脚本
# 从Iter 11400恢复训练
set -e
cd /workspace/bevfusion
echo "=========================================================================="
echo "Phase 4A Stage 1 训练重启"
echo "=========================================================================="
echo "起点: Epoch 1, Iter 11400 (73.8%)"
echo "配置: 8×V100S, 600×600 BEV, FP32"
echo "=========================================================================="
# 环境变量
export PATH=/opt/conda/bin:$PATH
export LD_LIBRARY_PATH=/opt/conda/lib/python3.8/site-packages/torch/lib:/opt/conda/lib:/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PYTHONPATH=/workspace/bevfusion:$PYTHONPATH
# 环境检查
echo "【环境检查】"
python -c "import torch; print('✓ PyTorch:', torch.__version__)"
python -c "import mmcv; print('✓ mmcv:', mmcv.__version__)"
nvidia-smi -L | wc -l | xargs echo "✓ GPU数量:"
# Checkpoint检查
echo "【Checkpoint检查】"
if [ -f "/data/runs/phase4a_stage1/epoch_1.pth" ]; then
ls -lh /data/runs/phase4a_stage1/epoch_1.pth | awk '{print "✓ epoch_1.pth:", $5}'
else
echo "❌ epoch_1.pth 不存在!"
exit 1
fi
if [ -f "/data/pretrained/swint-nuimages-pretrained.pth" ]; then
ls -lh /data/pretrained/swint-nuimages-pretrained.pth | awk '{print "✓ 预训练模型:", $5}'
else
echo "❌ 预训练模型不存在!"
exit 1
fi
# 确保work_dir存在
mkdir -p /data/runs/phase4a_stage1
# 生成日志文件名
LOG_FILE="phase4a_stage1_restart_$(date +%Y%m%d_%H%M%S).log"
echo ""
echo "【开始训练】"
echo "日志文件: $LOG_FILE"
echo ""
# 启动训练
torchpack dist-run -np 8 python tools/train.py \
configs/nuscenes/det/transfusion/secfpn/camera+lidar/swint_v0p075/multitask_BEV2X_phase4a_stage1.yaml \
--model.encoders.camera.backbone.init_cfg.checkpoint /data/pretrained/swint-nuimages-pretrained.pth \
--load_from /data/runs/phase4a_stage1/epoch_1.pth \
--data.samples_per_gpu 1 \
--data.workers_per_gpu 0 \
--cfg-options work_dir=/data/runs/phase4a_stage1 \
2>&1 | tee "$LOG_FILE"
echo ""
echo "=========================================================================="
echo "训练结束!日志: $LOG_FILE"
echo "=========================================================================="
📊 预期训练时间
Epoch 1
已完成: 11400/15448 (73.8%)
剩余: 4048 iterations
预计时间: ~3小时
完成时间: 约2025-11-02 01:00 UTC
全部10 Epochs
总迭代数: 154,480
已完成: 11,400
剩余: 143,080
预计时间: ~9天
完成时间: 约2025-11-10
🎯 重启后验证点
立即检查(启动后5分钟)
✓ 日志文件正常生成
✓ GPU利用率达到100%
✓ Loss值在2.5-2.8范围
✓ 没有OOM错误
✓ work_dir写入正常
短期检查(1小时后)
✓ Loss持续下降
✓ 梯度范数在10-20范围
✓ 显存稳定在29GB
✓ 每iteration约2.6秒
中期检查(Epoch 1完成)
✓ Epoch 1完成并保存checkpoint
✓ 验证评估是否正常
✓ Loss相比Iter 11400有下降
✓ 磁盘空间充足
文档版本: 1.0
最后更新: 2025-11-01 22:10 UTC
状态: ✅ 配置记录完整,可用于重启