更新时间:2021-03-18 GMT+08:00
分享

概述

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自定义算子开发方式如表1所示,本文仅介绍“命令行开发方式”。

表1 Ascend 310支持的TE自定义算子开发方式

方式

工具依赖

描述

编译方式

对应文档

命令行开发方式

不依赖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方式)》

图1 Tensor Engine Project创建
分享:

    相关文档

    相关产品