命令行方式进行算子开发
您可以参考样例参考中的TBE DSL方式开发的Add算子进行第一个TBE算子的开发,快速了解TBE自定义算子的开发流程。
命令行场景下进行TBE自定义算子开发的流程如图5-2所示。
开发步骤详解如表5-3所示。
步骤 |
描述 |
参考 |
---|---|---|
算子分析 |
进行算子开发前,需要进行算子分析,明确算子的功能、输入、输出,选取算子开发方式,规划算子类型名称以及算子实现函数名称等。 |
|
工程创建 |
命令行模式下,有以下几种创建自定义算子工程的方法。
您可以基于如下规则进行算子交付件的开发:
须知:
若开发者需要自定义多个TBE算子,需要在同一算子工程中进行实现,对应实现文件按照如上规则进行存放。 |
命令行模式下工程目录结构介绍请参见算子工程目录介绍。 |
算子实现 |
算子代码实现:算子计算逻辑及调度的实现。 |
|
算子适配插件实现:基于第三方框架(Tensorflow)进行自定义算子开发的场景,开发人员完成自定义算子的实现代码后,需要进行插件的开发将基于Tensorflow的算子映射成适配昇腾AI处理器的算子。 |
||
算子原型定义:算子原型定义规定了在昇腾AI处理器上可运行算子的约束,主要体现算子的数学含义,包含定义算子输入、输出、属性和取值范围,基本参数的校验和shape的推导,原型定义的信息会被注册到GE的算子原型库中。离线模型转换时,GE会调用算子原型库的校验接口进行基本参数的校验,校验通过后,会根据原型库中的推导函数推导每个节点的输出shape与dtype,进行输出tensor的静态内存的分配。 |
||
算子信息定义:算子信息配置文件用于将算子的相关信息注册到算子信息库中,包括算子的输入输出dtype、format以及输入shape信息。离线模型转换时,FE会根据算子信息库中的算子信息做基本校验,判断是否需要为算子插入合适的转换节点,并根据算子信息库中信息找到对应的算子实现文件进行编译,生成算子二进制文件进行执行。 |
||
算子编译部署 |
命令行场景下,可直接使用样例工程的编译文件进行算子工程的一键式编译,生成自定义算子安装包。指定opp路径,执行安装包,实现自定义算子部署。 |
|
网络运行验证 |
构造只有单算子的模型文件,然后使用AscendCL加载此模型文件进行单算子的功能验证。 |