征程 6|工具链部署实用技巧 6:hbm 解析 API 集锦

一、前言
在复杂关键的模型部署 Pipeline 中,浮点模型量化后生成用于板端部署的 hbm 模型,这是部署重要节点,承载适合板端运行的参数与结构信息。
部署 hbm 模型到板端前,需进行一致性验证和检查,以确保其准确稳定运行,避免预测不准、系统崩溃等问题。
为完成验证和检查,会借助专门工具与 API。
本帖将详细介绍和整理用于 hbm 模型验证和检查的 API,助大家理解使用,保障模型部署顺利。
二、API 介绍
2.1 hbm 属性总体介绍
编译器的 Hbm 接口中封装了 hbm 模型的相关属性,我们可以使用以下代码查看:
此时输出 module 的属性如下:
这里重点介绍常用到的属性:
desc:模型的描述信息,可以存放在部署端需要用到的模型版本、name、任务等属性信息,部署时需要结合 UCP 的hbDNNGetModelDesc
进行使用;
march:模型的架构信息,即 nash-e,nash-m 等;
visualize:可视化 hbm 模型
此时输出 func 的属性如下:
flatten_inputs/flatten_output:获取输入输出,其中输入输出的 name,type 等信息需要依赖此属性,兼容 pytree;
feed:用于 hbm 的 python 端推理,feed 的输入为 dict;
下面将以详细的代码来介绍这些接口的使用。
2.2 hbm 输入输出信息获取
输出页面如下所示:

其中 hbm 的可视化可点击下图中的端口在线使用 netron 打开:

hbm 可视化页面:

可以看出 hbm 模型是全 BPU 的。
2.3 hbm desc 信息获取与修改
打印修改前后的 desc 信息:
从打印的页面可以看出,hbm 模型、inputs[0]、outputs[0]的 desc 信息已经修改完成。
2.4 python 端推理 hbm
目前使用 python 端推理 hbm 有两种方式:
调用编译器的 feed 推理接口,这种方式支持 X86 端和远程连接开发板进行推理,但是速度比较慢,仅适用于单帧推理;
使用 hbm_infer 工具远程连接开发板进行推理,在网络环境良好的情况下,这种方式推理速度比较快,优先推荐这种方式。
hbm_infer 工具请联系地平线技术支持人员获取。
下面会以简单的示例来演示两种推理方式的使用。
评论