开发者和系统设计人员在为其嵌入式设计增加某种形式的神经网络或深度学习功能时,有多个选择。以前,甚至是现在,设计人员成功地使用GPU和FGPA来满足了深度学习的内存密集型需求。现在,即便是传统的x86 CPU也已经进入了AI应用。
许多开发者发现现有的这些技术并不总是最合适的。因此,在过去几年中,许多初创公司(以及成熟的芯片开发商)开始专注于为AI应用设计和开发芯片。这些芯片是从头开始构建的,可以满足AI算法和运行应用的算力需求。
要知道,对SoC来说,IP模块是提供神经网络功能的另一种选择,但这是另一个话题了。在IP模块方面,主要供应商包括Cadence、Ceva、NXP、Synopsys和VeriSilicon等。
但与所有技术一样,每种解决方案都有其优缺点。总而言之,设计人员需要根据自己特定的应用来选择最佳的技术。AI芯片通常分为三个关键应用领域:云端训练、云端推理和边缘推理。
训练方面的大拿是Nvidia的GPU,它已经成为训练机器学习算法的热门选择。训练过程要分析数万亿个数据样本,GPU的并行计算架构在这方面是一大优势。
云端推理可以构建许多AI应用的机器学习模型,这些任务需要密集的计算而无法部署在边缘设备上。FPGA类的处理器具有低延迟特点,并可执行计算密集型任务,在这些应用方面具有优势。但并非所有AI计算任务都可以在云端完成,无论成熟公司还是初创公司,很多芯片开发商都在开发自己的AI芯片,并为其处理器添加AI功能。
图1:不同芯片架构的优势与不足
那么设计师在将脚踏入AI深水之前首先需要回答哪些问题?我与硅谷创业家兼技术专家Chris Rowen进行了交谈。做为BabbleLabs公司和Cognite Ventures的首席执行官,他列出了以下问题。
对于任何设计,第一个问题应该都是:你的应用需求是什么?接下来是“我有一个需要完成的具体任务吗?”,有时这很清楚。Rowen表示, “如果我是一名系统设计师,要开发一个安全摄像头,我会非常关心芯片对视频流交叉部分的处理,包括对象检测、对象识别、对象跟踪等,清楚知道少数几个与最终应用特别相关的任务。”
下一个问题是,应用是在云端还是在边缘设备中运行。这将决定工程师需要考虑设计的方向和选择什么样的芯片。
“最终应用显然很重要,” Rowen说道。“如果在云端运行,问题将是,‘它是用于训练神经网络,还是在一个已经训练过的网络上仅用于推理?’。如果它在边缘运行,那么想要运行的特定应用集是什么?”
Rowen表示,大多数新的芯片都是为边缘视觉应用而设计的,这些芯片主要针对推理应用,以各种不同的形式进行成像或视频分析。音频,尤其是语音处理是越来越重要且快速增长的一个子类别。
所以,首先要确定是在云端还是边缘。若在云端,是训练还是推理?若在边缘,它是通用的(应用不确定)还是视觉处理,或其他专门的应用(比如语音处理)?
软件工具也有助于区分不同的芯片。“如果它是一个训练芯片,它是否支持各种训练环境,包括TensorFlow、PyTorch和其它框架,因为应用和软件开发团队会使用许多重要的训练环境,”Rowen说道。他认为Nvidia是当今训练芯片的黄金标准和主导供应商。
“在推理方面,你怎么才能更好地将预先训练好的模型与芯片自身的特性一一对应。如果有像神经网络交换格式(NNEF)这样的标准,这个问题就很容易回答了。“NNEF是Khronos Group推广的一个标准,可以更容易地标准化映射工具。
“通常情况下,相对于将应用映射到其他新的处理引擎所涉及到的软件,这些神经网络的复杂性并不算高,”Rowen解释道。 “即使这些工具并不完美,人们通常也可以找到一种方法,使用不太复杂的工具将现有神经网络映射到视觉芯片、音频芯片,或者其它边缘处理芯片。”
无论软件是不是最关键的,设计人员都应该考虑硬件的价格、性能和功耗,这就带来了下一个问题。
任何芯片选择都有一个长期存在的问题,那就是成本和性能。对于神经网络,这个问题就是芯片采用什么片上存储器,以及可以提供多大的存储器带宽?
“有些神经网络非常耗费内存,”Rowen说。 “当然,通常在云端进行的训练过程是内存密集型的,需要大量的片上内存和非常高的内存带宽。”
他补充说,视目标应用不同,推理过程通常占用的内存较少,可能也不需要太高的片外带宽。
这就带来了一个问题。区分一个芯片是通用,还是针对特定应用的一个指标,就是芯片设计人员是否集成了大量片上存储资源和片外存储器带宽。但是,如果设计人员不知道他们的目标应用是什么,可能就会在内存带宽方面过度配置,这就会大幅增加芯片成本。
“过度配置将增加成本,因此通用芯片几乎总是比专用芯片更昂贵,因为他们必须确保可以满足各种需求,”Rowen说。利弊权衡包括成本、功耗和物理尺寸等。
Rowen认为,如果设计人员可以稍微缩小需求范围,以便降低一些成本和功耗,系统级的性能可能会有大幅提升。“通用和专用[芯片]之间的差异可能高达一个数量级。”
性能的最终定义是芯片可以多快地运行神经网络应用,这里的两个相关指标是吞吐量和延迟,要明确系统优化是针对增加吞吐量,还是针对减少延迟。
Rowen表示,在云端,重点通常是吞吐量,而延迟往往在实时边缘系统中非常重要。例如,如果你在为自动驾驶应用开发一款芯片,延迟更为重要,而且是一个关键的安全问题,他补充道。
“幸运的是,对于很多神经网络应用来说,所能达到的性能与芯片的乘积运算速度之间存在很强的相关性,”Rowen解释道。 “计算资源的利用率有一些变化,但在最简单的水平上,只要问‘在给定精度下每秒乘积-累加多少次’或‘每瓦多少次乘积-累加’,就可以大致知道该芯片的性能。”
一般来说,现在GPU是云端神经网络训练的主导力量,而普通x86处理器是云端推理的最常见平台,因为它在单个芯片上可以灵活地运行包括深度学习和传统软件在内的完整应用,Rowen表示。
在大多数情况下,边缘没有太多的训练工作要做。它主要针对视频或音频等特定用例进行推理。
Rowen为我们提供了一个粗略的评估,按照应用来划分芯片(来自初创公司和成熟企业)。 “有一种趋势是,针对云端的芯片更具通用性,而针对边缘的芯片更为专用。”
图2:在x轴上:0表示最适合边缘设备(汽车、电话和物联网等); 5表示最适合云端。 在y轴上:0意味着专用于神经网络,尤其是神经网络推理; 5表示通用性,包括神经网络推理、训练和其他非神经网络(但计算密集型)应用。来源:Cognite Ventures LLC
以下是一些AI增强型芯片和平台的简要介绍,展示了目前市场上从移动端到企业级应用的各种神经网络解决方案:
这是初创企业Gyrfalcon技术公司推出的超低功耗和高性能AI芯片。Lightspeeur 2801S智能矩阵处理器基于APiM架构,使用内存作为其AI处理单元。该公司宣称,“这个基于APiM架构的方案,有28000个并行神经计算核,真正支持片上并行与原位计算,不需要使用外部存储单元,成功克服了由存储器带宽而导致的性能瓶颈,在效率能耗比方面表现卓越,达到 9.3Tops/Watt,无论在训练模式还是推理模式下均可提供高密度计算性能。”
该公司声称其算术逻辑单元(ALU)的使用效率为77%,运行卷积神经网络(CNN)效率会更高。
Gyrfalcon提供交钥匙(Turnkey)参考设计,包括USB加密狗、多芯片线路板和系统开发套件。其目标应用包括移动边缘计算、基于AI的IoT,消费类便携设备、智能监控视频、AR/VR产品、人脸检测/识别、自然语言处理、支持深度学习的设备、AI数据中心服务器,以及自动驾驶等。
这是华为消费业务事业部的首个移动AI计算平台,采用专用神经处理单元(NPU),可将云端AI与本机AI处理有机结合。麒麟970包括一个八核CPU和新一代12核GPU。
“与四核Cortex-A73 CPU集群相比,麒麟970新的异构计算架构可实现高达25倍的性能提升,以及50倍的效率提高,”华为表示。这意味着该芯片组以更低的功耗,更快地提供相同的AI计算任务。基准图像识别测试表明,麒麟970每分钟可处理2,000张图像。
除了在自己的手机中使用新的AI芯片组外,华为还将移动AI定位为开放平台,为开发人员和合作伙伴提供技术。
英特尔Nervana NNP专为深度学习而设计,没有标准的缓存层次结构,其片上存储器由软件管理。 “更好的内存管理使该芯片能够实现海量计算的高利用率,”英特尔宣称。 “这可以为深度学习模型提供更快的训练时间。”
除了新的存储器架构外,英特尔还开发了一种新的数字格式Flexpoint,它可以显著提高芯片的并行度,同时降低每次计算的功耗。英特尔表示,由于单个芯片的神经网络计算主要受功耗和内存带宽的限制,因此Flexpoint可为神经网络任务提供更高的吞吐量。英特尔这一新设计的目标是“获得高计算利用率并支持多芯片互连的真实模型并行性”。
英特尔正在与微软合作,将微软Windows ML与英特尔的Movidius视觉处理单元(VPU)相结合来推动边缘AI推理。英特尔Movidius Myriad X VPU是一款专门用于加速边缘AI应用的芯片,它声称是业界首款具有专用神经计算引擎的系统级芯片解决方案,可用于边缘深度学习推理的硬件加速。 “这款第三代VPU可以高速和低功耗运行深度神经网络,以减轻其它硬件的特定AI处理负担,”英特尔表示。
英特尔还会针对通用机器学习和推理继续优化其Xeon可扩展处理器和数据中心加速器。
NeuroPilot平台专为AI边缘计算而设计,可提供一系列的硬件和软件、AI处理单元和NeuroPilot软件开发套件(SDK)。它所支持的主流AI框架包括Google TensorFlow、Caffe、Amazon MXNet和Sony NNabla,并且在操作系统方面支持Android和Linux。
联发科技表示,该平台“使AI更接近芯片组级别,适用于边缘计算设备,即深度学习和智能决策需要更快完成的场景”,开创了一个从边缘到云端的AI计算方案混合体。
与上一代产品相比,Nvidia的深度学习计算平台性能提升了10倍。全新的NVIDIA Tesla V100还将内存提升了一倍(到32 GB内存),以处理内存密集型的深度学习和高性能计算任务,此外还添加了一个名为NVIDIA NVSwitch的全新GPU互连结构。该公司表示,这可以使多达16个Tesla V100 GPU同时以每秒2.4太字节(TB)的速度进行通信,Nvidia还更新了软件堆栈。 Tesla V100 32GB GPU适用于整个NVIDIA DGX系统产品家族。
为证明利用现有的CPU可以在边缘运行机器学习模型,NXP半导体公司推出了嵌入式AI环境,可让设计人员基于NXP的产品系列部署机器学习,从低成本微控制器到i.MX RT处理器,直到高性能应用处理器。NXP表示,ML环境提供了简便的交钥匙方案,可让设计人员选择正确的执行引擎(Arm Cortex内核或高性能GPU/DSP)和工具,以便在其上部署机器学习模型(包括神经网络)。
此外,NXP还表示,该环境包括一些免费软件,允许用户导入他们自己训练过的TensorFlow或Caffe模型,将它们转换为优化的推理引擎,并将它们部署在NXP从低成本的MCU到i.MX,以及Layerscape处理器解决方案上。
“在嵌入式应用中实施机器学习,一切都要平衡成本和最终用户体验,”恩智浦AI技术负责人Markus Levy在一份声明中表示。 “例如,许多人仍然感到惊讶,即使在低成本MCU上,他们也可以部署具有足够性能的推理引擎。另一方面,我们的高性能混合交叉和应用处理器具有足够的处理资源,可在许多客户应用中运行快速推理和训练。随着AI应用的扩大,我们将继续通过下一代专用机器学习加速器来推动这一领域的增长。”
NXP的EdgeScale套件提供了一套基于云的工具和服务,用于物联网和边缘计算设备的安全制造与注册。该解决方案为开发人员提供了一套安全机制,供他们在应用中利用主流的云计算框架,远程部署和管理无限数量的边缘设备。NXP的合作伙伴生态系统还包括ML工具、推理引擎,解决方案和设计服务等。
高通的第三代AI移动平台据称在AI性能上比上一代SoC提升了3倍。
除了支持Google TensorFlow和Facebook Caffe / Caffe2框架外,骁龙神经处理引擎(NPE)SDK现在还可以支持Tensorflow Lite和新的开放式神经网络交换(ONNX)标准,可让开发人员轻松选择自己喜欢的AI框架,包括Caffe2、CNTK和MxNet等。此外,它还支持谷歌的Android NN API。骁龙845目标应用包括智能手机、XR耳机和始终联网的PC等。
为了安全起见,骁龙845现在还提供了一个硬件隔离子系统,即安全处理单元(SPU),它为高通的移动安全方案增加了“在现有层上的安全阀门特性”。
高通的AI Engine包括几个硬件和软件组件,其设备端AI处理性能已经在骁龙845上体现出来,将支持包括845、835、820和660在内的移动平台。 AI Engine支持Snapdragon系列核心硬件架构,即Hexagon矢量处理器、Adreno GPU和Kryo CPU。其软件组件包括Snapdragon神经网络处理引擎、Android神经网络API和Haxagon神经网络。
由于采用了异构计算,骁龙845的新架构带来了显著的性能改进。例如,高通声称新的相机和视觉处理架构在视频捕捉、游戏和XR应用方面,功耗比上一代降低了30%,新的Adreno 630也让图形处理性能和功效提升高达30%。
2018年初,三星电子发布了最新的高端应用处理器(AP)Exynos 9系列9810,主要面向AI应用和富媒体内容。这款移动处理器是三星的第三代定制CPU(2.9 GHz),内置超高速千兆LTE调制解调器和深度学习增强的图像处理功能模块。
该处理器采用新的八核CPU,其中四个是第三代定制内核,频率可以达到2.9 GHz,另外四个针对效能进行了优化。“通过扩展流水线并改善高速缓存的架构,单核性能提升了两倍,多核性能也比其前代产品提高了约40%,”三星表示。
该芯片还增加了一些新功能,包括通过神经网络深度学习来增强用户体验,并通过单独的安全处理单元来提高安全性,以保护个人数据安全,比如面部、虹膜和指纹信息。Exynos 9系列的9810目前已经量产。
这些只是目前已经上市的一些AI处理器。然而,通过Rowen提出的这四个问题,希望开发人员可以为其特定的嵌入式AI项目找到最合适的AI芯片。
(原文发表于ASPENCORE旗下EDN姐妹媒体EETC,参考链接:为嵌入式设计选择AI芯片)