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

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

3天内不再提示

AI编译器如何在传统开源框架中的工作中受益

星星科技指导员 来源:嵌入式计算设计 作者:Brandon Lewis 2022-06-02 11:51 次阅读

TensorFlow/TensorFlow Lite 相比,Glow 编译的输入表现出 3 倍帧/秒的性能提升,而该图显示了 AOT 编译与 JIT 编译器相比的效率。

创造智能需要大量数据。所有这些数据都需要能够支持它的技术。

人工智能AI) 而言,这些技术包括大量直接访问的高速内存;能够同时处理同一数据集的不同部分的并行计算架构;并且有点令人惊讶的是,与许多其他应用程序相比,计算精度更低。数据中心可以提供几乎无穷无尽的这种技术组合。

因此,人工智能开发工具是为互联网查询、语音搜索和在线面部识别等应用程序背后的数据中心基础设施而设计的。但随着人工智能技术的进步,在各种用例中利用它的愿望也在增加——包括那些在小型、资源受限、基于 MCU 的边缘平台上运行的用例。因此,例如,编译器等工具还必须能够针对占用空间更小的设备优化 AI 数据和算法,而不是仅仅关注运行基于云的推荐系统的高端硬件加速器。

Facebook 的开源机器学习编译器 Glow 就是这种工具演变的一个例子。它使用两阶段中间表示 (IR) “降低”神经网络图,该中间表示生成针对各种嵌入式和服务器级硬件目标的特性和内存进行专门调整的机器代码(图 1)。它还执行提前 (AOT) 编译,最大限度地减少运行时开销,以节省磁盘空间、内存、启动时间等。

pYYBAGKYNaKADG4lAAEW_YkElmY357.png

图 1. Glow 高级中间表示中的降低计算图表示 A 的回归,该回归由 Glow 自动区分。

“我们拥有这个非常高性能的运行时,但很多项目并不关心,因为它们不在数据中心内,”Facebook 的研究科学家 Jordan Fix 解释道。“他们需要做 AOT 编译,尽可能地缩小,使用量化和并行化,并且没有太多的依赖关系。

“AOT 编译在数据中心并不那么重要,但我们可以将 LLVM 后端连接到 Glow 并针对 x86、ArmRISC-V 和专用架构,”Fix 继续说道。“Glow 的工作方式是你有几个级别的 IR,它们使用高级优化和量化来限制内存。那时,编译器后端可以接受基于指令的 IR,并根据需要对其进行优化和编译。”

Glow 的另一大优势,特别是在多样化的嵌入式技术领域,是能够在简单的 C 包装器中编译模型。这意味着嵌入式 AI 工程师可以针对他们选择的编译器后端和架构优化 Glow。它本机支持来自流行 AI 框架和库(如 PyTorch 和 Arm 的 CMSIS-NN)的输入,还可以通过 ONNX 神经网络交换接受来自 TensorFlow 等环境的图形。

AI 编译器的竞争

当然,Glow 并不是唯一可用的神经网络编译器。Google 的多级中间表示 (MLIR) 是一种编译器基础架构,专注于张量处理器,已被 LLVM 吸收。Microsoft 的嵌入式学习库 (ELL) 是另一个用于资源受限的 AI 设备的交叉编译工具链。

然而,Glow 比任何一个都更成熟,已于 2018 年开源。它也比许多现有的 AI 编译器选项更高效。

在发布的 i.MX 跨界 MCU 的性能测试中,NXP 系统工程师使用 TensorFlow Lite 和 Glow 编译了 32 x 32 CIFAR-10 数据集,并将它们输入 RT1060、RT1170 和 RT685 设备。Glow 编译的输入表现出至少 3 倍帧/秒的性能提升,而图 2 让您了解 AOT 编译与 TensorFlow/TensorFlow Lite 框架中使用的即时 (JIT) 编译相比的效率如何。

poYBAGKYNayAWAp9AAB212uxoCo615.png

pYYBAGKYNbKAU1lmAAClOgEERas827.png

图 2a 和 2b。与 TensorFlow Lite 等即时 (JIT) 编译器相比,Glow 的提前 (AOT) 编译器可节省大量 RAM 和闪存,同时还具有显着的每秒帧数性能优势。

请记住,i.MX1060 具有高达 1 MB 的片上 RAM。NXP 的 eIQ 软件开发环境支持 Glow。

开源人工智能:看不到终点线

人工智能技术市场瞬息万变,这使得开发组织很难致力于任何技术。这可能是 Glow 最引人注目的方面之一,它甚至与技术没有直接关系。

作为一个拥有 130 多个活跃贡献者的开源项目,Facebook、英特尔等大型组织继续对 Glow 主线做出承诺,因为它们现在依赖于其通用基础设施来访问指令、操作符、内核等。

然后,很明显,开源具有内在价值。

“我们经常看到我们关心的外部用户的贡献,比如更通用的并行化框架,我们有很多他们正在运行的机器学习模型,”Fix 说。“所以也许它可以让他们在我们无需做任何事情的情况下获得对运营商的支持。“我认为您正在研究这个特定的计算机视觉模型”或者,“我认为这是您所说的操作员。” 他们只是审查它并移植它并登陆它。

“我们都可以从彼此在传统开源框架中的工作中受益,”他补充道。

审核编辑:郭婷

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

    关注

    60

    文章

    1267

    浏览量

    183218
  • 人工智能
    +关注

    关注

    1791

    文章

    46838

    浏览量

    237502
  • 编译器
    +关注

    关注

    1

    文章

    1618

    浏览量

    49045
收藏 人收藏

    评论

    相关推荐

    C7000优化C/C++编译器

    电子发烧友网站提供《C7000优化C/C++编译器.pdf》资料免费下载
    发表于 10-30 09:45 0次下载
    C7000优化C/C++<b class='flag-5'>编译器</b>

    Keil编译器优化方法

    我们都知道,代码是可以通过编译器优化的,有的时候,为了提高运行速度或者减少代码尺寸,会开启优化选项。
    的头像 发表于 10-23 16:35 315次阅读
    Keil<b class='flag-5'>编译器</b>优化方法

    SemiDrive X9 AI 开发环境搭建

    SemiDrivex9AI开发环境搭建分开发机端,开发板端。主要的工具是SDNN,它是一个基于开源编译器框架TVM的端到端的AI
    的头像 发表于 08-03 08:27 320次阅读
    SemiDrive X9 <b class='flag-5'>AI</b> 开发环境搭建

    AI编译器技术剖析

    随着人工智能技术的飞速发展,AI编译器作为一种新兴的编译技术逐渐进入人们的视野。AI编译器不仅具备传统编
    的头像 发表于 07-17 18:28 1464次阅读

    人工智能编译器传统编译器的区别

    人工智能编译器AI编译器)与传统编译器在多个方面存在显著的差异。这些差异主要体现在设计目标、功能特性、优化策略、适用范围以及技术复杂性等方面。以下是对两者区别的详细探讨,旨在全面解析
    的头像 发表于 07-17 18:19 1681次阅读

    esp8266如何修改枚举在编译器的字节宽度?

    在移植一个项目到esp8266上,这个项目原来平台的编译器,enum枚举占的字节数是1,但是到了esp的平台,发现编译器编译枚举为4个字节,如何修改此
    发表于 07-12 08:16

    Meta发布基于Code Llama的LLM编译器

    近日,科技巨头Meta在其X平台上正式宣布推出了一款革命性的LLM编译器,这一模型家族基于Meta Code Llama构建,并融合了先进的代码优化和编译器功能。LLM编译器的推出,标志着Meta在人工智能领域的又一重大突破,将
    的头像 发表于 06-29 17:54 1455次阅读

    SEGGER编译器优化和安全技术介绍 支持最新C和C++语言

    。 SEGGER编译器无缝集成到Embedded Studio。它与SEGGER Linker、Assembler和Runtime Library一起,
    的头像 发表于 06-04 15:31 1398次阅读
    SEGGER<b class='flag-5'>编译器</b>优化和安全技术介绍 支持最新C和C++语言

    C语言:嵌入式开发的关键编译器角色

    嵌入式程序开发跟硬件密切相关,需要使用C语言来读写底层寄存、存取数据、控制硬件等,C语言和硬件之间由编译器来联系,一些C标准不支持的硬件特性操作,由编译器提供。
    发表于 04-26 14:53 546次阅读
    C语言:嵌入式开发<b class='flag-5'>中</b>的关键<b class='flag-5'>编译器</b>角色

    怎么在NanoEdge AI Studio设定交叉编译器呢?

    我使用的是NanoEdge AI Studio v4.3.1,跟着官方交教程生成了库libneai.a,我通过metadata.json文件得知生成这个库的交叉编译器版本是\"
    发表于 03-07 06:28

    QT开发学习笔记1(安装交叉编译器

    QT安装交叉编译器
    的头像 发表于 02-18 10:02 855次阅读
    QT开发学习笔记1(安装交叉<b class='flag-5'>编译器</b>)

    Triton编译器的原理和性能

    Triton是一种用于编写高效自定义深度学习原语的语言和编译器。Triton的目的是提供一个开源环境,以比CUDA更高的生产力编写快速代码,但也比其他现有DSL具有更大的灵活性。Triton已被采用
    的头像 发表于 12-16 11:22 2724次阅读
    Triton<b class='flag-5'>编译器</b>的原理和性能

    嵌入式开发的交叉编译详解

    在嵌入式开发,经常会遇到目标平台资源贫乏,无法运行需要的编译器。亦或是目标平台上不允许或不能够安装需要的编译器。这时候就需要使用交叉编译了。
    的头像 发表于 12-01 13:24 1148次阅读
    嵌入式开发<b class='flag-5'>中</b>的交叉<b class='flag-5'>编译</b>详解

    TVM编译器的整体架构和基本方法

    生成的开源编译器框架,虽然在我们自己的加速IP上无法直接拿过来用,但是其中的很多方法和思想还是很值得借鉴的。TVM最大的特点是基于图和算符结构来优化指令生成,最大化硬件执行效率。其中使用了很多方法来改善
    的头像 发表于 11-30 09:36 2282次阅读
    TVM<b class='flag-5'>编译器</b>的整体架构和基本方法

    编译器的优化选项

    一个程序首先要保证正确性,在保证正确性的基础上,性能也是一个重要的考量。要编写高性能的程序,第一,必须选择合适的算法和数据结构;第二,应该编写编译器能够有效优化以转换成高效可执行代码的源代码,要做到
    的头像 发表于 11-24 15:37 854次阅读
    <b class='flag-5'>编译器</b>的优化选项