广告

为不同应用慎选AI硬体加速方案

从很多方面来看,AI加速热潮与1990年代末期和2000年代初的DSP淘金热很类似......与DSP协同处理器一样,AI加速器的目标是找到最快速、最节能的方法来执行所需的运算任务...

从云端的大数据(big data)处理到边缘端的关键字识别和影像分析,人工智慧(AI)应用的爆炸式成长促使专家们前仆后继地开发最佳架构,以加速机器学习(ML)演算法的处理。各式各样的新兴解决方案都凸显了设计人员在选择硬体平台之前,明确定义应用及其需求的重要性。

从很多方面来看,AI加速热潮与1990年代末期和2000年代初的DSP淘金热很类似;在那个时候,随着有线和无线通讯起飞,市场上纷纷推出高性能DSP协同处理器(co-processor )以因应基频处理的挑战。与DSP协同处理器一样,AI加速器的目标是找到最快速、最节能的方法来执行所需的运算任务。

神经网路处理背后的数学,涉及统计学、多元微积分(multivariable calculus)、线性代数、数值最佳化(numerical optimization)和机率等;虽然很复杂,也是高度可平行化的(parallelizable)。但事实上这是令人尴尬的可平行化──与分散式运算不同,在路径的输出被重组并产生输出结果之前,很容易被分解为没有分支(branches)或从属关系(dependencies)的平行路径。

在各种神经网路演算法中,卷积神经网路(CNN)特别擅长物件识别类任务——也就是从影像中过滤筛选出感兴趣的物件。CNN以多维矩阵(multidimensional matrices)──即张量(tensor)──架构来理解资料,将超出第三个维度的每个维度都嵌入到子阵列中(如图1),每个添加的维度称为「阶」(order),因此,五阶张量会有五个维度。

EDNT181005_AIhardware_NT31P1

图1:CNN以张量架构摄取资料,也就是可被视觉化为3D立方体的数字矩阵(资料集);每个阵列中还有一个子阵列,该数字定义了CNN的深度。
(图片来源:Skymind)

与数学相关度不高AI重点在于快速反覆运算

这种多维分层对于理解CNN所需之加速的本质很重要,卷积过程使用乘法在数学上将两个函数「卷绕」(roll)在一起,因此广泛使用乘加(multiply-accumulate,MAC )数学运算;举例来说,在物件识别中,一个函数是源影像,另一个函数是用来识别特征然后将其映射到特征空间的筛检程式(filter)。每个筛检程式都要多次执行这种「卷绕」,以识别影像中的不同特征,因此数学运算变得非常重复,且是令人尴尬(或令人愉悦)的可平行化。

为此,某些AI加速器的设计采用多个独立的处理器核心(高达数百或上千个),与记忆体子系统一起整合在单晶片中,以减轻资料存取延迟并降低功耗。然而,由于业界已设计了绘图处理器(GPU)来对影像处理功能进行高度平行处理,因此它们对于AI所需的这种神经网路处理也可以实现很好的加速。AI应用的多样性和深度,特别是在语音控制、机器人、自动驾驶和大数据分析等方面,已经吸引了GPU供应商将重点转移到AI处理硬体加速的开发。

然而AI硬体加速的问题,在于有如此多的资料,所需的准确性和回应时间又有如此大的差别,设计人员必须对于架构的选择非常讲究。例如资料中心是资料密集型的,其重点是尽可能快速处理资料,因此功耗并非特别敏感的因素——尽管能源效率有利于延长设备使用寿命,降低设施的整体能耗和冷却成本,这是合理的考量。百度的昆仑(Kunlun)处理器耗电量为100W,但运算性能达到260 TOPS,就是一款特别适合资料中心应用的处理器。

接下来看另一个极端的案例。如关键字语音辨识这样的任务需要与云端连结,以使用自然语言识别来执行进一步的命令。现在这种任务在采用法国业者GreenWaves Technologies之GAP8处理器的电池供电边缘装置上就可以实现;该处理器是专为边缘应用设计,强调超低功耗。

介于中间的应用,如自动驾驶车辆中的摄影机,则需要尽可能接近即时反应,以识别交通号志、其他车辆或行人,同时仍需要最小化功耗,特别是对于电动车来说;这种情况或许需要选择第三种方案。云端连结在此类应用中也很重要,如此才能即时更新所使用的模型和软体,以确保持续提高准确度、反应时间和效率。

ASIC还不足以托付AI加速任务

正因为这是一个在软、硬体方面都迅速发展,需要在技术上持续更新的领域,并不建议将AI神经网路(NN)加速器整合到ASIC或是系统级封装(SiP)中——尽管这样的整合具有低功耗、占用空间小、成本低(大量时)和记忆体存取速度快等优点。加速器、模型和神经网路演算法的变动太大,其灵活性远超过指令导向(instruction-driven)方法,只有像Nvidia这种拥有先进技术、资金雄厚的玩家才能够负担得起不断在硬体,而在硬体上根据特定方法进行反覆运算。

这种硬体加速器开发工作的一个很好的例子,就是Nvidia在其Tesla V100 GPU中增加了640个Tensor核心,每个核心在一个时脉周期内可以执行64次浮点(FP)融合乘加(fused-multiply-add,FMA)运算,可为训练和推理应用提供125 TFLOPS的运算性能。借助该架构,开发人员可以使用FP16和FP32累加的混合精度(mixed precision)进行深度学习训练,运算速度比Nvidia自家上一代Pascal架构高3倍。

混合精度方法很重要,因为长期以来人们已经认识到,虽然高性能运算(HPC)需要使用32~256位元FP的精确运算,但深度神经网路(DNN)不需要这么高的精度;这是因为经常用于训练DNN的反向传播演算法(back-propagation algorithm)对误差具有很强的弹性,因此16位元半精度(FP16)对神经网路训练就足够了。

此外,储存FP16资料比储存FP32或FP64资料的记忆体效率更高,从而可以训练和部署更多的网路,而且对许多网路来说,8位元整数运算(integer computation)就足够了,对准确性不会有太大影响。

这种使用混合精度运算的能力在边缘甚至会更实用,当资料登录的来源是低精度、低动态范围的感测器——例如温度感测器、MEMS惯性感测器(IMU)和压力感测器等——还有低解析度视讯时,开发人员可以折衷精度以取得低功耗。

AI架构的选择利用雾运算从边缘扩展至云端

可扩充处理(scalable processing)的概念已经扩展到更广泛的网路——利用雾运算(fog computing)概念,透过在网路上的最佳位置执行所需的处理,来弥补边缘和云端之间的能力差距;例如可以在本地物联网(IoT)闸道器或更接近应用现场的本地端伺服器上进行神经网路影像处理,而不必在云端进行。这样做有三个明显的优势:一是能减少由于网路延迟造成的时延,二来可以更安全,此外还能为必须在云端处理的资料释出可用的网路频宽;在更高的层面上,这种方法也通常更节能。

因此,许多设计师正在开发内建摄影机、影像预处理和神经网路AI讯号链(signal chains)功能的独立产品,这些产品仅在相对较闭回路(closed-loop)的运作中呈现输出,例如已识别标志(自驾车)或人脸(家用保全系统)。在更极端的案例中,例如设置在偏远或难以到达之处,以电池或太阳能供电的装置,可能需要长时间地进行这种处理。

EDNT181005_AIhardware_NT31P2

图2:GreenWave的GAP8采用9个RISC-V处理器核心,针对网路边缘智慧装置上的低功耗AI处理进行了最佳化。
(图片来源:GreenWaves Technologies)

为了帮助降低这种边缘AI影像处理的功耗,GreenWaves Technologies的GAP8处理器整合了9个RISC-V核心;其中一个核心负责硬体和I/O控制功能,其余8个核心则围绕共用资料和指令记忆体形成一个丛集(如图2)。这种结构形成了CNN推理引擎加速器,具备额外的RISC-V ISA指令来强化DSP类型的运算。

GAP8是为网路边缘的智慧装置量身打造,在功耗仅几十毫瓦(mW)的情况下可实现8GOPS运算,或者在1mW时可实现200 MOPS运算;它完全可以用C/C++语言来编程,最小待机电流为70nA。

AI处理器架构比一比:RISC-V vs. Arm

RISC-V开放性硬体架构在一开始遭到质疑,因为那需要一个忠实稳固的使用者社群,以提供一系列丰富的支援工具和软体;而随着该架构透过各种测试晶片和硬体实作吸引更多开发者加入,那些质疑也逐渐消退。RISC-V吸引人之处在于它正成为Arm处理器的强劲对手,特别是在超低功耗、低成本应用上;只要谈到低成本就会锱铢必较,因此免费方案总是会感觉比需要支付授权费的方案更好。

不过虽然RISC-V架构的GAP8可以节能并且针对边缘神经网路处理进行了高度最佳化,从系统开发的角度来看仍然需要考虑周边功能,例如摄影机感测器本身和网路通讯介面,以及是采用有线还是无线技术等;依据系统通讯和处理影像的次数频率,这些功能占用的功耗比例可能较高。根据GreenWaves的说法,GAP8若采用3.6Wh的电池供电,能以每3分钟分类一张QVGA影像的频率持续工作长达10年;但该数字并未考量整体系统中其他因素的影响。

GreenWaves将其GAP8处理器与采用Arm Cortex-M7核心、运作频率216MHz的意法半导体(ST)处理器STM32 F7进行了直接比较(图3);两者以CIFAR-10资料集的影像进行训练,权重量化为8位元定点(fixed point)。

EDNT181005_AIhardware_NT31P3

图3:GreenWaves Technologies的GAP8与ST的STM32 F7处理器性能比较。
(图片来源:GreenWaves Technologies)

虽然GAP8因为拥有八核心架构而呈现更高效率,并能以较低时脉速率与更少的周期实现推理,Arm架构也不遑多让──Arm已经发表了针对行动装置和其他相邻、网路边缘应用的机器学习(ML)处理器,其应用场景包括AR/VR、医疗、消费性电子产品以及无人机等;该架构采用固定功能引擎(fixed-function engines)来执行CNN层,并采用可程式化层(programmable layer)引擎来执行非卷积层以及实现所选基元(primitive)和运算子(operator),参考图4。

EDNT181005_AIhardware_NT31P4

图4:Arm的ML处理器设计用于CNN类型固定功能以及可程式化层引擎的低功耗边缘处理。
(图片来源:Arm)

有趣的是,ML处理器是以高度可扩充架构为基础,因此同一处理器和工具可用于开发从物联网到、嵌入式工业和交通,到网路处理和伺服器等各种应用,运算性能要求从20 MOPS到70 TOPS以上不等。

如果开发团队希望从云端往下扩充,或从边缘往上扩充,那么这种可扩充性比较适合之前讨论的雾运算概念。此外该处理器本身与主流神经网路学习框架紧密整合,例如Google的TensorFlow和TensorFlow Lite,以及Caffe和Caffe 2;它还针对Arm Cortex CPU和Arm Mali GPU进行了最佳化。

在异质处理体系架构中部署AI

透过ML处理器,Arm还强调了异质(heterogenous)方法对AI应用之神经网路的重要性,但仅限于其CPU和GPU的狭窄范围内。从更广泛的角度来看,英特尔(Intel)的OpenVINO (Visual Inference & Neural Network Optimization,视觉推理和神经网路最佳化)工具套件可以实现异质混合架构的开发,包括CPU、GPU与FPGA,当然还有英特尔自家的Movidius视觉处理器(VPU)和基于Atom的影像处理器(IPU)。利用通用API以及针对OpenCV和OpenVX最佳化的呼叫(call),英特尔声称其深度学习性能可以提高19倍。

异质方法对于针对AI的神经网路处理既有好处又不可或缺...

本文为国际电子商情原创文章,未经授权禁止转载。请尊重知识产权,违者本司保留追究责任的权利。
  • 微信扫一扫,一键转发

  • 关注“国际电子商情” 微信公众号