hb_verifier 是一致性验证工具,支持进行ONNX模型之间、ONNX模型与HBIR模型、HBIR模型与HBIR模型之间的余弦相似度对比, HBIR与HBM模型之间的输出一致性对比。
余弦相似度表示不同阶段量化模型之间的一致性,余弦相似度越接近1,说明对比的两个量化模型的输出越接近。
一致性对比则会打印对比模型的输出一致性信息,包括输出名称、一致性、不一致元素数量、最大绝对误差、最大相对误差。
Fbc代表浮点HBIR模型,指通过PTQ API方式进行模型转换或QAT链路转换后导出的convert之前的HBIR模型。
Qbc代表定点HBIR模型。
对比模型 | 对比场景 | 模型是否来自 hb_compile | 输入数据要求 |
Onnx vs Onnx | 余弦相似度对比 | 不关注 | 一份原始数据 |
Onnx vs Fbc | 余弦相似度对比 | 否 | 两份分别对应 Onnx 和 Fbc 模型的数据 |
Onnx vs Qbc | 余弦相似度对比 | 是 | 一份原始数据 |
Onnx vs Qbc | 余弦相似度对比 | 否 | 一份原始数据 一份 runtime 数据 |
Fbc vs Qbc | 余弦相似度对比 | 否 | 一份原始数据 一份 runtime 数据 |
Qbc vs Hbm | 输出一致性对比 | 是 | 一份 runtime 数据 |
Qbc vs Hbm | 输出一致性对比 | 否 | 一份 runtime 数据 |
Hbm vs Hbm | 输出一致性对比 | 不关注 | 一份 runtime 数据 |
对于 Fbc(浮点HBIR模型),若已插入预处理节点,则需要修改原始数据为符合模型输入的数据。
hb_verifier工具目前暂不支持对模型量化编译时配置了separate_batch或separate_name后过程中生成的ptq_model.onnx模型的余弦相似度对比。
所有涉及对比的模型,必须为来自同一链路(PTQ/QAT)进行转换编译的产出物。
参数名称 | 参数说明 |
-h, --help | 显示帮助信息。 |
--version | 显示版本并退出。 |
-m, --model | 指定模型输入,支持ONNX模型(*.onnx)、HBIR模型(*.bc)文件、HBM模型(*.hbm)文件。 |
-i, --input | 指定推理测试时使用的数据,仅支持*.npy文件。
-i 参数传入。注意:
|
-c, --compare_digits | 设置比较推理结果的数值精确度(即比较数值小数点后的位数),若不进行指定则工具会默认比较至小数点后五位。 |
--ip | 指定开发板 IP 地址,默认为空。多个输入需要使用英文逗号分隔。 |
-u, --usename | 指定开发板用户名称,默认为 root 。多个输入需要使用英文逗号分隔。 |
-p, --password | 指定开发板用户密码,默认为空。多个输入需要使用英文逗号分隔。 |
--port | 指定开发板 SSH 端口,默认为 22 。多个输入需要使用英文逗号分隔。 |
以模型优化阶段模型 optimized_float_model.onnx
与模型校准阶段模型 calibrated_model.onnx
为例:
以模型优化阶段模型 optimized_float_model.onnx
与模型量化阶段定点模型 quantized_model.bc
为例:
以模型量化阶段定点模型 quantized_model.bc
与模型编译阶段模型 googlenet.hbm
为例:
以模型编译阶段模型 googlenet.hbm
为例, ip
设置为 None 表示使用模拟器:
所对比模型的余弦相似度信息会打印在终端内,如下示例所示:
其中:
NodeName代表算子名称。
TensorName代表该算子的第一个输出的Tensor名称。
ConsineSimilarity代表计算出的余弦相似度。
其中:
OutputName代表输出名称。
Consistency代表该输出是否一致。
Mismatched Elements 代表不一致元素数量和占比。
Max Abs Diff 代表最大绝对误差。
Max Rel Diff 代表最大相对误差。