bev-project/project/docs/模型优化_快速开始.md

5.2 KiB
Raw Blame History

模型优化 - 快速开始指南

当前状态: 跳过评估,直接开始模型优化
Baseline: Epoch 23 (NDS 0.6941, mAP 0.6446, mIoU 0.4130)
目标: 为Orin部署准备优化模型


一键开始5分钟

立即运行模型分析

cd /workspace/bevfusion

# 一键启动分析
bash 开始模型分析.sh

这个脚本会:

  1. 分析模型参数量和大小
  2. 统计各模块参数分布
  3. 生成优化建议
  4. 创建详细分析报告

预计时间: 2-5分钟
GPU使用: 不需要CPU分析
不影响: Stage 1训练继续运行


📊 预期分析结果

基于BEVFusion架构预期结果

模型规模:
  总参数量: ~110M
  模型大小: ~441MB (FP32)
  
主要模块:
  Camera Encoder: ~47M (43%)  ← 最大模块,优先优化
  LiDAR Encoder:  ~19M (17%)
  Detection Head: ~18M (16%)
  Decoder:        ~16M (14%)
  Segmentation Head: ~8M (7%)
  
优化潜力:
  剪枝40%: → 66M参数, 264MB
  INT8量化: → 66MB模型
  总压缩: 85% (441MB → 66MB)

🎯 三阶段优化路线

阶段1: 模型分析今天1小时

任务:
  ✓ 运行复杂度分析
  ✓ 确定优化策略
  ✓ 准备剪枝工具

输出:
  - model_complexity.txt
  - optimization_recommendations.md

阶段2: 结构化剪枝3-5天

目标:
  参数量: 110M → 60M (-45%)
  模型大小: 441MB → 240MB
  精度损失: <1.5%

步骤:
  Day 1-2: 实施剪枝
  Day 3-4: 微调3 epochs
  Day 5: 评估效果

阶段3: INT8量化4-6天

目标:
  模型大小: 240MB → 60MB (-75%)
  推理加速: 2-3倍
  累计精度损失: <3%

步骤:
  Day 1: PTQ快速验证
  Day 2-5: QAT训练5 epochs
  Day 6: 最终评估

📋 分析后的下一步

查看分析结果

# 查看最新分析
ANALYSIS_DIR=$(ls -td analysis_results/analysis_* | head -1)

# 查看模型复杂度
cat $ANALYSIS_DIR/model_complexity.txt

# 查看优化建议
cat $ANALYSIS_DIR/optimization_recommendations.md

准备剪枝工具

# 安装torch-pruning如果需要
pip install torch-pruning

# 或使用PyTorch内置剪枝
# 已包含在环境中

创建剪枝配置

# configs/nuscenes/det/.../multitask_pruned.yaml

# 基于原始配置,修改:
pruning:
  enabled: true
  method: 'l1'  # L1范数剪枝
  target_params: 60000000  # 目标60M参数
  
  # 各模块剪枝比例
  ratios:
    encoders.camera: 0.30  # 剪枝30%
    decoder: 0.25
    heads.object: 0.15
    heads.map: 0.15

🚀 立即执行的命令

Step 1: 运行分析(现在)

cd /workspace/bevfusion

# 启动分析
bash 开始模型分析.sh

# 等待完成2-5分钟

Step 2: 查看结果

# 找到最新分析目录
ANALYSIS_DIR=$(ls -td analysis_results/analysis_* | head -1)

# 查看关键信息
echo "=== 总体统计 ==="
cat $ANALYSIS_DIR/model_complexity.txt | grep -A 6 "总体统计"

echo -e "\n=== 模块分布 ==="
cat $ANALYSIS_DIR/model_complexity.txt | grep -A 15 "各模块参数统计"

echo -e "\n=== 优化建议 ==="
cat $ANALYSIS_DIR/model_complexity.txt | grep -A 10 "优化建议"

Step 3: 准备剪枝(今天晚些时候)

# 安装剪枝库(如需要)
pip install torch-pruning

# 检查安装
python -c "import torch_pruning as tp; print(tp.__version__)"

📊 并行执行(不影响训练)

当前状态:

  • Stage 1训练运行中GPU 0-3
  • 模型分析可并行CPU或GPU 4-7
  • 互不影响

资源使用:

GPU 0-3: Stage 1训练
GPU 4-7: 空闲(可选用于分析)
CPU: 模型分析(主要)
内存: ~2GB分析需要
磁盘: ~100MB结果文件

🎯 今天的目标

必须完成

  • 运行模型分析
  • 查看分析结果
  • 理解优化策略
  • 准备剪枝工具

可选完成

  • 安装torch-pruning
  • 创建剪枝配置模板
  • 阅读剪枝文档

📚 相关文档

已创建文档

  1. 模型优化启动计划.md - 完整优化计划
  2. 模型优化_快速开始.md - 快速开始(本文档)
  3. EPOCH23_训练中的评估结果.md - Baseline数据

分析脚本

  1. 开始模型分析.sh - 一键启动脚本
  2. tools/analysis/model_complexity_simple.py - 复杂度分析

📞 常见问题

Q: 分析需要多久?

A: 2-5分钟。主要是加载模型和统计参数不需要GPU。

Q: 会影响训练吗?

A: 不会。分析主要使用CPU不占用训练GPU。

Q: 分析结果准确吗?

A: 参数统计是准确的。FLOPs和推理时间是估算值。

Q: 下一步做什么?

A: 查看分析结果,准备剪枝工具,明天开始剪枝实施。


🎉 总结

当前进度

  • 跳过评估已有baseline数据
  • 创建优化计划和工具
  • 准备运行模型分析
  • Stage 1训练继续进行

立即行动

# 一行命令启动
cd /workspace/bevfusion && bash 开始模型分析.sh

今天结束前

  1. 完成模型分析
  2. 理解优化策略
  3. 准备剪枝工具
  4. 明天开始剪枝实施

状态: 🚀 准备就绪
时间: 5分钟启动
影响: 零影响训练
下一步: 运行分析脚本