基准测试
概述
RVC2 和 RVC4)上测量已转换模型设备端性能的方法。它的目的是生成与 HubAI 模型库 模型卡中通常显示的性能结果相同的类型。安装
Command Line
1pip install modelconv[bench]用法
Command Line
1modelconverter benchmark <target> --model-path <path_or_slug>--save,它还会将结果写入当前工作目录中的 CSV 文件。基本示例
Command Line
1modelconverter benchmark rvc4 --model-path yolov6-nano:r2-coco-512x288 --saveyolov6-nano_benchmark_results.csv。有关更高级的示例和选项,请参阅 高级示例 部分。支持的平台
<target> 支持多个平台:RVC2:DepthAI (DAI) 管道基准测试。RVC4:DepthAI (DAI) 管道基准测试(默认)或通过 ADB 连接到 RVC4 设备的基于 SNPE 的基准测试。
模型来源
--model-path 参数是 必需的,并接受以下模型来源:- 本地模型产物:
.blob文件(用于 RVC2)或.dlc文件(用于 RVC4) - 本地 NN 归档:Luxonis NN 归档(包含模型可执行文件和配置的
.tar.xz文件) - HubAI 模型 slug:来自 HubAI 模型库 的模型 slug,例如
yolov6-nano:r2-coco-512x288
HUBAI_API_KEY 环境变量已配置有效的凭据。输出结果
--save,结果将写入 CSV 文件。文件名源自模型名称,格式为:<model_name>_benchmark_results.csv。CLI 选项
| 参数 | 描述 | 默认值 | 平台 |
|---|---|---|---|
full | 运行涵盖所有配置的完整基准测试。 | False | RVC2, RVC4 |
save | 将基准测试结果保存到 CSV 文件。 | False | RVC2, RVC4 |
repetitions | DAI 基准测试的重复次数。 | 10 | RVC2, RVC4 |
benchmark-time | 基准测试持续时间(秒)。 | 20 | RVC2, RVC4 |
num-threads | 推理的线程数(仅 DAI)。 | 2 | RVC2, RVC4 |
num-messages | 每次推理运行发送的消息数(仅 DAI)。 | 50 | RVC2, RVC4 |
profile | 要使用的 SNPE 性能配置文件。 | balanced | RVC4 |
runtime | 用于推理的 SNPE 运行时。 | dsp | RVC4 |
num-images | SNPE 推理的图像数量。 | 1000 | RVC4 |
device-ip | 目标设备的 IP 地址。 | None | RVC4 |
device-id | 目标设备的唯一 ID。 | None | RVC4 |
dai-benchmark | 使用 DAI 基准测试而不是 SNPE 工具。 | True | RVC4 |
power-benchmark | 测量功耗(需要 ADB)。 | False | RVC4 |
dsp-benchmark | 测量 DSP 利用率(需要 ADB)。 | False | RVC4 |
控制基准测试持续时间
- 基于时间(推荐用于稳定的平均值):
--benchmark-time <seconds> - 固定重复次数:
--repetitions <N>
--benchmark-time 20),并且对于 RVC2 和 RVC4 目标,它优先于 --repetitions。要改为运行固定重复次数,请禁用基于时间的基准测试:Command Line
1modelconverter benchmark rvc4 \
2 --model-path <path_or_slug> \
3 --benchmark-time -1 \
4 --repetitions 50RVC4 相关选项
选择设备
--device-ip <ip>:指定目标 RVC4 设备的 IP 地址。--device-id <id>:指定目标 RVC4 设备的唯一 ID。
device-id 优先。电源和DSP监控
--power-benchmark:启用后,基准测试会从设备hwmon节点(可用时)收集功耗读数,并报告基准测试运行期间系统和处理器的平均功耗统计信息。--dsp-benchmark:启用后,基准测试会从设备收集DSP利用率数据,并报告基准测试运行期间的平均DSP利用率。
DAI与SNPE基准测试对比
- DAI基准测试(默认):通过
--dai-benchmark启用。 - 基于ADB的SNPE工具:通过
--no-dai-benchmark启用。
- 对于大多数用例,使用默认的DAI基准测试。
- 当需要手动SNPE风格的基准测试或想直接对
.dlc文件进行基准测试时,使用SNPE路径。
snpe-parallel-run,行为如下:- 准备一组图像并将其发送到设备进行推理(通过
--num-images配置)。 - 通过
--runtime和--profile选项支持运行时和性能定制。 - 默认在两个线程上运行(以匹配DAI默认值)。
手动SNPE基准测试
modelconverter benchmark。这在以下情况下很有用:- 构建自定义基准测试脚本或自动化
- 与现有SNPE管道集成
- 需要对基准测试参数进行细粒度控制
工作流程
- 检查DLC模型 提取输入张量元数据,包括张量名称、形状和数据类型。使用
snpe-dlc-info来获取这些信息。 - 准备输入数据
- 创建与预期张量形状和类型匹配的输入
.raw文件。 - 生成一个
input_list.txt文件,列出所有待处理的输入文件。
- 创建与预期张量形状和类型匹配的输入
- 运行SNPE基准测试工具 根据基准测试目标选择合适的工具:
高级示例
自定义持续时间的NN Archive
Command Line
1modelconverter benchmark rvc2 \
2 --model-path path/to/model_archive.tar.xz \
3 --benchmark-time 60 \
4 --save- 运行60秒基于时间的基准测试,以 获得更稳定的结果
- 将结果打印到控制台并保存为CSV以便比较
带电源监控的HubAI模型
Command Line
1modelconverter benchmark rvc4 \
2 --model-path yolov6-nano:r2-coco-512x288 \
3 --device-ip 192.168.1.50 \
4 --power-benchmark \
5 --dsp-benchmark- 使用
--device-id <id>替代--device-ip <ip> - 电源和DSP监控需要ADB访问权限和设备支持
通过SNPE进行本地DLC基准测试
.dlc 文件进行基准测试,并控制工作负载大小。Command Line
1modelconverter benchmark rvc4 \
2 --model-path path/to/model.dlc \
3 --no-dai-benchmark \
4 --device-ip 192.168.1.50 \
5 --num-images 500- 使用SNPE基准测试路径而非DAI(通过
--no-dai-benchmark) - 处理500个生成的输入图像
- 通过IP地址定位特定设备