(白皮书编号:WP025)
本文概要
从深度嵌入式系统到超大规模数据中心部署,人工智能(AI)和机器学习(ML)技术正在为其中迅速扩展的一系列的产品和应用提供支持。尽管支持这些应用的硬件设计存在很大程度的差异,但都需要硬件加速。
深度学习技术需要大量的张量算术运算(tensor arithmetic operation)。为了支持实时执行,存储器和处理器的性能必须满足比标准软件驱动架构尽可能高得多的性能目标。这种需求导致去使用基于专用硬件加速器的设计,来执行并行化和高度流水线化的张量算术运算。为了避免通道阻塞,数据必须在合适的位置,合适的时间,以合适的格式出现。专用的数据编排硬件避免了加速器通道阻塞,从而支持以最高效率运行。
数据编排包括预处理和后处理操作,确保数据以最佳速度和最适合进行高效处理的格式传输到机器学习引擎中。操作范围从资源管理和使用规划,到I/O适配、转码、转换和传感器融合,再到共享存储阵列内的数据压缩和重新排列。如何部署这些功能将取决于目标应用的性能和成本要求,但对于大多数应用场景而言,针对数据摄取、转换和传输进行优化的可编程逻辑平台为机器学习加速器提供了最佳的数据编排策略。
引言
深度学习给计算硬件带来了巨大的压力。向专用加速器的转变为芯片技术提供了一种与人工智能发展保持同步的方法,但这些单元本身并不能够满足以更低的成本获得更高性能的需求。
可以理解的是,集成电路(IC)供应商和系统公司一直专注于其矩阵和张量处理阵列的原始性能。在峰值吞吐量下,这些架构可以轻松达到以每秒万亿次操作(TOPS)衡量的性能水平,即使对于旨在用于边缘计算的系统也是如此。尽管可以理解,但如果由于数据不可用或需要为每个模型层转换为正确的格式而导致延迟,那么对峰值TOPS的关注会带来硬件利用率不足的风险。
系统必须对网络和存储延迟进行补偿,并确保数据元素的格式和位置合适,同时以一致的速率传入和传出人工智能加速器。数据编排提供了在每个时钟周期上确保数据格式和位置合适的方法,从而最大限度地提高系统吞吐量。
由于典型人工智能实现的复杂性,所以无论是位于数据中心、边缘计算环境还是实时嵌入式应用,如自动驾驶辅助系统(ADAS)设计,有许多任务必须由数据编排引擎处理,这些任务包括:
• 数据操作(manipulation)
• 在多个矢量单元之间进行调度和负载平衡
• 数据损坏的数据包检查,例如由传感器故障造成的数据损坏
尽管可以通过向核心处理阵列添加数据控制和异常处理硬件来实现这些功能,但是由于可能需要的操作种类繁多,以及随着人工智能模型的发展对灵活性的需求也越来越高,这使得将这些功能硬连线到核心加速器芯片中可能成为一种昂贵的短期选择。例如,在一些应用环境中,加密支持正迅速成为确保高数据安全性的需求,但根据每层数据的应用敏感性,可能会使用不同级别的加密。固定架构解决方案存在着无法适应不断变化的需求的风险。
一种可能的方法是使用一个可编程的微处理器来控制通过加速器的数据流。这种方法的问题在于软件执行根本无法满足加速器硬件的需求。需要一个更加以硬件为中心的数据编排响应,这使得加速器设计完全专注于核心通道效率成为可能。外部数据编排可以处理所有的存储和I/O管理,确保操作数和权重的传输不间断。由于数据编排引擎必须处理应用程序和模型设计的修订和更改,因此硬连线逻辑不是一种合适的方法。可编程逻辑支持修改,并避免了数据编排引擎无法更新的风险。
原则上,现场可编程逻辑门阵列(FPGA)结合了分布式存储器、算术单元和查找表,从而提供了组合功能,该组合功能非常适合人工智能驱动的应用程序所需的流数据实时重组、重新映射和存储器管理。FPGA支持创建定制的硬件电路,支持深度流水线化人工智能加速器的密集数据流,同时使用户能够根据需要改变实现方式以适应新的架构。然而,数据编排的性能要求需要新的FPGA设计方法。
数据编排的应用场景
在数据中心、边缘计算和嵌入式系统部署等应用场景中,有许多不同类型的数据编排架构。例如,在数据中心应用环境中,多个加速器可以部署在单个模型上,它们的数据吞吐量由一个或多个数据编排引擎管理。
推理系统需要数据编排来确保每个工作引擎的最大效用,以避免瓶颈,并确保尽可能快地处理输入的数据样本。分布式训练增加了对神经元权重快速更新的要求,这些更新必须尽快分配给处理相关模型部件的其他工作引擎,以避免停滞。
FPGA中的数据编排逻辑支持处理广泛的权重分配和同步协议,以支持高效的运行,同时减轻加速器本身的数据组织负担。下图展示了一种可能的实现方法,使用一个FPGA器件管理同一块电路板上的多个人工智能引擎。使用一种合适的低噪声通信协议,单个机器学习专用集成电路(ASIC)不需要存储控制器。相反,数据编排引擎在本地存储器中组织所有的权重和数据元素,并简单地将它们以合适的顺序传输到它所管理的每个ASIC。其结果是通过减少重复的存储和接口逻辑,以更低的总体成本获得高性能。
图1:数据编排可以为并行化的人工智能实现应用快速地提供负载平衡和其他数据转发功能
利用数据编排,硬件可以在不增加成本的情况下进一步提高性能。一种选择是利用网络或系统总线数据的压缩,避免使用更昂贵的互连。FPGA的逻辑层面可编程性支持通过网络接口对数据进行压缩和解压缩。数据编排硬件还支持使用前向纠错协议来确保以全流水线速度传输有效数据。在大多数设计中,损坏事件通常很少发生,但是如果没有外部的纠错支持,那么对于高度流水线化的加速器设计来说,恢复成本将会很高。
图2展示了数据编排引擎可以通过多种方式优化数据流和给机器学习引擎提供的呈现结果。例如,单个数据元素的格式和结构为利用数据编排的优势提供了一个重要的机会,因为源数据通常必须以一种适合深度神经网络(DNN)进行特征提取的格式来表示。
在图像识别和分类应用中,像素数据通常被通道化,以便在通过提取形状和其他高级信息的池化层进行聚合结果之前,可以单独处理每个颜色平面。通道化有助于识别边缘和其他特征,这些特征可能不易于用组合的RGB表示法识别。在语音和语言处理中会执行更广泛的转换。数据通常被映射成一种更容易被DNN处理的形式。由于不是直接处理ASCII或Unicode字符,而是将模型中要处理的词和子词转换为向量和one-hot表示。类似地,语音数据可能不会以原始时域样本的形式呈现,而是转换为联合时频表示,从而使重要特征更容易被早期DNN层识别。
尽管数据转换可以通过人工智能加速器中的算术内核来执行,但它可能不太适合张量引擎。重新格式化的性质使其适合由基于FPGA的模块进行处理。FPGA能够有效地以线速度进行转换,而不会出现在通用处理器上运行软件时所产生的延迟。
在涉及传感器的实时和嵌入式应用中,预处理数据可以带来更多的好处。例如,虽然可以通过训练DNN以消除噪声和环境条件变化的影响,但使用前端信号处理对数据进行去噪或归一化处理,可提高其可靠性。在汽车先进驾驶辅助系统(ADAS)实现中,摄像头系统必须处理照明条件的变化。通常,通过使用亮度和对比度调整,可以利用传感器中高水平的动态范围。FPGA可以执行必要的操作,为DNN提供变化较少的像素流。
传感器融合是ADAS设计日益重要的一个方面,有助于提高终端系统的性能。由于环境条件会使单个传感器数据难以解读,因此人工智能模型必须有效地从众多不同类型的传感器(包括摄像头、激光雷达和雷达)中获取输入。
格式转换是至关重要的。例如,激光雷达(LIDAR)为笛卡尔空间中的目标物体提供深度信息,而雷达在极坐标系统上运行。许多模型通过将一个坐标空间转换为另一个坐标空间,更容易地进行传感器融合。类似地,来自多个摄像头的图像数据必须拼接在一起,并使用投影进行转换,从而将最有用的信息传递给人工智能模型。
较低级别的转换也同样需要。汽车原始设备制造商(OEM)从不同的供应商那里购买传感器模块,每个供应商都以自己的方式解读连接通信标准。这需要一些功能来解析这些传感器通过车载网络发送的数据包,并将数据转换为DNN可以处理的标准格式。出于安全考虑,模块也必须向ADAS单元进行身份验证,在某些情况下,还要发送加密数据。数据编排芯片支持从人工智能加速器引擎上卸载解密和格式转换功能。
通过使用在数据编排子系统中实现的前端信号处理功能来去除不必要的数据,可以实现进一步的优化。例如,用于处理来自麦克风和其他一维传感器输入的传感器,可以消除静音时或低级背景时的噪音,并减少车辆静止时传送的视频帧数量,从而减轻人工智能引擎的负载。
图2:数据编排为人工智能功能加速提供了多种选择
一种针对数据编排而优化的架构
尽管FPGA内可配置互连和可编程逻辑的结合有助于数据编排任务,但FPGA架构则天生各不相同,它们如何处理对高带宽数据的需求是关键。传统上,FPGA并不被期望作为数据路径的核心元素,而是主要为与存储和I/O交互的处理器提供控制平面辅助。数据编排需要代表处理器和加速器去实现内核接收、转换和管理数据元素,这给传统的FPGA架构带来了巨大的压力。
为了支持数据编排的带宽要求,传统的FPGA需要极宽的总线来处理通过PCI Express和千兆以太网接口的多个数据流。例如,为了支持超过400Gb/s以太网数据的传输,设计人员必须使用可编程的互连电路,来对大约2048位宽的总线进行布线,以可靠地满足时序要求,这通常需要一个运行频率为几百兆赫兹的时钟。由于这种大型结构的拥塞和时序收敛问题,这样如此宽的互连是非常难以布线的。互连可能会消耗数十万个查找表(LUT),因为它们是无法用于执行数据编排或格式转换任务的。
Achronix Speedster7t系列FPGA器件克服了传统FPGA所面临的问题,其中部分原因是它采用了一种专用的二维片上网络(2D NoC),通过在网络的不同部分进行多个并行操作,这种互连可以实现高达20Tb/s的总带宽。相对于FPGA架构互连,二维片上网络不仅在速度上有了巨大的提升,而且能够在多个PCIe Gen5、400Gbps以太网端口和GDDR6存储器接口之间以更高的速率传输大量的数据,而不会消耗任何FPGA的可编程资源。
在Speedster7t FPGA器件中,片上网络在FPGA的整个表面提供了一个二维互连架构。它使用专用的网络接入点(NAP)将数据包发送到器件内任何位置的软核。每个NAP通过行业标准的AXI端口结构提供对FPGA内可编程逻辑模块或硬件资源的访问。东西向和南北向数据流都有独立的NAP,为访问二维片上网络的逻辑提供了额外的灵活性和性能。这种定向分割有助于优化在相同的二维片上网络路径上开始和结束的传输延迟。在一个正交的二维片上网络路径上走线会增加一个小的、确定性的延迟。
二维片上网络提供的一项重要功能是分组模式(Packet Mode),该模式旨在更容易地将到达高带宽端口(如以太网)的数据重新排列为多个数据流。分组模式可以分离到达速率为200Gb/s或400Gb/s以太网端口的数据包,并将它们传输到不同的软核。这种数据包分离如下图所示,连续的数据包被分布到FPGA的不同部分。因此,分组模式可以轻松创建负载平衡架构,而使用传统FPGA是难以实现这样的功能。
图3:片上网络的分组模式支持将网络有效负载自动分配到架构的不同部分
另一个好处是,二维片上网络更容易支持部分重新配置:二维阵列中的每个逻辑模块都能作为一个可隔离的资源,可以在不影响任何其他逻辑模块的情况下完成交换新功能。由二维片上网络和接入点控制器实现的虚拟化和转换逻辑进一步增强了此功能。
地址转换表的作用类似于微处理器中的存储管理单元,以防止任务之间的数据相互干扰。接入点中的地址转换表意味着每个软核可以访问相同的虚拟地址范围,但访问外部物理存储的范围完全不同。访问保护位提供了进一步的安全性,防止内核访问受保护的地址范围。在一系列基于人工智能的应用中,这种级别的保护很可能变得极其重要。在这些应用中,数据编排和其他可编程逻辑功能在集成到最终产品之前由不同的团队实现。
除了高度灵活的数据路由,数据编排还需要去应用快速算术功能来增强核心人工智能加速器。Speedster7t FPGA部署了一系列机器学习处理器(MLP)模块。每个MLP都是一个高度可配置的、计算密集型的模块,最多可配置32个乘法器,提供高达60 TOPS的性能。MLP支持4到24位的整数格式和各种浮点模式,包括直接支持Tensorflow的bfloat16格式和块浮点(BFP)格式。周围的可编程逻辑架构提供了多种方法来优化数据流,以充分利用MLP提供的数据重用和吞吐量机会。
由于数据编排硬件需要适用于各种应用环境,因此对灵活部署有着明确的需求。数据中心应用可能需要使用一个或多个分立的、大容量器件(例如Speedster7t FPGA器件),来为单个电路板上或分布在一个托盘或机架内的多个机器学习引擎路由和预处理数据流。对于尺寸、功耗和成本是主要限制因素的边缘计算应用来说,采用系统级芯片(SoC)解决方案存在明显的争论。
Achronix是唯一一家能够同时提供独立FPGA芯片和嵌入式FPGA(eFPGA)半导体知识产权(IP)技术的公司,因此在支持成本降低计划方面具有独特的优势,其中可编程逻辑和互连功能可以集成到一个SoC中,如下图所示。Speedcore eFPGA IP使用与Speedster7t FPGA相同的技术,支持从Speedster7t FPGA到集成Speedcore模块的ASIC的无缝转换。当使用Speedcore IP将Speedster7t FPGA转换为ASIC时,客户有望降低高达50%的功耗和节省高达90%的单位成本。
另一种选择是在多芯片模块中使用多芯片合封chiplets。这在基于FPGA的合封的数据编排模块和机器学习引擎之间提供了高速互连的好处。Achronix支持所有这些实现选项。
图4:嵌入式FPGA技术能够将数据编排集成到加速器芯片中
结论
深度学习的快速发展给大规模实现该技术所需的硬件架构带来了巨大压力。尽管由于意识到性能是一个绝对要求,因此业界高度关注峰值TOPS分数,但智能数据编排和管理策略提供了一种用于交付高成本效益和高能效系统的方法。
数据编排包括许多预处理和后处理操作,确保了数据以最佳速度和最适合进行高效处理的格式传输到机器学习引擎。操作范围从资源管理和使用规划,到I/O适配、转码、转换和传感器融合,再到共享存储阵列内的数据压缩和重新排列。一些编排引擎根据目标机器学习架构的核心需求使用这些功能的子集。
Achronix Speedster7t FPGA架构为这些数据编排策略提供了高度灵活的平台。这种FPGA具有高吞吐量、低延迟和极高灵活性等特点,其数据传输形式可使即使是高度专业化的加速器也能去适应不断变化的需求。此外,Speedster7t FPGA广泛的逻辑和算术能力加上高吞吐量互连,使得前端信号调节和后端机器学习的整体设计能够最大限度地提高整体效率。