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等配置项,以确保编译成功。
➡️