bev-project/archive/docs_old/当前训练配置记录_20251101_2210.md

8.6 KiB
Raw Blame History

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
状态: 配置记录完整,可用于重启