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推理框架专栏。

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

    关注

    1813

    文章

    49741

    浏览量

    261565
  • AIoT
    +关注

    关注

    8

    文章

    1596

    浏览量

    33811
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    蜂鸟E203内核优化方法

    。 修改内核参数:对蜂鸟E203的内核参数进行相应修改,可以优化内核运行效率,提高系统性能,比如调整缓存大小、内存分配策略等。 资源管理:进行有针对的资源管理,例如调度算法的修改,调整好CPU占用率等,以
    发表于 10-21 07:55

    怎样确保自动化工具在电能质量在线监测装置的安全防护检查中的准确性?

      确保自动化工具在电能质量在线监测装置安全防护检查中的准确性,需围绕 “ 工具本质可靠性、场景适配性、结果可验证性、全生命周期管控 ” 四大核心,从工具选型、校准溯源、算法
    的头像 发表于 09-23 17:42 431次阅读

    UWB自动跟随技术原理、算法融合优化和踩坑实录

    UWB为什么是最靠谱的自动跟随技术?原理是什么?需要做什么算法融合、优化?我们在开发过程中踩过的坑。
    的头像 发表于 08-14 17:45 1132次阅读
    UWB<b class='flag-5'>自动</b>跟随技术原理、<b class='flag-5'>算法</b>融合<b class='flag-5'>优化</b>和踩坑实录

    信号发生器如何与波束赋形算法配合优化

    、SINR和误码率(BER),优化算法参数(如波束宽度、扫描步长)。 2. 软件级配合:信号发生器与算法仿真工具链协同 工具链组成: MA
    发表于 08-08 14:41

    VirtualLab:光栅的优化与分析

    光栅是光学工程师使用的最基本的工具。为了设计和分析这类组件,快速物理光学建模和设计软件VirtualLab Fusion为用户提供了许多有用的工具。其中包括参数优化,以轻松优化系统,以
    发表于 05-23 08:49

    OptiSystem应用:增益平坦滤波器优化

    择过滤器组件,可视化工具选项卡应选择双端口分析器。 设置优化 优化参数设置 优化元件选择增益平坦滤波器 可视化工具选项卡应选择双端口
    发表于 04-10 08:49

    英诺达推出RTL功耗优化工具

    英诺达(成都)电子科技有限公司隆重推出芯片设计早期RTL级功耗优化工具—EnFortius RTL Power Explorer(ERPE),该工具可以高效、全面地在RTL设计阶段进行功耗优化机会
    的头像 发表于 03-20 17:06 941次阅读

    VirtualLab Fusion应用:使用optiSLang进行光栅优化

    Fusion中提供了来自Dynardo的optiSLang软件接口,因此使优化过程可以应用不同的高级优化算法。 2.VirtualLab Fusion 和optiSLang的界面 两种软件平台的结合
    发表于 03-18 08:51

    VirtualLab Fusion应用:非近轴衍射分束器的设计与优化

    难度。VirtualLab Fusion为光学工程师提供了几个工具来帮助他们完成这项任务。 为了说明一般工作流程,我们展示了两个案例:在第一个案例中,我们采用迭代傅里叶变换算法(IFTA)和基于薄元近似(TEA
    发表于 03-10 08:56

    构建开源OpenVINO™工具套件后,模型优化器位于何处呢?

    构建开源OpenVINO™工具套件后,模型优化器位于何处?
    发表于 03-06 08:18

    VirtualLab Fusion应用:参数优化文档介绍

    摘要 VirtualLab Fusion的参数优化文档使用户能够为其光学装置应用非线性优化算法。该文档指导您完成优化配置并最终输出结果。这个用例解释了参数
    发表于 02-28 08:44

    VirtualLab Fusion应用:倾斜光栅的鲁棒性优化

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

    FRED应用:LED发光颜色优化

    emitting sources ),波长的光谱范围从厂商数据表中利用数字化工具获取数据。 此例子的布局包含3个任意的平面光源照射到一个接受屏。分析面附加于1)屏幕,计算色坐标值。2)光源,计算LED总功率
    发表于 01-17 09:39

    FRED应用:LED发光颜色优化

    emitting sources ),波长的光谱范围从厂商数据表中利用数字化工具获取数据。 此例子的布局包含3个任意的平面光源照射到一个接受屏。分析面附加于1)屏幕,计算色坐标值。2)光源,计算LED总功率
    发表于 01-07 08:51

    华大九天推出PowerMOS版图自动化工具

    (Andes-Power Generator)和基于仿真加数学算法的版图优化工具(Andes-Power EM/RDSon Iteration-Correction)。 Andes-Power工具通过采用先进的智能
    的头像 发表于 12-30 11:07 1462次阅读