专栏算法工具链J6 工具链 BEVPoolV2 算子使用教程 【2】-BEVPoolV2 QAT 链路实现示例

J6 工具链 BEVPoolV2 算子使用教程 【2】-BEVPoolV2 QAT 链路实现示例

momo(社区版)2024-12-27
283
0
J6 工具链 BEVPoolV2 算子使用教程 【1】-BEVPoolV2 算子详解

1.引言

在上一篇帖子中,我们已详尽阐述了 BEVPoolV2 相较于 BEVPoolV1 的改进之处,并对 BEVPoolV2 实现的代码进行了解析。想必大家对 BEVPoolV2 算子的功能及实现已有了一定程度的理解,此篇帖子将展示 J6 工具链 BEVPoolV2 单算子 QAT 链路的实现范例,以进一步增进用户对 BEVPoolV2 算子使用的认知。

2. QAT代码实现

J6 工具链对齐 mmdet3d的实现,目前已经支持了 BEVPoolV2算子,QAT链路中的核心函数如下:

 

docker中代码路径: /usr/local/lib/python3.10/dist-packages/horizon_plugin_pytorch/nn/bev_pool_v2.py

详细说明 BEVPoolV2 算子在整个 QAT 链路使用流程

下面我们将以一个简单的单算子示例来详细说明 BEVPoolV2 算子在整个 QAT 链路使用流程。

首先,我们需要了解 QAT 链路的基本概念和工作原理,读者可以自行去学习 J6工具链用户手册的快速上手章节。接下来,我们将详细介绍 BEVPoolV2 算子在 QAT 链路中的使用流程,涉及模型搭建、QAT模型改造、模型导出与编译等。

本示例只为演示流程,未涉及到浮点训练和量化训练等流程。      

3. 输入准备

在进行 演示QAT链路之前,我们首先进行输入数据构建,这里要特别注意的是, BEVPoolV2 算子的性能和输入索引强相关,建议构建模型的时候使用真实输入。后面会结合代码进行说明。

 

4. 示例代码

本示例代码基本遵循以下图中的 QAT链路流程:

 

运行此示例代码后,目录下会有 3 个文件生成:

  • bevpoolv2_qat.bc: 单算子伪量化 bc

  • bevpoolv2_quantized.bc:单算子定点 bc

  • bevpoolv2.hbm:上板部署的 hbm

 

5. 模型可视化

获取以上模型后,可视化查看输入输出属性是否符合预期。

可视化方式可以使用 hb_model_info命令行工具或者 visualize接口来可视化 bc/hbm模型。

bevpoolv2_qat.bc可视化:
bevpoolv2_quantized.bc可视化:

 

 

 

 

 

 

 

 

 

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