HBRuntime是地平线提供的一套x86端模型推理库,支持对常用训练框架直接导出的ONNX原始模型、地平线工具链进行PTQ转换过程中产出的各阶段ONNX模型以及地平线工具链转换过程中产出的HBIR(*.bc)模型和HBM(*.hbm)模型进行推理,使用流程如下图所示:
使用HBRuntime进行模型推理时,参考使用方法如下:
output_names
:用于配置输出名称,支持配置为None或自定义配置,如无特殊要求,这里我们推荐您设置为None。
如配置为None,工具内部会读取模型内的输出节点信息并按解析的顺序给出推理结果。
如自定义配置,可以配置全量或部分output_name,且支持修改输出顺序。则推理完成后,会按您配置的输出名称和顺序返回输出。
input_feed
:用于配置模型运行的输入,需要按照输入类型和layout进行准备。配置格式要求为字典形式,输入名称和输入数据组成键值对。
此外,HBRuntime支持您在使用时查看模型属性信息,支持查看如下模型属性信息。例如如想打印查看模型输入数量,参考方法:print(f"input_num: {sess.input_num}")
。
model_attribute | 说明 |
---|---|
input_num | 模型输入数量 |
output_num | 模型输出数量 |
input_names | 模型输入名称 |
output_names | 模型输出名称 |
input_types | 模型输入数据类型 |
output_types | 模型输出数据类型 |
input_shapes | 模型输入shape |
ouput_shapes | 模型输出shape |
下方针对ONNX模型推理和HBIR模型推理两种使用场景,分别为您提供HBRuntime的使用示例参考。
使用HBRuntime加载ONNX模型推理的基本流程如下所示,这份示例代码适用于所有ONNX模型的推理,根据不同模型的输入类型和layout要求准备数据即可:
使用HBRuntime加载HBIR模型推理的基本流程如下所示,这份示例代码适用于HBIR模型的推理,根据模型的输入类型和layout要求准备数据即可:
使用HBRuntime加载HBM模型推理的基本流程如下所示,这份示例代码适用于HBM模型的推理,根据模型的输入类型和layout要求准备数据即可: