了解算子开发场景
CANN算子库包含了丰富的高性能算子,让神经网络的运行性能更高。CANN算子库中的算子都是预先实现和编译的,是华为工程师使用昇腾AI处理器架构专用编程语言开发的高度优化的内核函数,能够较好的适配底层硬件架构,具有较高的性能。
一般场景下,开发者无需自己开发算子。但若遇到以下场景,开发者需要考虑进行自定义算子的开发:
- 训练场景下,将第三方框架(例如TensorFlow、PyTorch等)的网络训练脚本迁移到昇腾AI处理器时遇到了不支持的算子。
- 推理场景下,将第三方框架模型(例如TensorFlow、Caffe、ONNX等)使用ATC工具转换为适配昇腾AI处理器的离线模型时遇到了不支持的算子。
- 网络调优时,发现某算子性能较低,影响网络性能,需要重新开发一个高性能算子替换性能较低的算子。
- 推理场景下,若应用程序中的某些逻辑涉及到数学运算(例如查找最大值,进行数据类型转换等),开发者可以将这些操作通过自定义算子的方式进行实现,然后在应用程序中对算子进行调用,算子在AI处理器运行,可以达到利用AI处理器进行性能提升的目的。
例如,针对一个分类应用,我们想从分类模型的推理结果中查找可能性最大的前5个标识,则可以实现一个查找最大值的算子(例如ArgMax),后续就可以直接通过AscendCL接口调用此算子实现对推理结果的后处理。