hb_verifier工具

hb_verifier工具是用于支持进行模型逐层算子输出余弦相似度对比的工具,支持进行onnx模型之间、onnx模型与hbir模型之间的对比。

余弦相似度表示不同阶段量化模型之间的一致性,余弦相似度越接近1,说明对比的两个量化模型的输出越接近。

使用方式

hb_verifier -m ${onnx_model},${hbir_model} \ -i ${input_data}

命令行参数

参数名称参数说明
-h, --help显示帮助信息。
-m, --model指定推理测试时使用的图片,仅支持*.npy文件。
多输入模型添加图片的方式有以下两种传参方式,多张图片之间用“,”分割:
  • input_name1:image1,input_name2:image2, …
  • image1,image2…
注意
  • 输入需要包含前处理操作,即色彩转换/mean/scale等配置需在准备输入时在外部完成。如无特殊要求,使用校准数据集作为输入即可。
  • 输入图片的名称顺序需要与模型实际输入一致。

参考使用场景样例

  1. ONNX模型与ONNX模型之间进行余弦相似度对比。

以模型优化阶段模型 optimized_float_model.onnx 与模型校准阶段模型 calibrated_model.onnx 为例:

hb_verifier -m googlenet_optimized_float_model.onnx,googlenet_calibrated_model.onnx -i input.npy
  1. ONNX模型与HBIR模型之间进行余弦相似度对比。

以模型优化阶段模型 optimized_float_model.onnx 与模型量化阶段定点模型 quantized_model.bc 为例:

hb_verifier -m googlenet_optimized_float_model.onnx,googlenet_quantized_model.bc -i input.npy

输出内容说明

所对比模型的余弦相似度信息会打印在终端内,如下示例所示:

+-----------------------------------+----------------------------+-------------------+ | NodeName | TensorName | ConsineSimilarity | +-----------------------------------+----------------------------+-------------------+ | Conv_0 | 365 | 0.999978 | | Relu_2 | 367 | 0.999976 | | MaxPool_3 | 368 | 0.999901 | | Conv_4 | 369 | 0.999112 | | Relu_6 | 371 | 0.999212 | | ... | ... | ... | | Conv_189 | 554 | 0.984707 | | Relu_191 | 556 | 0.989554 | | Concat_192 | 557 | 0.989221 | | GlobalAveragePool_193 | 558 | 0.995896 | | Gemm_195 | transposed_replaced_output | 0.995836 | | Gemm_195_transpose_output_reshape | output | 0.995836 | +-----------------------------------+----------------------------+-------------------+

其中:

  • NodeName代表算子名称。

  • TensorName代表该算子的第一个输出的Tensor名称。

  • ConsineSimilarity代表计算出的余弦相似度。