概述
Ascend 310中提供了深度学习框架Framework,可以将Caffe、Tensorflow开源框架模型转换成Ascend 310支持的模型,在进行模型转换时,如果模型中的算子在系统内置的算子库中未实现,则转换过程会报错。这时,未实现的算子就需要用户进行自定义,自定义算子可加入到自定义算子库中,使得模型转换过程可以正常进行。用户也可以优化当前模型中已有算子,并将优化后的算子加入到自定义算子库中,并加载优化后的算子进行模型转换。
Ascend 310提供了TE(Tensor Engine)算子开发框架,可以开发自定义算子。TE是基于TVM(Tensor Virtual Machine)的自定义算子开发框架,提供了基于Python语法的DSL语言供开发者开发编写自定义算子。TE自定义算子可运行于AI CPU和AI Core。
本文以Caffe网络模型Lenet-5内置Reduction算子的扩展自定义caffe_reduction_layer算子为例进行讲解,介绍如何通过后台命令行的方式进行TE自定义算子的开发、算子的验证、算子的注册及如何加载用户自定义的算子进行模型转化。
Ascend 310支持的TE自定义算子开发方式如表12-1所示,本文仅介绍“命令行开发方式”。
方式 |
工具依赖 |
描述 |
编译方式 |
对应文档 |
---|---|---|---|---|
命令行开发方式 |
不依赖Mind Studio工具,仅安装DDK的情况就可进行TE自定义算子开发。 说明:
DDK(Device Development Kit)为用户提供基于NPU的数字开发者套件,内含工程代码样例,并集成了相关依赖库和头文件,用户可以通过makefile脚本编译相应的工程文件。 |
无UI界面,无自动生成的框架代码,所有算子实现代码及算子插件代码需要用户自行开发,或者基于DDK中代码样例进行编辑修改。 |
基于DDK代码样例编写Makefile编译脚本。 |
《TE自定义算子开发指导》 |
Mind Studio 开发方式 |
依赖Mind Studio工具,操作入口如下图所示。 |
框架代码基于工程创建时导入的模型文件及选择的算子自动生成,用户只需要重点关注算子的实现代码。 |
Makefile编译脚本通过Mind Studio界面配置生成,无需编写。 |
《Ascend 310 TE自定义算子开发指导 (Mind Studio方式)》 |