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可视化:



