0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

算法优化福音:算子自动优化工具AutoKernel正式开源啦

电子设计 来源:电子设计 作者:电子设计 2020-12-08 22:28 次阅读
文章转载于: Tengine开发者社区
作者:小O妹

算子自动优化的发展趋势
随着AI技术的快速发展,深度学习在各个领域得到了广泛应用。深度学习模型能否成功在终端落地应用,满足产品需求,一个关键的指标就是神经网络模型的推理性能。于是,一大波算法工程师为了算法的部署转岗算子优化工程师。然而,优化代码并不是一件简单的事,它要求工程师既要精通计算机体系架构,又要熟悉算法的计算流程,于是,稍微有经验的深度学习推理优化工程师都成了各家公司争抢的“香饽饽”。人才少,需求多,算子优化自动化是未来的大趋势。
AutoKernel是什么?

最近,一个致力于降低优化门槛,提升优化开发效率的算子自动优化工具AutoKernel开源了。

AutoKernel是一个高性能算子自动优化工具,可以自动优化调度策略、生成底层优化代码,大幅减少各硬件芯片算子开发成本,提升算子优化效率,让工程师更快实现深度学习算法在各硬件芯片上的高性能部署。
AutoKernel的定位
为了方便大家进一步理解AutoKernel,我们需要先了解一下深度学习推理计算平台的层级。

深度学习的推理计算平台可以分为以下几个层级:
1、最上层对接各个深度学习训练框架训练出来的算法模型(Tensorflow, Caffe, Pytorch, Mxnet等);
2、 Hign-level IR是计算图(Computation Graph)层级。神经网络可以理解为计算图(graph),一个计算图由多个算子(opterator)节点组成,这些节点可以是卷积算子(Convolution), 池化算子(Pooling), 全连接算子(Fc)等。这个层级可以进行一些图层级的优化,算子融合,子图切分的操作等;
3、接下来就是算子(Operator/Kernel)层级。这个层级需要支持每个硬件后端的每个算子实现。目前的高性能算子计算库主要是由资深HPC工程师(高性能计算优化工程师)进行手工开发。AutoKernel就是算子层级的一个自动优化工具,自动生成适应不同后端的算子优化代码;
4、最后是各硬件后端:GPU, ARM CPU, X86 CPU, NPU等。
AutoKernel目前属于算子层级的自动优化工具。
AutoKernel如何实现部署优化?
部署优化之前,我们先了解一下AutoKernel的三大特性:
·低门槛: 无需底层优化汇编的知识门槛
·简单易用: 提供docker环境,无需安装环境,plugin一键集成到推理框架
·高效率: 无需手写优化汇编,一键生成优化代码,一键部署
作为算子层级的一个自动优化工具,AutoKernel支持将自动优化的算子代码集成进部署推理框架,主要流程分为两步:
1. 生成:编写算法描述和调度策略,生成相应后端的优化算子代码;
2. 部署:将生成的优化算子代码通过插件plugin的形式集成进推理框架Tengine。

AutoKernel的算子生成模块(Op Generator)使用了业界广泛使用的自动代码生成项目Halide。Halide是一个DSL(domain specific language) 编程语言,它将算法和硬件后端分离。本模块输入Halide语言的算法描述和优化调度策略,指定硬件后端,就可以自动生成优化代码。为了减少开发者配置环境的遇到问题,AutoKernel提供了docker镜像,docker里面已经安装好Halide, 并且配置好Halide的Python的API,方便开发者使用。
AutoKernel的部署模块Autokernel Plugin是一个相对独立的插件,只依赖于Tengine的算子头文件,不依赖于Tengine库。它实现了将AutoKernel Generator生成优化的算子代码,以Plugin的形式集成进Tengine推理框架中,实现自动优化算子的一键部署。整个过程不需要重新编译Tengine库,只需要独立编译Plugin的动态库,在运行时加载Autokernel Plugin的库,就能调用自动生成的算子实现。下面的图展示了使用AutoKernel前后的变化,只需要在运行时添加一行代码,加载autokernel plugin的动态库:

AutoKernel还有一个模块叫AutoSearch,该模块通过强化学习/机器学习/遗传算法搜索出相应后端的最优算子的调度策略参数。该模块目前仍在开发中。
AutoKernel使用教程
下图是展示了在Intel(R) Core(TM) i9-9900K CPU @ 3.60GHz的电脑上的优化效果,无需手工撸代码,无需编写繁杂冗长的底层汇编代码,只需十几行简洁的调度代码, 就能性能优化200+倍~

推荐阅读

更多Tengine相关内容请关注Tengine-边缘AI推理框架专栏。

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1791

    文章

    47208

    浏览量

    238298
  • AIoT
    +关注

    关注

    8

    文章

    1406

    浏览量

    30657
收藏 人收藏

    评论

    相关推荐

    光波导系统中光栅几何结构的优化

    。 VirtualLab Fusion为这项任务提供了一系列强大的工具,如:可以计算基本优化函数(如均匀性和效率)的探测器,以及沿着布局的特定区域实现光栅参数平滑变化的可能性。后一种方法可大大减少优化中自由参数
    发表于 12-20 10:27

    光波导系统中光栅几何结构的优化

    Fusion为这项任务提供了一系列强大的工具,如:可以计算基本优化函数(如均匀性和效率)的探测器,以及沿着布局的特定区域实现光栅参数平滑变化的可能性。后一种方法可大大减少优化中自由参数的数量,同时保证
    发表于 12-16 10:39

    云鼎科技与华为云签约化工工艺优化合作

    。双方将携手合作,共同打造具有国际水准、安全可靠的化工工艺优化解决方案。 根据协议,云鼎科技与华为云将充分发挥各自在算法创新、算力支撑、大模型研发等方面的技术优势。双方将围绕甲醇精馏装置工艺智能
    的头像 发表于 12-09 13:55 343次阅读

    使用Arthas火焰图工具的Java应用性能分析和优化经验

    分享作者在使用Arthas火焰图工具进行Java应用性能分析和优化的经验。
    的头像 发表于 10-28 09:27 255次阅读
    使用Arthas火焰图<b class='flag-5'>工具</b>的Java应用性能分析和<b class='flag-5'>优化</b>经验

    英飞凌与采埃孚合作优化自动驾驶软件

    英飞凌科技股份公司与采埃孚集团携手参与了EEmotion项目,共同开发并实施了创新的AI算法,以优化自动驾驶软件和控制单元。
    的头像 发表于 10-12 16:17 368次阅读

    AFE7070在VHF频段优化工

    电子发烧友网站提供《AFE7070在VHF频段优化工作.pdf》资料免费下载
    发表于 09-26 10:39 0次下载
    AFE7070在VHF频段<b class='flag-5'>优化工</b>作

    基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图

    优化。例如,可以调整存储模块的访问速度、优化 Sobel 算子的计算算法、提高显示模块的刷新率等,以提高系统的性能和稳定性。 总之,基于 DSP5509 的数字图像处理中 Sobel
    发表于 09-25 15:25

    优化 FPGA HLS 设计

    优化 FPGA HLS 设计 用工具用 C 生成 RTL 的代码基本不可读。以下是如何在不更改任何 RTL 的情况下提高设计性能。 介绍 高级设计能够以简洁的方式捕获设计,从而
    发表于 08-16 19:56

    倾斜光栅的鲁棒性优化

    直接纳入优化过程,例如参数变化分析仪。该工具结合了同一系统的多次迭代,在优化过程中实现了评价函数的表示和自动计算,如平均效率。在这个用例中,我们通过稍微改变填充因子来
    发表于 08-12 18:38

    神经网络优化算法有哪些

    神经网络优化算法是深度学习领域中的核心技术之一,旨在通过调整网络中的参数(如权重和偏差)来最小化损失函数,从而提高模型的性能和效率。本文将详细探讨神经网络优化算法的基本原理、主要方法、
    的头像 发表于 07-03 16:01 538次阅读

    宝塔面板Docker一键安装:部署GPTAcademic,开发私有GPT学术优化工具

    人工智能的浪潮中,GPT模型因其强大的自然语言处理能力备受瞩目。然而,为了更好地应用于学术领域,许多人希望能部署自己私有的GPT学术优化工具。本文将详细介绍如何通过宝塔面板和Docker一键安装
    的头像 发表于 07-02 11:58 2574次阅读
    宝塔面板Docker一键安装:部署GPTAcademic,开发私有GPT学术<b class='flag-5'>优化工具</b>

    OpenHarmony之开机优化

    一丶环境信息 源码版本:OpenHarmony-4.1-Release 板子型号:dayu200(RK3568) 二丶Bootchart工具 在开机优化时,我们需要借助Bootchart工具,当前
    发表于 07-01 16:39

    ClickHouse内幕(3)基于索引的查询优化

    ClickHouse基于索引的查询算子优化方式。 在整个查询计划中Sort、Distinct、聚合这3个算子相比其他算子比如:过滤、projection等有如下几个特点:1.
    的头像 发表于 06-11 10:46 1015次阅读
    ClickHouse内幕(3)基于索引的查询<b class='flag-5'>优化</b>

    深度学习编译工具链中的核心——图优化

    等,需要调整优化网络中使用的算子算子组合,这就是深度学习编译工具链中的核心——图优化。图优化
    的头像 发表于 05-16 14:24 929次阅读
    深度学习编译<b class='flag-5'>工具</b>链中的核心——图<b class='flag-5'>优化</b>

    如何对MD5加密算法优化

    有人针对程序安全启动过程,进行MD5算法优化嘛。目前采用标准算法,时间稍长,如果有人做过优化的话,可以分享一下,谢谢。
    发表于 02-18 08:20