Ascend C 自定义PRelu算子

💡 原文中文,约8600字,阅读约需21分钟。
📝

内容提要

本文介绍了Ascend C自定义PRelu算子的开发过程,PRelu是Relu的改进版本,可以提升模型的拟合能力和减小过拟合风险。文章详细介绍了安装开发者套件、生成算子工程代码、修改配置项、编译算子工程、验证算子正确性的步骤。

🎯

关键要点

  • PReLU是Parametric Rectified Linear Unit的缩写,是Relu的改进版本,能够提升模型拟合能力并减小过拟合风险。
  • 在Ascend C进行自定义算子开发前,需要安装相关驱动、固件和开发者套件,推荐使用8.0版本。
  • 创建单算子工程描述文件PReluCustom.json,定义输入输出及属性。
  • 使用msopgen工具生成单算子工程代码,并根据本地情况修改CMakePresets.json中的配置项。
  • 算子计算的核心代码处理输入数据,分别处理x<0和x>=0的情况,并合并结果。
  • 编写和注册算子类PReluCustom,设置输入输出和属性,并定义形状推断和分块函数。
  • 编译算子工程并进行部署,确保编译成功。
  • 进行算子正确性验证,生成测试数据并验证输出精度。

延伸问答

什么是PReLU算子,它的优势是什么?

PReLU是Parametric Rectified Linear Unit的缩写,是Relu的改进版本,能够提升模型的拟合能力并减小过拟合风险。

在Ascend C中如何安装开发者套件?

需要卸载旧版本的cann-toolkit,然后安装8.0版本的cann-toolkit,并安装依赖的protobuf。

如何创建PReLU自定义算子的工程描述文件?

创建名为PReluCustom.json的文件,定义输入输出及属性,包括输入x和输出y的描述。

PReLU算子的核心计算代码是怎样的?

核心代码处理输入数据,分别处理x<0和x>=0的情况,并合并结果,最终输出y。

如何验证Ascend C自定义算子的正确性?

需要生成测试数据并验证输出精度,使用gen_data.py生成输入和输出数据,使用verity_result.py进行验证。

在编译PReLU算子工程时需要注意哪些配置项?

需要修改CMakePresets.json中的ASCEND_CANN_PACKAGE_PATH等配置项,以确保编译成功。

➡️

继续阅读