# 模型优化 - 快速开始指南 **当前状态**: 跳过评估,直接开始模型优化 **Baseline**: Epoch 23 (NDS 0.6941, mAP 0.6446, mIoU 0.4130) **目标**: 为Orin部署准备优化模型 --- ## ⚡ 一键开始(5分钟) ### 立即运行模型分析 ```bash 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: 最终评估 ``` --- ## 📋 分析后的下一步 ### 查看分析结果 ```bash # 查看最新分析 ANALYSIS_DIR=$(ls -td analysis_results/analysis_* | head -1) # 查看模型复杂度 cat $ANALYSIS_DIR/model_complexity.txt # 查看优化建议 cat $ANALYSIS_DIR/optimization_recommendations.md ``` ### 准备剪枝工具 ```bash # 安装torch-pruning(如果需要) pip install torch-pruning # 或使用PyTorch内置剪枝 # 已包含在环境中 ``` ### 创建剪枝配置 ```yaml # 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: 运行分析(现在) ```bash cd /workspace/bevfusion # 启动分析 bash 开始模型分析.sh # 等待完成(2-5分钟) ``` ### Step 2: 查看结果 ```bash # 找到最新分析目录 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: 准备剪枝(今天晚些时候) ```bash # 安装剪枝库(如需要) 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训练继续进行 ### 立即行动 ```bash # 一行命令启动 cd /workspace/bevfusion && bash 开始模型分析.sh ``` ### 今天结束前 1. 完成模型分析 2. 理解优化策略 3. 准备剪枝工具 4. 明天开始剪枝实施 --- **状态**: 🚀 准备就绪 **时间**: 5分钟启动 **影响**: 零影响训练 **下一步**: 运行分析脚本