专栏算法工具链【J6工具链部署实用技巧-2】如何读取和修改模型的desc信息

【J6工具链部署实用技巧-2】如何读取和修改模型的desc信息

momo(社区版)2024-09-10
226
0

引言

在上一篇文章中,我讲述了J6工具链中导出 qat.bc时修改输入输出名称和顺序的教程,其实在板端部署中,hbm模型的 desc信息也很重要。在板端部署工作中,用户可以将模型的版本、task 名称、roi坐标、bbox的scale等信息写进 desc中,然后使用ucp的hbDNNGetInputDesc、hbDNNGetOutputDesc、hbDNNGetModelDesc等接口获取到对应desc信息后适配输入数据和输出后处理。

由于技术架构的升级,J6工具链已经取消了J5工具链中获取和修改 desc信息的hbdk-hbm-attach工具。

在这样的背景下,今天将为大家演示导入和修改模型 desc信息的方法。主要包括:

  • export qat.bc时导入 desc信息;

  • 读取和修改 qat.bc的 desc信息;

  • 读取 hbm模型 desc信息;

【J6工具链部署实用技巧-1】如何修改bc和hbm模型的输入输出名称和顺序

hbdk-model-verifier、hbdk-sim和hbdk-hbm-attach工具使用教程

export bc时导入 desc信息

export接口介绍

J6 工具链QAT中封装的 export借口提供了在导出 qat.bc时写入 desc信息的功能,API介绍如下:

其中的input_descs、output_descs为写入输入/输出 desc信息的参数,下面将介绍一下使用教程。

使用示例

本示例依然以bev_sparse_resnet50参考算法为例来演示导入 desc信息。在此之前,请确保完成了J6 工具链 docker环境的部署和OE开发包的下载。

启动OE docker环境,进入OE包的horizon_j6_open_explorer_v3.0.17-py310_20240705/samples/ai_toolchain/horizon_model_train_sample/scripts路径下,编辑export_hbir.py脚本:

如上,input_descs和output_descs的定义遵循{'input_name':'',}的形式。

然后,运行export_hbir.py脚本导出 qat.bc:

下面我们来查看一下desc信息是否已经导入成功。

查看desc信息

示例代码如下:

输出信息如下:

从输入信息可以看到,我们在 export阶段成功导入了 desc信息。

编辑 desc信息

模型的 desc信息

示例代码:

输出结果如下:

从输出结果可以看出, bc模型的 desc已被成功修改。

输入输出节点的 desc信息

bc模型的输入输出节点主要包含name、desc、shape、dtype四个属性,其中name和desc支持修改,shape和dtype不可修改。示例代码如下:

输出结果:

从输出结果可以看出,输入节点的 name和 desc已被成功修改,输出节点的desc修改方法类似。

hbm信息查看

模型编译

desc信息编辑完成后,我们就可以使用编译器的compile接口将 qat_modifier.bc编译成上板部署的 hbm模型,编译代码如下:

hbm模型中的 desc和 name等信息均不支持修改,所以我们要在编译前把 desc等信息编辑完成。

hbm信息获取

由bc编译出的 hbm模型包含板端部署需要的 desc、name等信息。

如下为获取这些信息的 python代码:

在板端部署时,可以使用ucp的hbDNNGetModelDesc、hbDNNGetInputDesc、hbDNNGetOutputDesc接口来分别获取模型、输入、输出的 desc信息。

这样,我们就完成了由export时添加、查看、编辑desc信息到编译 hbm、读取 hbm中 desc信息的全过程!!!

如有疑问,欢迎评论

算法工具链
征程6技术深度解析社区征文官方教程
+1
评论0
0/1000