【CANN训练营】算子开发概述

课程目标

1.知道什么场景下需要进行自定义算子开发
2.了解CANN提供的几种算子类型及如何选择开发方式
3.了解CANN算子的编译运行流程以及算子交付件的作用
4.了解算子的基本概念

预备知识

1.具有Python以及C++语言程序开发能力
2.了解CANN的基本架构

算子开发背景

算子定义:深度学习算法由一个个计算单元组成,我们称这些计算单元为算子(Operator,简称OP)。在网络模型中,算子对应层或节点的计算逻辑。图中每个结点均为一个算子:
在这里插入图片描述

加速库/计算库:针对某种计算逻辑开发一个通用实现

昇腾算子库

NN(NeuralNetwork)算子库:覆盖了包括TensorFlow、Pytorch、Mindspore、ONNX框架在内的常用深度学习算法的计算类型,在算子库中占有最大比重。
BLAS(Basic LinearAlgebra Subprograms)算子库基础线性代数程序集,是进行向量和矩阵等基本线性代数作的数库。
DVPP(DigitalVideoPre-Processor)算子库:提供高性能的视频编解码、图片编解码、图像裁剪缩放等预处理力。
AIPP(AIPre-Processing)算子库:主要实现改变图像尺寸、色域转换(转换图格式)、减均值/乘系数(图像归一化),并与模型理过程融合,以满足推理输入要求。HCCL (Huawvei Collective Communication Library)算子库:提供单机多卡以及多机多卡间的Broadcast,allreduce,reducescatter,allgather等集合通信功能在分布式训练中提供高效的数据传输能力。

什么场景下需要进行自定义算子开发?

一般场景下,开发者无需自己开发算子,但若遇到以下场景,开发者需要考虑进行自定义算子的开发。训练场景下,将第三方框架(例如TensorFlow、PyTorch等)的网络训练脚本迁移到异腾平台时遇到了不支持的算子。
推理场景场景下,将第三方框架模型(例如TensorFlow、Caffe、ONNX等)使用ATC工具转换为适配异腾平台的离线模型时遇到了不支持的算子。
网络调优时,发现某算子性能较低,想重新开发一个高性能算子替换性能较低的算子。
推理场景下,若应用程序中的某些逻辑涉及到数学运算(例如查找最大值,进行数据类型转换等)开发者可以将这些操作通过自定义算子的方式进行实现,然后在应用程序中对算子进行调用,从而利用昇腾AI处理器进行加速.
例如,针对一个分类应用,我们想从分类模型的推理结果中查找可能性最大的+前5个标识,则可以实现一个查找最大值的算子(例如ArgMax),后续就可以直接通过AscendcL接口调用此算子实现对推理结果的后处理。

CANN算子类型

在这里插入图片描述
在这里插入图片描述

算子编译运行流程

在这里插入图片描述

1第三方架网络模型首需要过解析,转为中间的IR(lntermediateRepresentation)Graph。这一步需要算子适配插件实现第三方框架算子到CANN算子的映射
2 然后调用每一个算子的IR(算子原型),进行基本参数校验、静态内存的推导等。算子的原型定义了每个算子在异腾AI处理器上的运行约束,包括输入输出属性的各种特征。
3 图编译器会进行一些图的拆分优化动作,并会根据算子信息库进行算子的匹配选择,优先基于TBE算子信息库判断算子支持度,若TBE不支持,再基于AICPU算子信息库判断是否支持
4 匹配到算子后,图编译器会对我们开发的算子实现代码进行编译,生成算子的Task信息
5. 图编译完成后,最终生成可执行的om模型

算子运行流程

在这里插入图片描述

算子开发交付件

在这里插入图片描述

算子基本概念

算子是一个函数空间到函数空间上的映射:X→X;广义的讲,对任何函数进行某一项操作都可以认为是一个算子。于我们而言,我们所开发的算子是网络模型中涉及到的计算函数。在Caffe中,算子对应层中的计算逻辑,例如:卷积层(ConvolutionLayer)中的卷积算法,是一个算子;全连接层(Fully-connected Layer,Fclayer)中的权值求和过程,是一个算子。
在这里插入图片描述

算子类型(Type)

算子的type,代表算子的类型,例如卷积算子的类型为Convolution,在一个网络中同一类型的算子可能存在多个。

算子名称(Name)

算子的名称,用于标识网络中的某个算子,同一网络中算子的名称需要保持唯一。如下图所示conv1,pool1conv2都是此网络中的算子名称,其中conv1与conv2算子的类型为Convolution,表示分别做一次卷积运算。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

华为账号hw_Zixin 小鱼儿梦想+

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值