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

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

3天内不再提示

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

星星科技指导员 来源:嵌入式计算设计 作者:Neil Trevett 2022-07-08 16:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

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

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

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

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

pYYBAGLH5cmAXuFCAAJhgp-Opv4100.png

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

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

pYYBAGLH5dOASBtiAAIJ445kYak388.png

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

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

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

SYCL - C++ 单源异构编程

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

poYBAGLH5dqAFG0OAAI8w6STPIc221.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 所示的开放标准来解决。

pYYBAGLH5eKAShmEAASIIpYpJyE961.png

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

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

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

OpenVX – 便携式加速视觉处理

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

pYYBAGLH5euADsg7AAJ1aNHA8U4884.png

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

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

OpenCL – 异构并行编程

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

poYBAGLH5fOAQRVmAAEds4YdBAc603.png

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

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

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

审核编辑:郭婷

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

    关注

    68

    文章

    20152

    浏览量

    247329
  • 计算机
    +关注

    关注

    19

    文章

    7764

    浏览量

    92692
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    嵌入式和FPGA的区别

    开发中做出更明智的技术选择。 基本概念解析 嵌入式系统(Embedded System)是一种专用计算机系统,通常包含微处理器/微控制器、存储器和专用外围设备,被设计用于执行特定功能。它强调
    发表于 11-19 06:55

    嵌入式需要掌握哪些核心技能?

    : 1)C语言与底层编程 核心地位:C语言是嵌入式开发的基石,需精通指针操作、内存管理、位运算,直接操控硬件资源。 延伸技能:C++用于复杂项目架构设计,汇编语言优化底层性能(如启动代码、中断处理
    发表于 10-21 16:25

    新一代嵌入式开发平台 AMD嵌入式软件和工具2025.1版现已推出

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。 2025.1 版嵌入式软件和工具的新 增功能 AMD
    的头像 发表于 08-20 09:15 3640次阅读

    AMD 2025.1版嵌入式软件和工具的新增功能

    AMD 2025.1 版嵌入式软件和工具是面向新一代嵌入式系统开发而打造的综合平台,全面加速概念构想到部署落地。
    的头像 发表于 08-15 15:32 1044次阅读

    华芯星重新定义嵌入式存储品质标准

    在物联网设备爆发式增长、工业4.0与汽车智能化加速的当下,嵌入式存储芯片正面临前所未有的性能与可靠性挑战。凭借铠侠(KIOXIA)全球领先的BiCS FLASH 3D闪存技术与SMI(慧荣
    的头像 发表于 07-22 09:11 1889次阅读

    Linux嵌入式和单片机嵌入式的区别?

    区别 单片机嵌入式系统和Linux嵌入式系统是两种不同的嵌入式系统开发方式,它们在应用领域、开发环境、资源需求等方面都有显著的区别。以下是它们的主要区别: 1.应用领域: 单片机嵌入式
    发表于 06-20 09:46

    嵌入式开发入门指南:从零开始学习嵌入式

    随着物联网、智能硬件的发展,嵌入式开发成为热门技能之一。以下将为初学者提供一份详细的嵌入式开发入门指南,涵盖学习路径、必备工具、推荐资源等内容。 1. 嵌入式系统的定义与应用嵌入式系统
    发表于 05-15 09:29

    使用Lattice mVision打造嵌入式视觉系统解决方案

    嵌入式视觉嵌入式系统与机器视觉技术的集合,嵌入式视觉系统硬件集成摄像头模组和处理板,将图像捕获
    的头像 发表于 03-06 16:09 1225次阅读

    嵌入式教育科普|GPIO接口全面解析

    在现代科技领域,嵌入式系统接口作为信息交互的核心载体,发挥着至关重要的作用,各类接口通过预定义的通信协议与标准化规范,可以实现设备间的精准数据传输与智能控制。 作为嵌入式开发的技术基础,接口
    的头像 发表于 03-05 11:11 2757次阅读
    <b class='flag-5'>嵌入式</b>教育科普|GPIO接口全面解析

    电子发烧友荣获飞凌嵌入式“2024年度最具价值媒体”奖

    曝光度、精准触达目标客户,同时获取市场反馈优化产品设计,强化行业技术标杆形象,驱动产品迭代与销售转化,加速生态合作布局。 飞凌嵌入式作为电子发烧友企业号尊享版认证客户,标志着双方合作从基础资源互通迈向
    发表于 02-28 15:20

    嵌入式主板选型与应用指南

    嵌入式主板是专为嵌入式系统设计的核心硬件平台,广泛应用于工业控制、物联网、医疗设备等领域。以下是关于嵌入式主板的详细介绍:1.嵌入式主板的核
    的头像 发表于 02-27 14:53 938次阅读
    <b class='flag-5'>嵌入式</b>主板选型与应用指南

    小身材大能量:解读小尺寸嵌入式主板

    ,就带大家一同深入了解小尺寸嵌入式主板。小尺寸嵌入式主板特点小尺寸嵌入式主板,尺寸规格相对紧凑,专为特定应用场景和设备量身定制的主板。它们被设计用于
    的头像 发表于 02-17 18:02 1001次阅读
    小身材大能量:解读小尺寸<b class='flag-5'>嵌入式</b>主板

    嵌入式主板的概述与发展

    随着科技的迅猛发展,嵌入式系统在现代电子产品中扮演着越来越重要的角色。嵌入式主板作为嵌入式系统的核心组件之一,承担着控制、处理和通讯等多种功能。本文将对嵌入式主板的基本概念、构成部分、
    的头像 发表于 01-13 16:30 1187次阅读
    <b class='flag-5'>嵌入式</b>主板的概述与发展

    ARM架构嵌入式主板特点

    嵌入式主板可以理解为嵌入在设备中用于控制和数据处理的CPU板,也就是设备的“大脑”。当主板嵌入到设备中,当然对主板的体积和功耗会有更严格的要求(嵌入
    的头像 发表于 12-31 16:03 1850次阅读
    ARM架构<b class='flag-5'>嵌入式</b>主板特点

    什么是嵌入式人工智能

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