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

275 lines
5.2 KiB
Markdown
Raw Normal View History

# 模型优化 - 快速开始指南
**当前状态**: 跳过评估,直接开始模型优化
**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分钟启动
**影响**: 零影响训练
**下一步**: 运行分析脚本