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

275 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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