基准测试
概述
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 模型标识符:来自 HubAI 模型库 的模型标识符,例如
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 地址为目标设备