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

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

3天内不再提示

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

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

扫码添加小助手

加入工程师交流群

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

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

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

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

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

poYBAGK9F-SADt0FAAJcmCrFjKc432.png

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

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

poYBAGK9F-uAGfTaAAIJO1aJglE410.png

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

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

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

SYCL - C++ 单源异构编程

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

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

poYBAGK9F_2AKJOCAASIT151abE059.png

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

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

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

OpenVX – 便携式加速视觉处理

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

poYBAGK9GAaAdwqCAAJ1o95EBn4346.png

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

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

OpenCL – 异构并行编程

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

poYBAGK9GA-AejlFAAEcvcdSvok868.png

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

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

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

审核编辑:郭婷

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

    关注

    68

    文章

    20332

    浏览量

    255010
  • 编译器
    +关注

    关注

    1

    文章

    1672

    浏览量

    51913
  • 机器学习
    +关注

    关注

    67

    文章

    8565

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    工控一体机常见结构类型介绍|外嵌入式、内嵌入式、壁挂一体机

    工控一体机提供多种结构类型以适应不同工业场景需求:嵌入式(最主流)、壁挂、悬臂、桌面开放式、防爆
    的头像 发表于 04-16 16:30 106次阅读
    工控一体机常见结构类型介绍|外<b class='flag-5'>嵌入式</b>、内<b class='flag-5'>嵌入式</b>、壁挂<b class='flag-5'>式</b>一体机

    嵌入式视觉技术赋能工业自动化领域变革

    机器视觉(Machine Vision)是实现非接触检测和高度柔性生产的关键技术,其主要功能可归纳为识别、测量、检测以及定位与引导等四类。嵌入式视觉(Embedded Vision)
    的头像 发表于 03-06 09:28 1068次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>视觉</b>技术赋能工业自动化领域变革

    什么是嵌入式应用开发?

    、实现和部署,还包括硬件选择、软件设计、测试、集成和维护等流程‌。 定义和背景 嵌入式应用开发是指将软件部署到嵌入式系统中,这些系统广泛应用于消费电子和工业自动化中。嵌入式系统通常
    发表于 01-12 16:13

    重磅合作!Quintauris 联手 SiFive,加速 RISC-V 在嵌入式与 AI 领域落地

    (ADAS); 嵌入式平台的 AI 与机器学习加速器; 工业物联网与自动化系统(开放标准架构的优势能充分发挥)。 对咱们开发者来说,这波合作最大的好处就是能拿到集成
    发表于 12-18 12:01

    探索Series 660低成本可嵌入式加速度计:应用与技术解析

    探索Series 660低成本可嵌入式加速度计:应用与技术解析 在电子工程领域,加速度计是用于测量加速度的设备,在众多应用场景中发挥着关键作
    的头像 发表于 12-12 15:45 490次阅读
    探索Series 660低成本可<b class='flag-5'>嵌入式</b><b class='flag-5'>加速</b>度计:应用与技术解析

    什么是嵌入式操作系统?

    嵌入式操作系统的定义 嵌入式操作系统是专门为资源受限的嵌入式设备(比如 STM32 单片机、物联网模块、工业控制器)设计的微型操作系统,核心作用是:管理硬件资源、调度多任务、提供标准
    发表于 12-09 10:33

    嵌入式和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 4219次阅读

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

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

    飞凌嵌入式RK3576多模态大模型图像理解助手,让嵌入式设备“看懂”世界

    (LLM)+视觉语言模型(VLM)多模态架构,推出多模态大模型图像理解助手,为嵌入式设备打造 “智能视觉中枢”,让终端设备能够真正 “看懂” 复杂的世界 。
    的头像 发表于 07-25 11:09 1825次阅读
    飞凌<b class='flag-5'>嵌入式</b>RK3576多模态大模型图像理解助手,让<b class='flag-5'>嵌入式</b>设备“看懂”世界

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

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

    AMD嵌入式处理器为您的应用添能助力

    AMD 面向嵌入式应用打造高性能、高能效处理器,全方位满足网络、存储、汽车、工业、零售、医疗、测试与测量等领域的各种需求。无论您的应用是涉及 AI 加速、机器视觉、安全数据处理还是高分辨率显示
    的头像 发表于 07-07 14:09 2052次阅读

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

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

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

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