Files
Test_AI/.kiro/specs/fp16-benchmark-framework/tasks.md
2026-01-20 10:54:30 +08:00

201 lines
7.3 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.

# 实现计划: FP16 性能评估 Benchmark 框架
## 概述
本实现计划将设计文档中的架构转化为可执行的编码任务。采用增量开发方式,每个任务都建立在前一个任务的基础上,确保代码始终可运行。使用 Python 作为实现语言,配合 TensorRT Python API、pynvml、OpenCV 等库。
## 任务
- [x] 1. 项目结构和基础配置
- [x] 1.1 创建项目目录结构和核心模块文件
- 创建 `benchmark/` 目录结构
- 创建 `__init__.py``config.py``utils.py` 等基础文件
- 创建 `requirements.txt` 依赖文件
- _需求: 9.1, 9.4_
- [x] 1.2 实现配置数据模型和 YAML 解析
- 实现 `BenchmarkConfig` 数据类
- 实现 YAML 配置文件加载和验证
- 实现默认配置生成
- _需求: 9.1, 9.3, 9.4_
- [x] 1.3 实现命令行参数解析
- 使用 argparse 实现命令行接口
- 实现参数覆盖配置文件逻辑
- 实现 --help 帮助信息
- _需求: 9.2, 9.5_
- [ ]* 1.4 编写配置验证属性测试
- **Property 13: 配置参数验证**
- **验证: 需求 9.6**
- [x] 2. TensorRT Engine 构建模块
- [x] 2.1 实现 TRTEngineBuilder 类
- 实现 YOLOv11n 模型到 ONNX 的导出
- 实现 ONNX 到 TensorRT FP16 Engine 的转换
- 支持动态 Batch Size (1-16) 和多分辨率 (320, 480)
- _需求: 1.1, 1.3, 1.5_
- [x] 2.2 实现 Engine 缓存和元数据管理
- 实现 `EngineMetadata` 数据类
- 实现 Engine 文件哈希校验
- 实现缓存命中判断逻辑
- _需求: 1.2, 1.6_
- [ ]* 2.3 编写 Engine 构建属性测试
- **Property 1: TensorRT Engine 构建往返一致性**
- **验证: 需求 1.1**
- [ ]* 2.4 编写动态 Batch Size 属性测试
- **Property 2: 动态 Batch Size 推理正确性**
- **验证: 需求 1.3**
- [ ] 3. 检查点 - 确保 Engine 构建模块正常工作
- 确保所有测试通过,如有问题请询问用户。
- [x] 4. TensorRT 推理引擎模块
- [x] 4.1 实现 TRTInferenceEngine 类
- 实现 Engine 加载和上下文创建
- 实现多 CUDA Stream 管理
- 实现 GPU 内存分配和绑定
- _需求: 1.4, 3.3, 3.4_
- [x] 4.2 实现异步推理接口
- 实现 `infer_async()` 方法
- 实现 `get_results()` 方法
- 实现 Stream 同步逻辑
- _需求: 3.3, 3.5_
- [ ]* 4.3 编写多 Stream 并行属性测试
- **Property 6: 多 CUDA Stream 并行加速**
- **验证: 需求 3.5**
- [x] 5. 视频解码模块
- [x] 5.1 实现 DecodeThread 类
- 实现 RTSP 流解码线程
- 实现本地视频文件解码
- 实现合成图像源生成
- _需求: 2.1, 2.5, 10.1, 10.2_
- [x] 5.2 实现帧队列管理
- 实现可配置长度的帧队列
- 实现队列满时的丢帧策略
- 实现解码统计信息采集
- _需求: 2.2, 2.3, 2.4_
- [x] 5.3 实现错误恢复和重连逻辑
- 实现 RTSP 断连检测
- 实现自动重连机制
- 实现视频循环播放
- _需求: 2.6, 10.5_
- [ ]* 5.4 编写解码线程属性测试
- **Property 3: 解码线程数量不变性**
- **Property 4: 帧队列数据流完整性**
- **验证: 需求 2.1, 2.2, 2.4**
- [ ]* 5.5 编写模拟源帧率属性测试
- **Property 14: 模拟源帧率控制精度**
- **验证: 需求 10.3**
- [ ] 6. 检查点 - 确保解码模块正常工作
- 确保所有测试通过,如有问题请询问用户。
- [x] 7. Batch 组装和 GPU 预处理模块
- [x] 7.1 实现 GPUPreprocessor 类
- 实现 GPU 加速的 resize 操作
- 实现 BGR 到 RGB 转换和归一化
- 实现批量预处理接口
- _需求: 3.6_
- [x] 7.2 实现 BatchAssembler 类
- 实现从多队列取帧逻辑
- 实现 Batch 组装和填充
- 实现帧丢失统计
- _需求: 3.1, 3.2_
- [ ]* 7.3 编写 Batch 组装属性测试
- **Property 5: Batch 组装大小正确性**
- **验证: 需求 3.1**
- [x] 8. 指标采集模块
- [x] 8.1 实现 GPU 指标采集器
- 使用 pynvml 采集 GPU 利用率
- 采集显存占用和带宽利用率
- 实现采样间隔配置
- _需求: 5.1, 5.2, 5.3, 5.4, 5.5_
- [x] 8.2 实现性能指标采集器
- 实现延迟记录和统计
- 实现吞吐量计算
- 实现帧丢失率计算
- _需求: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6_
- [x] 8.3 实现 MetricsCollector 统一接口
- 整合 GPU 和性能指标
- 实现统计值计算平均、最大、最小、P95
- 实现指标导出接口
- _需求: 5.6_
- [ ]* 8.4 编写 GPU 指标属性测试
- **Property 8: GPU 指标采集有效性**
- **验证: 需求 5.1, 5.2, 5.3, 5.4, 5.6**
- [ ]* 8.5 编写性能指标属性测试
- **Property 9: 性能指标计算正确性**
- **Property 10: 吞吐量计算一致性**
- **验证: 需求 6.1, 6.2, 6.3, 6.4, 6.5**
- [ ] 9. 检查点 - 确保指标采集模块正常工作
- 确保所有测试通过,如有问题请询问用户。
- [x] 10. Benchmark 主控程序
- [x] 10.1 实现 BenchmarkRunner 类
- 实现组件初始化和协调
- 实现单次测试执行流程
- 实现预热和稳定期处理
- _需求: 4.5_
- [x] 10.2 实现批量测试模式
- 实现参数组合生成
- 实现测试矩阵遍历
- 实现进度显示和中断处理
- _需求: 4.1, 4.2, 4.3, 4.4, 4.6_
- [x] 10.3 实现 GPU 饱和检测
- 实现饱和判定逻辑
- 实现饱和点标注
- 实现饱和原因记录
- _需求: 7.3_
- [ ]* 10.4 编写测试参数组合属性测试
- **Property 7: 测试参数组合完整性**
- **验证: 需求 4.6**
- [ ]* 10.5 编写 GPU 饱和标注属性测试
- **Property 12: GPU 饱和标注正确性**
- **验证: 需求 7.3**
- [x] 11. 结果输出和报告生成模块
- [x] 11.1 实现结果数据模型
- 实现 `TestResult` 数据类
- 实现结果序列化方法
- _需求: 7.1, 7.2_
- [x] 11.2 实现 JSON 和 CSV 导出
- 实现 JSON 格式输出
- 实现 CSV 格式输出
- 实现文件命名和目录管理
- _需求: 7.1, 7.2_
- [x] 11.3 实现 Markdown 报告生成
- 实现性能对比表格生成
- 实现 GPU 饱和临界点分析
- 实现参数选型建议生成
- _需求: 7.4, 7.5, 7.6, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6_
- [ ]* 11.4 编写结果序列化属性测试
- **Property 11: 结果序列化往返一致性**
- **验证: 需求 7.1**
- [x] 12. 集成和主入口
- [x] 12.1 实现主入口脚本
- 创建 `main.py` 入口文件
- 整合所有模块
- 实现完整的 Benchmark 流程
- _需求: 4.5, 9.2_
- [x] 12.2 实现混合视频源支持
- 实现 RTSP 和模拟源混合配置
- 实现源类型自动检测
- _需求: 10.4, 10.6_
- [ ]* 12.3 编写端到端集成测试
- 测试单摄像头完整流程
- 测试多摄像头并发场景
- 测试结果输出完整性
- [ ] 13. 最终检查点 - 确保所有测试通过
- 确保所有测试通过,如有问题请询问用户。
## 注意事项
- 标记为 `*` 的任务为可选任务,可跳过以加快 MVP 开发
- 每个任务都引用了具体的需求编号以确保可追溯性
- 检查点任务用于确保增量验证
- 属性测试验证通用正确性属性
- 单元测试验证具体示例和边界情况