中文 英语

边缘推理架构激增

是什么让一个人工智能系统比另一个更好取决于很多不同的因素,包括一些不完全清楚的因素。

受欢迎程度

两部分中的第一部分。的第二部分将深入探讨基本的架构特征。

在过去的一年里,我们看到了大量的新消息机器学习(ML)用于边缘推断的架构。由于不需要支持训练,但具有低延迟的任务,这些设备展示了极其不同的ML推断方法。

Tensilica AI产品的产品营销总监Suhas Mitra表示:“无论是计算机体系结构还是实际的网络体系结构和拓扑结构,体系结构都在发生变化节奏

这些变化反映了扩展现有平台的局限性,以及需要处理、存储和检索的数据的爆炸式增长。Hailo的联合创始人兼CTO Avi Baum说:“通用架构蓬勃发展,非常成功。“但它们已经达到了极限。”

新产品展示了广泛的结构、技术和优化目标。所有这些都必须在功率上保持温和,但一些针对有线设备,而另一些针对电池供电设备,给出不同的功率/性能目标。虽然没有单一的架构可以解决所有问题,但该行业正处于扩散阶段,而不是整合阶段。在首选架构尘埃落定之前,还需要一段时间。

毫升网络
为了理解各种各样的产品,重要的是要记住ML世界中的一些基本区别。至少有三个概念必须加以区分——ML网络、ML模型和用于实现ML模型的硬件平台。

ML网络是层和节点及其连接的物理排列。研究人员花费了大量精力来研究可能比旧网络更好的新网络。这些网络通常有ResNet、MobileNet和YOLO这样的名称。

网络建立了决策所需工作的性质。例如,大多数开发人员和研究人员发现,性能受到内存访问的限制——即所谓的“内存墙”。相比之下,谷歌说它的tinyML网络受计算限制,而不是受内存限制。

“我们不需要更多的内存访问,”TensorFlow Micro在谷歌的技术主管Pete Warden在最近的一次演示中说。“我们一次加载一些激活和权重值,然后在寄存器中对它们进行许多不同的乘法/加法组合。因此,这并不适合传统硬件,因为大多数问题往往是内存受限的。”

目前被商业化的网络有两大类。最流行的是“人工神经网络”,简称ANN。这些都是大家熟悉的网络风格美国有线电视新闻网而且RNNs在这里,所有数据都通过网络传输。“卷积神经网络是我们今天在人工智能领域看到的很多东西的主力,”Maxim Integrated Micros、安全和软件业务部门执行董事克里斯·阿迪斯(Kris Ardis)说。

第二类是神经形态.峰值神经网络(SNNs)更关注现有状态的变化,而不是不断地处理整个状态。“人们相信snn是下一步,因为他们将需要比现在好上数百倍,甚至数千倍,”IP at的战略营销经理罗恩·洛曼(Ron Lowman)说Synopsys对此.“能够记录之前的知识是spike神经网络试图做的事情,而cnn则不断地大规模处理所有数据,以确保每次都有正确的答案。”

目前,BrainChip和GrAI Matter是少数几家提供SNN的公司。BrainChip首席执行官兼联合创始人Anil Manker表示:“Akida遵循神经形态设计原则,将所有计算分布在多个神经处理单元(npu)上。”“每个NPU都有自己的内存和计算介质。”

所使用的网络对性能有深远的影响。这就是为什么MLPerf开发的基准测试指定了ResNet-50这样的网络,这样性能比较就不会被不同的网络所混淆。挑战在于基准测试需要一段时间来开发,所以在这一点上,他们倾向于使用较小的网络,而不是具有商业吸引力的网络。

拥有新硬件的公司希望证明他们能够满足客户的性能需求,而基准测试将是实现这一目标的一种方式,允许在架构之间进行苹果与苹果的比较。但是运行基准测试需要时间,因此公司通常将测试工作集中在客户可能想要使用的网络上,这可能与用于基准测试的网络不同。

“与许多成本和功耗相似的边缘人工智能推断芯片不同,我们正在针对客户实际想要运行的大型模型和百万像素图像进行优化,而不是2.4 × 2.4的MobileNet,”腾讯软件架构工程高级副总裁王成解释道Flex Logix

这意味着许多新设备将没有官方基准数据。这并不是说这些公司有意避开基准。在某些情况下,由于资源有限,他们会优先考虑其他网络,如果有时间就会回到官方基准测试。

ML模型和底层硬件和软件
网络就像一个脚手架,一个实际的设计可以在上面实现。一旦我们使用这样的网络并训练它完成特定的任务,我们就会得到一个模型。模型是一个有权重的网络。网络可能是由研究团队经过大量工作后创建的,而模型则是由设计特定应用程序的开发团队创建的。一个网络可以用于许多不同的模型。

模型通常是使用浮点数学进行通用构建的,然后再针对特定的硬件平台进行调整。这种调整可能涉及从浮点数学转向某些精度级别的整数数学,还可能包括使模型适应硬件的编译优化步骤。所以在通用模型和硬件平台之间,你最终得到了一个为一种硬件优化的模型。

对于任何开发硬件平台的人来说,一个关键的考虑因素是要使用的数学精度。在所有其他条件相同的情况下,更高的精度(如果可能的话还包括浮点数)会带来更好的精度。但对于许多应用程序来说,存在“足够的准确性”这样的事情。增加更高的硬件精度意味着增加更多的电路,这将消耗更多的硅面积,从而增加成本。如果通过添加所有这些成本,一个模型的准确率从97.2%上升到97.4%,那么它可能不值得这个成本。

谷歌断言8位对于实际用途来说已经足够了。“我们有很多证据表明8比特就足够了,”沃登说。事实上,更小的表示也可以工作。但他指出,fpga实际上是唯一可以实现任意随机精度的硬件。其他所有内容默认为8位(或其倍数)。这意味着大多数软件工作也都集中在8位,这使得为更小的东西优化模型变得更加困难。

从历史上看,更传统的方法意味着一个模型在被修改后,可能需要重新训练。这是因为,尽管模型基于特定的网络,但在优化过程中,网络配置可能会发生变化。然后,再训练将有助于取代在适应过程中可能失去的一些准确性。

一些返工可以通过以一种了解底层硬件的方式进行培训来消除。这可以直接导致实现的模型,绕过通用模型。但这是特定硬件平台可用的设计工具的功能。

图1:经过充分研究的网络可以作为应用程序的选择。选择一个,训练过程创建一个模型。选择推理硬件,然后为其优化模型,从而创建用于在该硬件上部署的最终生产模型。虚线表示硬件感知的训练流,它可以绕过后面的部分或全部优化。资料来源:Bryon Moyer/Semiconductor Engineering。

图1:经过充分研究的网络可以作为应用程序的选择。选择一个,训练过程创建一个模型。选择推理硬件,然后为其优化模型,从而创建用于在该硬件上部署的最终生产模型。虚线表示硬件感知的训练流,它可以绕过后面的部分或全部优化。资料来源:Bryon Moyer/Semiconductor Engineering。

设计工具很可能成为这个领域的主导力量。从历史上看,FPGA公司和部门都是基于这一事实而死亡的。机器学习很有可能会走上同样的道路。“如何使用硬件实际上取决于软件,”Cadence的Mitra说。“除非你有好的软件,否则你真的不可能有好的游戏。”

软件通知硬件。Deep Vision首席执行官Ravi Annavajjhala表示:“我们正在以软件为中心设计设备,这样任何数据流、任何新的网络框架都可以轻松移植到硬件上。”

什么是“边缘”?
一个关键的考虑因素是这些芯片将驻留在哪里。ML长期以来一直专注于云实现,在这里可以根据需要收集几乎无限的资源。但焦点已经不可避免地从云转移到边缘。

Baum说:“得益于谷歌、微软和Facebook,机器学习在云中非常成功,但我们认为它需要在更接近数据获取的地方补充类似的能力。”

话虽如此,“边缘”这个词已经被重载了。对于某些人来说,特别是在通信领域,边缘意味着核心网络的边缘,也就是本地网络的起点。在蜂窝世界,这可能是无线连接之前的最后一站。在这些情况下,在边缘和最终用户设备之间仍然有更多的网络。

或者,边缘是指网络的真正边缘,它止于最终用户设备。

还有一种中间观点认为某物处于边缘,术语“on-premise”或“local”可能被认为是“边缘”的替代品。关键是,即使它不涉及终端设备,数据也不必离开本地网络进行推断。我们使用的定义会影响任何机器学习引擎在“边缘”运行的功率要求。在本文中,我们将重点介绍后两者。

边缘的权力
我们总是假设数据中心有无限的能量用于计算。这不是真的。数据中心的节能很重要,但对于这些应用程序来说,性能才是首要目标。

边缘被认为是更节能的。如果它指的是本地服务器,那么该服务器可能会从电网中获取能量,使低功耗不那么重要。其他终端用户的设备可能是电池供电的,因此能源是非常宝贵的。在这里,需要在足够快地完成任务所需的性能和完成任务所需的能量之间保持微妙的平衡。

将推理定位在边缘的一个好处在于节省通信功率。如果必须将数据传输到云端进行处理,则在传输数据时将消耗大量能量。Arabi说:“即使使用最低功耗的蓝牙,你平均也会消耗3到10毫安,而在设备上计算相同的数据可能会花费数百微安。”通过在当地工作,可以节省能源。

这意味着有几个可能的能源和效率目标,这取决于推断的位置。如果推理是在电池供电的设备上完成的,那么硬件一定特别吝啬。如果使用本地服务器进行重载,通过一个低延迟跳点与电池供电的设备交换数据,那么引擎就可以在线运行。下图为不同等级的“边缘”提供了一些功率范围。

图2:不同边缘器件的功率等级不同。来源:Deep Vision

图2:不同边缘器件的功率等级不同。来源:Deep Vision

边缘性能
云计算和边缘计算在性能上也有很大的区别。例如,云经常运行大量的图像。这对于在网络中从一层转换到另一层可能效率很低的架构来说是可行的,因为每一层都有数千个映像,可以在这些映像上摊销层交换成本。最后,可能要花很长时间才能得到结果,但你几乎同时得到了一千种不同的结果。

这并不适用于大多数边缘应用程序。例如,当流媒体视频时,在你必须重新开始下一帧之前,你已经完全处理了一帧。你不能一次一点点地运行来自不同流的大量帧。你必须高效地处理一个流。

这表明延迟是性能的衡量标准,对于边缘应用程序来说,延迟必须很低。这通常用短语“batch=1”表示。如果一个硬件平台针对batch=1进行了优化,这意味着它具有较低的延迟。这几乎是边缘应用程序的一个给定要求。

也就是说,延迟是应用程序的一个功能。硬件在决定延迟方面起着一定的作用,但延迟并不是硬件单独的特性。因此,它不能用于比较硬件,除非是针对完全相同的应用程序和模型进行比较。

在性能和功率之间有一个权衡,诀窍是不要在移动到边缘时妥协太多。“我们可以在边缘运行一些最大的神经网络,而目前人们只能在数据中心运行,”Perceive的创始人兼首席执行官史蒂夫·泰格(Steve Teig)说。“在数据中心级别的精度上,我们运行的功率大约是20兆瓦,而不是数百瓦。”

边缘任务绝大多数集中在推理上
与边缘与云紧密相关的另一个特征是正在执行的机器学习任务。在很大程度上,培训是在云中完成的。这就为训练期间权值的反向传播创造了硬件需求。这不是推断的必要条件。

虽然推理可以在云中完成,但边缘实现几乎只用于推理。有一些架构能够进行增量学习,其中模型的最后一层可以在边缘重新训练,但这种情况不太常见。

纵观新架构,我们可以发现几个不同的主题。在这一点上,没有明确的“对”和“错”。每个架构都反映了选择。随着时间的推移,其中一些想法可能会输给其他想法,所以“更好”和“更坏”可能会出现。但现在还为时过早,尤其是考虑到目前这些设备很少有商业量产。

处理应用程序的方法不止一种
应用程序通常被归类为大类,比如“视觉”。这在很多方面可能会产生误导。首先,并非所有的视觉应用都是一样的。虽然它们可能都涉及卷积,但识别图片中的动物(即使不太可能在边缘)的处理与自动驾驶汽车的处理非常不同,自动驾驶汽车融合了多个视频和其他流来做出决定。

“最初的任务是分类,这不是一个非常有用的应用程序,”Synopsys ARC EV处理器产品营销经理戈登·库珀(Gordon Cooper)说。“然后是面部检测、行人检测、车道线检测或路灯检测。然后还有一种完全不同的图像质量改进,即神经网络清理图像。”

为了方便起见,也有可能将一种应用程序转换为另一种应用程序。与语言和声音等应用程序相比,面向视觉的硬件要多得多。一些公司将非视觉应用转化为视觉。库珀说:“你可以把传统的二维图像,比如音频波形或雷达波形,映射到二维图像中。”“然后你通过CNN提供它。”所以宽泛的分类是有用的,但不是明确的。

关于边缘视觉应用的流行,Cooper特别提到了cnn的效率。他说:“视觉技术更适合边缘应用的原因之一是,它不像语音和音频那样存在带宽问题。”“lstm或rnn需要大量的带宽。”

也就是说,有些体系结构旨在解决许多应用程序。Teig说:“虽然图像处理显然是繁重的工作,但我们可以支持最多两个摄像头、最多4k视频、多个麦克风、音频、语音和有状态神经网络。”

图3:用于全应用程序的架构。在这种情况下,有独立的图像处理和神经网络处理资源。来源:感知

图3:用于全应用程序的架构。在这种情况下,有独立的图像处理和神经网络处理资源。来源:感知

未公开的
在已公布的架构中,一个令人惊讶的共同主题是硬件细节没有公开。这在很大程度上似乎是一种竞争。这些架构反映了许多不同的权衡和想法,如果一些特定的硬件概念获得了巨大的成功,那么他们最不希望看到的就是公开。专利是有帮助的,在这个领域专利数量很多。但即便如此,让竞争对手蒙在鼓里显然是一些公司的策略。

然而,唯一可行的方法是他们有一个好的软件故事。基本的解释是,“我们不公开硬件,因为设计师不需要了解硬件。工具将这些抽象出来,使硬件细节变得不重要。”这给软件工具带来了额外的压力,因为只有软件才能让未公开的硬件看起来更好。

相反,如果软件工具没有很好地利用硬件,那么聪明的硬件想法可能不会成功。因此,信息披露并不一定是一个好或坏的指标。这也不是孤注一掷的问题。有些公司披露到一定程度,但不详细。或者,有时只有关键的专利想法被公开,作为吸引新用户尝试的一种方式。

硅镁层。Ai就是一个很好的例子。SiMa.ai的首席执行官Krishna Rangasayee说:“我们在硅上没有做任何独特的事情——没有模拟,没有内联内存计算,什么都没有。”“我们希望把硅的风险降到最低,所以我们的创新较少涉及工艺技术和硅。这是真正的建筑风格。”然而,软件隐藏了这种架构。

图4:没有透露太多细节的处理器框图,依靠软件工具来处理这些细节。来源:SiMa.ai

图4:没有透露太多细节的处理器框图,依靠软件工具来处理这些细节。来源:SiMa.ai

动态与静态引擎
执行神经网络模型的经典老式方法使用一个或几个核心。模型被转换为代码,在任何给定的时间,核心都在执行与一层或另一层中的一个或另一个节点相关的代码。在限制条件下,单核平台将在同一个核心上执行网络的每个部分。

当然,这会导致较差的性能,新的体系结构都提出了对这种基本情况的改进。一个主要的架构考虑仍然存在:这个平台是一个资源被网络的不同部分重用的平台,尽管比单核模型更有效吗?还是整个模型由设计软件编译并分配到芯片中的固定资源?

图5:一个架构示例,其中资源在编译时分配到模型的不同层,执行在资源数组中逐层流动。来源:Hailo

图5:一个架构示例,其中资源在编译时分配到模型的不同层,执行在资源数组中逐层流动。来源:Hailo

这种区别有重要的含义。通过重复使用硬件,可以为芯片提供更少的硬件,从而降低成本。它还可能允许更动态的执行——动态决策可以影响特定的执行流。

库珀说:“这取决于这些人试图做的事情的狭隘性,以及他们是否有一个、两个或三个图表,他们是否为这些图表量身定制了一些东西,或者他们是否试图为所有人提供所有东西,更可编程,更少的面积优化和功耗优化。”成本在于重新配置和数据移动。

图6:这个架构鼓吹“多态”,根据每个计算部分的需要动态分配不同的流。来源:Deep Vision

图6:这个架构鼓吹“多态”,根据每个计算部分的需要动态分配不同的流。来源:Deep Vision

是否完全可编程
一些设备制造商吹捧的另一个特点是“完全可编程性”。所有的架构都具有某种形式的可编程性,所以我们不是在讨论“固定功能”和“可编程”。相反,这通常指的是计算元素的灵活性。

如果引擎主要是由mac创建的,那么这些元素只做一件事——执行乘法-累加操作。它们嵌入其中的架构可能会允许某种静态或动态定义单个MAC将操作哪些数据,这种可配置性可以被认为是可编程性,因为这种关系在硬件中不是固定的。

在另一个极端,一些体系结构在其体系结构中使用功能齐全的处理器核心,有时除了完整的标准指令之外,还使用非常特定的定制指令。这些体系结构声称是“完全可编程的”,因为处理器可以做的不仅仅是乘法-累加。当同一个处理器可能用于应用程序的非神经部分时,它会很有帮助。

图7:结合了完全可编程和特定功能(着色器)块的架构。来源:Think Silicon

图7:结合了完全可编程和特定功能(着色器)块的架构。来源:Think Silicon

还有其他的架构概念需要更详细地探讨。本系列的第2部分会仔细看看的。

相关的
快速推理在边缘
通过硬件-软件协同设计和设计灵活性来平衡更好的性能。
赢家和输家在边缘
目前还没有一家公司拥有这个市场,而且在很长一段时间内也不会。
为什么TinyML如此重要
令人惊讶的是,并不是所有的事情都需要大量的计算能力来做出重要的决定。
机器学习的功率模型
预测运行AI/ML算法所需的功率或能量是一项复杂的任务,需要精确的功率模型,目前尚不存在这种模型。
边缘的定制和限制
为什么功率、性能和安全性将定义边缘设备。
人工智能推理加速
了解做权衡时什么是重要的。



留下回复


(注:此名称将公开显示)

Baidu