草榴社区

嵌入式应用神经处理的演变

ARC 处理器产物营销经理 Gordon Cooper

十年前,运行在 GPU 上的深度学习卷积神经网络 (CNN) 模型 AlexNet 取代了更传统的视觉处理算法,赢得了 ImageNet 大规模视觉识别挑战赛 (ILSVRC)。AlexNet 及其后继者以高度计算复杂性和大型数据集为代价,显著提高了对象分类的准确性。换言之,要达到这一破纪录的准确性,需要大量的数据移动和大量的乘法和累加运算。在学术界,人们急于改进神经网络优化技术,以提高准确性和性能,同时最大限度地降低实际应用的功耗和面积。

神经网络在现实世界已得到广泛应用,例如自动驾驶汽车的行人检测、智能个人助理的语音识别以及手机和笔记本电脑访问控制的面部识别(图 1)。神经网络的优势在于,它们能够识别数据集内的模式(即使在数据噪音很大或不完整时),在某些情况下甚至超过人类的能力。

嵌入式神经网络应用示例

图 1:嵌入式神经网络应用示例

 

在 GPU 上实施,例如 AlexNet 的 ILSVRC 提交,为模型训练和早期原型设计提供了很好的起点。对于性能和功耗至关重要的高容量、成本敏感型应用,设计人员已转向神经处理单元 (NPU),它是具有可编程,并针对神经网络优化了的硬件加速器。NPU 的挑战是除了提供针对数学密集型神经网络优化的加速,提高面积效率,还要提供足够可编程性,以便在将来发布新的神经网络技术或算法时不会过时。

从 VGG16 到 Transformers

第一批神经网络加速器于 2014 年开始出现,当时在 AlexNet 上改进的神经网络模型 VGG16 是广泛用于视觉分类任务的 CNN 架构。VGG16 的架构相当简单。它使用 3x3 卷积,并使用简单的激活函数 ReLU(图 2)。激活函数通过将节点的输出驱动到一或零(从而激活或不激活输出)来帮助在有用数据与不那么有用的数据之间进行排序。VGG16 在 AlexNet 上的准确度通过增加层数来提高,这使得对复杂性和数据移动的要求变的更高。

卷积是神经网络处理的核心,在过去十年中变得越来越复杂。例如,MobileNet 引入了深度可分离卷积。VGG16 的 3x3 卷积被多种替代方案所取代,尤其是增加对 1x1 卷积的依赖。激活函数更加多样化和复杂。虽然 ReLU 不是 2014 年使用的唯一激活函数,但 sigmoid 和 tanh 通常与神经网络 (RNN) 一起使用。ReLU 是 CNN 最常用的函数。不断发展的研究引入了多种新的激活函数。NPU 仍需高效地支持 ReLU,但还须支持十几种或更多的替代配置。图 2 显示了当今神经网络架构必须支持和优化的一些复杂性。

左图显示了 ReLU,这是一种在许多早期 CNN 中使用的计算高效、非饱和、非线性激活函数。右图显示了一些需要被最新 NPU 支持的激活函数。

图 2:左图显示了 ReLU,这是一种在许多早期 CNN 中使用的计算高效、非饱和、非线性激活函数。右图显示了一些需要被最新 NPU 支持的激活函数。

 

在过去八年中,CNN 架构的多项改进提高了性能、效率、准确性和带宽,但代价是增加了硬件复杂性。旨在最大化 AlexNet、VGG16 或其他早期 ImageNet 获奖模型的硬件目前不足以高效地运行最新的神经网络模型(例如 Yolo v5、EfficientNet),或无法支持新兴深度学习模型,如 Transformers 和 Recommender 网络。

Transformers 神经网络是一种新型深度学习架构,最初凭借其实现自然语言处理 (NLP) 的能力而备受关注。与 RNN 一样,Transformers 也设计用于处理音频或语音等顺序输入数据。与连续处理数据并因此在硬件中受到带宽限制的 RNN 不同,Transformers 允许更多的并行性,从而提高效率和准确性,并允许训练此前无法训练的更大数据集。除 NLP 外,Transformers 现在也正在应用于视觉应用。

复杂的神经网络需要 NPU 改进

NPU 的神经网络加速必须不断发展,以更好地支持最新的神经网络模型。它们必须从 CNN 引擎发展为更广泛的 AI 引擎。

这不仅仅是由于神经网络模型的复杂性推动了对 NPU 改进的需求。现实应用对越来越高水平的神经网络性能的需求日益增长。在过去的几年里,手机在 AI 处理方面的表现提升了 30 倍。在过去几年中,由于使用的摄像头数量越来越多、图像分辨率越来越高以及算法越来越复杂,自动驾驶汽车对神经网络处理的需求已实现从 10 增长到 100 再增长到 1000 万亿次运算/秒 (TOPS) 的性能提升。L3 自动驾驶可能需要 10 次 TOPS,L4 自动驾驶预计需要 100 次 TOPS,而 L5 自动驾驶预计需要 1000 次 TOPS。

自动驾驶等级对应的驾驶环境自动监控系统和所需神经网络性能

图 3:自动驾驶等级对应的驾驶环境自动监控系统和所需神经网络性能

 

提高神经网络加速器性能的最简单方法是增加乘积累加器 (MAC) 的数量,即构建模块矩阵乘法。然而,虽然计算单元呈指数级增长,但将数据输送到这些大型加速器所需的存储器带宽并非如此。神经网络设计师面临着很大的压力,他们需要想出尽可能减少带宽的方法,以利用系统中的所有这些 MAC。

支持 AI 的 SoC 的设计师需要神经网络 IP,该 IP 与神经网络算法的最新进化同步发展,能够对越来越高水平神经网络性能日益增长的需求进行扩展,并且能够通过一套成熟的开发工具轻松编程。对于汽车和航空用例,满足日益严苛的功能安全标准也很重要。

全新 新思科技ARC NPX6 NPU IP

为了跟上神经网络的不断发展以及满足对更高性能的日益旺盛的需求,新思科技 最近推出了 新思科技 ARC? NPX6(图 4)NPU IP。NPX6 NPU IP 以超低功耗满足深度学习应用的实时计算需求。NPX6 NPU IP 是 新思科技 的第六代神经网络加速器 IP。

DesignWare NXP 神经处理器 IP

图 4:DesignWare ARC NPX6 NPU IP

 

NPX6 NPU IP 有多种尺寸可供选择,以满足特定的应用性能要求。NPX6 NPU 的可扩展架构基于单个内核,可从 4K MAC 扩展到 96K MAC。单个 NPX6 处理器可在最坏情况下以 1.3 GHz 的频率在 5nm 工艺上提供高达 250 TOPS 的性能,或者通过使用新的稀疏功能提供高达 440 TOPS 的性能,这可以提高神经网络的性能并降低其能源需求。

每个 NPX6 内核包括最多三个针对最新神经网络优化的计算单元。卷积加速器支持每个时钟周期 4096 个 MAC,用于包括卷积运算在内的矩阵乘法。Tensor 加速器支持多种张量运算,适用于 CNN、RNN 以及 Transformers 等更新的网络。Tensor 加速器还提供可编程查表 (LUT),支持任何当前或未来的激活函数,包括 ReLU、PReLU、ReLU6、tanh 和 sigmoid、MISH、SWISH 等。Tensor 浮点单元 (TFPU) 可在神经处理硬件内部提供可选的 16 位浮点(FP16 和 BF16 格式)支持,最大限度地提高层性能,并简化从用于 AI 原型的 GPU 到大容量功耗和面积优化 SoC 的过渡。

先进带宽技术和内存层次结构支持计算模块的这种可扩展性,该层次结构支持每个内核中的 L1 内存以及内核与外部 DRAM 之间的 L2 内存。高性能、低延迟互连可提供扩展至多达 24 个内核的能力。NPX 系列中设计了许多硬件和软件功能,可帮助提高 TOPS,同时将外部内存带宽保持在可控范围内。其中包括 DMA 的动态压缩、利用图形稀疏性、高级缓冲区管理和多级平铺,以及层融合等。

为了利用所有这些集成的硬件功能并加速 NPX 处理器系列的应用软件开发,全新的新思科技 ARC MetaWare MX 开发工具包提供了一个全面的编译环境,具有自动神经网络算法分区,以最大限度地提高资源利用率。NPX IP 和高效率编程工具共同优化了高性能 SoC 的性能、功耗和面积,适用于广泛的嵌入式 AI 应用,包括高级驾驶辅助系统 (ADAS)、监控、数字电视和摄像头以及数据中心和边缘服务器推理。