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

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

3天内不再提示

用于加速嵌入式视觉和推理的开放标准

星星科技指导员 来源:嵌入式计算设计 作者:Neil Trevett 2022-06-06 16:29 次阅读

机器学习领域的不断发展为部署利用神经网络推理的设备和应用程序创造了新的机会,这些设备和应用程序具有前所未有的基于视觉的功能和准确性水平。但是,快速发展的领域已经让位于处理器、加速器和库的混乱局面。本文介绍了开放互操作性标准及其在降低成本和降低在实际产品中使用推理和视觉加速的障碍方面的作用。

每个行业都需要开放标准,通过增加生态系统元素之间的互操作性来降低成本和缩短上市时间。开放标准和专有技术具有复杂且相互依存的关系。专有 API接口通常是达尔文式的试验场,并且可以在智能市场领导者手中保持主导地位,这是理所当然的。强大的开放标准源于行业对成熟技术的更广泛需求,可以提供健康、激励的竞争。从长远来看,不受任何一家公司控制或依赖于任何一家公司的开放标准通常可以成为行业向前发展的连续性线索,因为技术、平台和市场地位不断变化和发展。

Khronos Group 是一个非营利性标准联盟,任何公司都可以加入,拥有超过 150 名成员。所有标准组织的存在都是为了为竞争者提供一个安全的场所,让他们为了所有人的利益进行合作。Khronos Group 的专业领域是创建开放、免版税的 API 标准,使软件应用程序库和引擎能够利用硅加速的力量来满足要求苛刻的用例,例如 3D 图形、并行计算、视觉处理和推理。

创建嵌入式机器学习应用程序

许多互操作部分需要协同工作来训练神经网络并将其成功部署在嵌入式加速推理平台上——如图 1 所示。有效的神经网络训练通常需要大型数据集,使用浮点精度并在强大的 GPU 上运行- 加速台式机或云端。训练完成后,经过训练的神经网络将被引入为快速张量操作优化的推理运行时引擎,或将神经网络描述转换为可执行代码的机器学习编译器。无论使用引擎还是编译器,最后一步都是在从 GPU 到专用张量处理器的各种加速器架构之一上加速推理代码。

pYYBAGKduxuANEM3AAL-yWoM4GE752.png

图 1. 训练神经网络并将其部署在加速推理平台上的步骤

那么,行业开放标准如何帮助简化这一过程呢?图 2. 说明了在视觉和推理加速领域中使用的 Khronos 标准。总的来说,随着处理器频率扩展让位于并行编程作为以可接受的成本和功率水平提供所需性能的最有效方式,人们对所有这些标准的兴趣越来越大。

pYYBAGKduyOAOZejAAKLK-4-C7Y915.png

图 2. 用于加速视觉和推理应用程序和引擎的 Khronos 标准

从广义上讲,这些标准可以分为两组:高级和低级。高级 API 侧重于易于编程,具有跨多个硬件架构的有效性能可移植性。相比之下,低级 API 提供对硬件资源的直接、显式访问,以实现最大的灵活性和控制。每个项目都必须了解最适合其开发需求的 API 级别。此外,高级 API 通常会在其实现中使用低级 API。

让我们更详细地了解其中的一些 Khronos 标准。

SYCL - C++ 单源异构编程

SYCL(发音为“镰刀”)使用 C++ 模板库来调度标准 ISO C++ 应用程序的选定部分以卸载处理器。SYCL 使复杂的 C++ 机器学习框架和库能够直接编译并加速到在许多情况下优于手动调整代码的性能水平。如图 3 所示,默认情况下,SYCL 是通过较低级别的 OpenCL 标准 API 实现的:将用于加速的代码提供给 OpenCL,而剩余的主机代码则通过系统的默认 CPU 编译器提供。

pYYBAGKduyuATYb1AALO79Gi2Zw311.png

图 3. SYCL 将标准 C++ 应用程序拆分为 CPU 和 OpenCL 加速代码

越来越多的 SYCL 实现,其中一些使用专有后端,例如 NVIDIA 的 CUDA 用于加速代码。值得注意的是,英特尔的新 oneAPI Initiative 包含一个名为 DPC++ 的并行 C++ 编译器,它是基于 OpenCL 的符合 SYCL 实现。

NNEF——神经网络交换格式

当今使用的神经网络训练框架有数十种,包括 Torch、Caffe、TensorFlow、Theano、Chainer、Caffe2、PyTorch 和 MXNet 等等,并且都使用专有格式来描述他们训练的网络。还有数十种甚至数百种嵌入式推理处理器进入市场。迫使许多硬件供应商理解和导入如此多的格式是一个典型的碎片问题,可以通过如图 4 所示的开放标准来解决。

poYBAGKduzKACNpEAAUMj32pS5g735.png

图 4. NNEF 神经网络交换格式通过推理加速器简化训练网络的摄取

NNEF 文件格式旨在在网络训练和推理芯片领域之间架起一座有效的桥梁——Khronos 久经考验的多公司治理模型为硬件社区提供了关于格式如何以满足需求的方式发展的强烈声音。开发处理器工具链和框架的公司,通常在安全关键市场。

NNEF 并不是业界唯一的神经网络交换格式,ONNX 是由 Facebook 和微软共同创立的开源项目,是一种被广泛采用的格式,主要专注于训练框架之间的网络交换。NNEF 和 ONNX 是互补的,因为 ONNX 跟踪培训创新和机器学习研究社区的快速变化,而 NNEF 的目标是嵌入式推理硬件供应商,这些供应商需要一种具有更深思熟虑的路线图演变的格式。Khronos 围绕 NNEF 发起了一个不断发展的开源工具生态系统,包括来自关键框架的导入器和导出器以及一个模型动物园,以使硬件开发人员能够测试他们的推理解决方案。

OpenVX – 便携式加速视觉处理

OpenVX(VX 代表“视觉加速”)通过提供图形级抽象来简化视觉和推理软件的开发,使程序员能够通过连接一组函数或“节点”来构建他们所需的功能。这种高级抽象使芯片供应商能够非常有效地优化他们的 OpenVX 驱动程序,以便在几乎任何处理器架构上高效执行。随着时间的推移,OpenVX 在原始视觉节点旁边添加了推理功能——毕竟神经网络只是另一个图!通过将 NNEF 训练的网络直接导入 OpenVX 图中,OpenVX 和 NNEF 之间的协同作用越来越大,如图 5 所示。

pYYBAGKduzqADfXJAAMNQ-SQs3w464.png

图 5. OpenVX 图可以描述从 NNEF 文件导入的视觉节点和推理操作的任意组合

OpenVX 1.3 于 2019 年 10 月发布,使针对垂直细分市场(例如推理)的精心挑选的规范子集能够被实施和测试,使其符合官方标准。OpenVX 还与 OpenCL 深度集成,使程序员能够添加自己的自定义加速节点以在 OpenVX 图形中使用 - 提供简单的可编程性和可定制性的独特组合。

OpenCL – 异构并行编程

OpenCL 是一种低级标准,用于对 PC、服务器、移动设备和嵌入式设备中的各种异构处理器进行跨平台并行编程。OpenCL 提供基于 C 和 C++ 的语言来构建内核程序,这些程序可以在具有 OpenCL 编译器的系统中的任何处理器上并行编译和执行,从而为程序员明确控制在哪些处理器上执行哪些内核。OpenCL 运行时协调加速器设备的发现,为选定的设备编译内核,以复杂的同步级别执行内核并收集结果,如图 6 所示。

poYBAGKdu0KAAVI9AAFoDKDuEmc362.png

图 6. OpenCL 使 C 或 C++ 内核程序能够跨异构处理器的任意组合并行编译和执行

OpenCL 在整个行业中广泛使用,为计算、视觉和机器学习库、引擎和编译器提供最低的“接近金属”执行层。

OpenCL 最初是为在高端 PC 和超级计算机硬件上执行而设计的,但在与 OpenVX 类似的演变过程中,需要 OpenCL 的处理器越来越小,精度也越来越低,因为它们以边缘视觉和推理为目标。OpenCL 工作组正在努力定义为嵌入式处理器量身定制的功能,并使供应商能够交付针对关键功耗和成本敏感用例的选定功能,并且完全符合要求。

关于作者:

Neil Trevett 是 NVIDIA 开发者生态系统副总裁,他帮助应用程序利用先进的 GPU 和芯片加速。Neil is also the elected President of the Khronos Group, where he initiated the OpenGL ES standard used by billions worldwide every day, helped catalyze the WebGL and glTF projects to bring interactive 3D graphics to the Web, fostered the creation of the OpenVX standard for vision和推理加速,并主持定义异构并行计算的开放标准的 OpenCL 工作组。在 NVIDIA Neil 站在将交互式 3D 引入 PC 的硅革命的最前沿,他建立了 3Dlabs 的嵌入式图形部门,为各种非 PC 平台带来先进的视觉处理。

审核编辑:郭婷

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

    关注

    68

    文章

    19274

    浏览量

    229734
  • gpu
    gpu
    +关注

    关注

    28

    文章

    4735

    浏览量

    128914
  • 机器学习
    +关注

    关注

    66

    文章

    8412

    浏览量

    132600
收藏 人收藏

    评论

    相关推荐

    什么是嵌入式人工智能

    嵌入式人工智能是指将人工智能技术应用于嵌入式系统中的一种技术。嵌入式系统是嵌入到其他设备或系统中的计算机系统,通常
    的头像 发表于 12-11 09:23 283次阅读
    什么是<b class='flag-5'>嵌入式</b>人工智能

    嵌入式和人工智能究竟是什么关系?

    、连接主义和深度学习等不同的阶段。目前,人工智能已经广泛应用于各种领域,如自然语言处理、计算机视觉、智能推荐等。 嵌入式系统和人工智能在许多方面都存在密切的关联性。首先,嵌入式系统可
    发表于 11-14 16:39

    ARMxy嵌入式计算机在机器视觉中的卓越表现

    嵌入式视觉是指在嵌入式系统中使用计算机视觉技术,与经常所说的机器视觉系统的区别在于嵌入式
    的头像 发表于 10-10 14:47 243次阅读
    ARMxy<b class='flag-5'>嵌入式</b>计算机在机器<b class='flag-5'>视觉</b>中的卓越表现

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被称为嵌入式系统的核心组件,是一种用于控制和数据处理的计算机硬件,其设计旨在嵌入特定设备中执行专门任务。嵌入式主板如同是设备
    的头像 发表于 09-30 10:05 456次阅读

    飞凌嵌入式「在线文档」功能上线 | 开放灵活,尽在掌握

    在忙碌的研发过程中,效率十分关键,飞凌嵌入式深知“便捷获取最新资料”的重要性,为此全新上线【在线文档】功能——进入飞凌嵌入式官网,产品资料全面升级为在线文档形式,旨在为客户带来更加开放与灵活的使用体验。
    的头像 发表于 09-13 09:46 332次阅读
    飞凌<b class='flag-5'>嵌入式</b>「在线文档」功能上线 | <b class='flag-5'>开放</b>灵活,尽在掌握

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统的嵌入式系统开发平台,它广泛应用于工业控制、智能家居、智能交通、医疗设备等领域。 嵌入式Linux开发板概述
    的头像 发表于 09-02 09:07 386次阅读

    Astra™ SL系列SL1680详细介绍,嵌入式物联网处理器

    Astra™ SL系列嵌入式处理器是高度集成的AI原生Linux®和Android™的片上系统(SoC),针对多模式消费者、企业和工业物联网工作负载进行硬件优化,并配备了边缘推理、安全、视频、图形
    的头像 发表于 08-15 10:32 269次阅读
    Astra™ SL系列SL1680详细介绍,<b class='flag-5'>嵌入式</b>物联网处理器

    机器视觉嵌入式中的应用

    机器视觉嵌入式系统中的应用是一个广泛而深入的话题,涉及到许多不同的领域和技术。 机器视觉嵌入式系统中的应用 1. 引言 机器视觉是一种模
    的头像 发表于 07-16 10:30 520次阅读

    嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-如何移植NCNN?

    在计算机视觉和深度学习领域,NCNN(Netural Network Computer Vision)是一个轻量级的神经网络计算框架,被广泛应用于各类嵌入式设备和移动平台。今天,让我们一同跟随共创
    发表于 05-29 17:24

    嵌入式技术领域的视觉、安全与AI应用

    本次2024年度德国版嵌入式世界展的大奖评选共收到全球百余家企业的申请,经由评审团严格筛选,最终选出三项候选提名,并于会场进行了隆重的颁奖仪式。其中,嵌入式视觉、安全与安防、人工智能等应用领域备受瞩目。
    的头像 发表于 04-29 11:20 366次阅读

    AI与开源力推嵌入式系统创新升级

    AMD在此次展会上宣布扩大AMD Versal™自适应片上系统(SoC)产品线,推出全新第二代Versal AI Edge和Versal Prime系列自适应SoC。该系列将预处理、AI推理和后处理集成于单一器件中,为AI驱动的嵌入式系统提供全方位
    的头像 发表于 04-29 11:11 518次阅读

    嵌入式主板,你了解多少?

    嵌入式主板,也称为嵌入式计算机主板,是一种专门设计用于嵌入式系统的计算机主板。与台式机和笔记本电脑中使用的常规主板不同,嵌入式主板设计
    的头像 发表于 04-17 15:11 1448次阅读

    嵌入式fpga是什么意思

    嵌入式FPGA是指将FPGA技术集成到嵌入式系统中的一种解决方案。嵌入式系统是一种为特定应用而设计的计算机系统,它通常包括处理器、内存、外设接口等组件,并且被嵌入到更大的设备或系统中,
    的头像 发表于 03-15 14:29 1253次阅读

    高端嵌入式实验平台

    微处理器、内存芯片组、闪存芯片组和电源管理电路,扩展板则由嵌入式硬件接口、板载功能和扩展功能模块组成。 软件提供嵌入式主流Andriod和Linux双系统软件包,开放的资源满足教学、科研、创新等应用,并提成配套实验教程。 该平台
    的头像 发表于 01-29 09:55 518次阅读
    高端<b class='flag-5'>嵌入式</b>实验平台

    啥是嵌入式嵌入式都有啥?薪资如何?前景如何

    嵌入式系统(Embedded Systems)是一种特殊类型的计算机系统,被嵌入到其他设备或系统中,用于执行特定的任务或控制特定的功能。这些系统通常设计用于特定的应用领域,具有特定的硬
    的头像 发表于 01-17 16:39 926次阅读
    啥是<b class='flag-5'>嵌入式</b>?<b class='flag-5'>嵌入式</b>都有啥?薪资如何?前景如何