随着人工智能(AI)、神经网络(neural network)以及机器学习领域的快速发展,系统开发工程师致力于为系统增加更多智能功能,未来发展不可限量。然而,运算需求会因不同应用而有所差异。对数据中心而言,神经网络主要用于执行图像识别,例如“经训练的”神经网络通过大量图像与分配输入权重进行学习后,能够正确识别物体。如同人们获取知识的过程,当接收到新数据时,人们能够依据过去经验进行推理,并做出决策,系统则必须将“推理技术”应用于神经网络,并针对新数据进行结果推理。
建立数据架构与分配推论所需的权重需要兆字节(TB)级的数据与百万兆次浮点运算(ExaFLOP/s)能力。因此,为满足大量运算需求,数据中心常用的深度学习技术往往采用大型且高效能的图形处理器(GPU)。
对于欲将AI优势扩展至网络边缘(Edge)的设计工程师而言,采用高效能GPU的成本与功耗较高。在网络边缘,采用浮点运算的深度学习技术部署数据中心实际上较不可行。设计工程师必须开发运算效率高的解决方案,除了满足精确度目标,还要能符合消费电子市场对设备功耗、尺寸与成本的限制。尽管设备已在数据中心经过训练,一旦落实于网络边缘应用,仍必须尽可能采用最少位的运算来执行推理。
为了简化运算流程,设计工程师会舍弃浮点运算,选择采用定点运算,甚至是最基本的整数运算。设计工程师可通过改变训练方式填补浮点到定点数值量化的差异,进一步开发可实现更快速训练与高精度的解决方案,从而使定点/低精确度整数运算神经网络的效能提升至浮点运算神经网络的水平。为了建构最简易的网络边缘设备,训练必须实现加权与启动1-bit数据的神经网络模型,此模型称为“二进制神经网络”(binarized neural network;BNN)。
例如,莱迪思半导体(Lattice Semiconductor)与VectorBlox Computing的工程师共同开发的新组件,即利用该二进制神经网络模型的优势——通过二进制方法优化神经网络的尺寸、成本、功耗与效能,大幅降低了内存需求,并使功效极大化。同时,搭配低功耗FPGA组件(如iCE40 UltraPlus),可提供具备充裕内存、逻辑与DSP资源的灵活平台。
开发团队将上述全新概念称为“微型二进制神经网络”(Tiny Binarized Neural Network;TinBiNN)。二进制神经网络无需使用乘法和除法运算,可降低对于内存的需求,而且仅使用加法和减法进行卷积运算。开发团队将TinBiNN定义为使用少于5,400个4-input查找表(LUT)资源的BiNN。本文重点讨论使用少于5,000个4-input LUT的轻量型TinBiNN,以及搭配低功耗FPGA方案的优势。
以卷积神经网络(CNN)为基础的机器学习应用中,运算核心属于卷积核心,为3×3窗口权重乘以输入数据,然后总和成纯量的结果。输入数值、权重与结果通常使用浮点系统。即使硬件优化能够支持窄定点数值,乘法仍占据主导地位。
有关的最新发展如M. Courbariaux、Y. Bengio和J.-P. David等学者在《BinaryConnect: Training Deep Neural Networks with Binary Weights During Propagations》文中的介绍,使用二进制权重代表+1或-1,而无需使用乘法运算。这项研究使用浮点数,于CIFAR 10图像识别数据中实现8.3%的误差率。
莱迪思和VectorBlox的开发工程师针对BinaryConnect方法进行三项改进:首先,将网络结构缩减了一半,其方式是将(2x128 C3)–MP2–(2x256C3)–MP2(2x512C3)–MP2–(2x1024FC)-10SFC的结构,简化为(2x64C3)-MP2–(2x128C3)-MP2-(2x256C3)–MP2–(2x256FC)-10SFC。其中,C3是3×3 ReLU卷积层,MP2是2×2最大池化(max-pooling)层,而FC是完全互连层。
图1:全新的微型二进制网络实现10.8%误差率和零误报率。
接着,开发工程师针对所有输入数据采用8-bit符号定点数值,进一步优化网络。使用32-bit符号数据累加器防止溢位,然后在数据传递至下一层之前,通过饱和功能转换为8-bit。新系统的误差率达到了10.8%。而当神经网络的规模缩小至48-48-96-96-128-128和64-128-10,误差率增加至11.5%。
图2:二进制CNN自定义向量指令集提高效能。
第二项改进是为二进制神经网络建置硬件加速器。开发工程师使用加速器作为ORCA RISC-V软处理器中的算数逻辑单元(ALU)。RISC-V软处理器具备RV32IM指令集的高效率优势,让开发工程师能以更少资源进行更多运算。在此情况下,开发工程师使用一组自定义轻量型向量扩展(LVE)指令增强ORCA处理器。通过从RISC-V ALU传输矩阵数据,LVE减少或消除了循环、内存存取以及地址产生成本,从而提高了矩阵运算的效率。将CNN加速器作为自定义向量指令(CVI)(见图2)增加至LVE,能够进一步提升运算效率。
第三项改进是在超低功耗FPGA(以iCE40 UltraPlus为例)中实现增强的RISC-V处理器。为了在网络边缘执行推理任务,设计工程师需要能够提供高度平行架构的解决方案,以超低功耗实现每秒大量运算。对于期望通过语音或图像识别技术为网络边缘应用增加更多智能功能的设计工程师而言,iCE40 UltraPlus FPGA提供连接影像传感器所需的灵活I/O,以及丰富的逻辑资源,可缩减和处理所采集的图像数据。iCE40 UltraPlus还具备8个DSP模块,能支持较复杂的算法,而单芯片内存可在低功耗状态下缓冲数据。LVE直接运行于128kB暂存RAM上,该缓存器RAM提供三倍超频,可在每个CPU频率周期内进行两次读取与一次写入。二进制权重即储存于内部RAM中,若正在进行任何LVE操作,DMA引擎可以高效地将这些数值转移至缓存器,而不必占用CPU频率周期。
开发工程师使用iCE40 UltraPlus行动开发平台,针对FPGA组件的关键互连功能进行评估,快速实现原型设计和测试。概念验证展示可帮助工程师快速开发驱动程序和接口等解决方案。该平台可提供速率高达108Mbps的1个MIPI DSI接口、4个麦克风桥接以及多个传感器。在此平台上,FPGA可通过板载SPI闪存或USB埠进行编程。
开发团队采用Omnivision OVM7692 RGB摄像头(640x480像素),并使用RGB565在硬件层将图像压缩至40x30像素。DMA用于将RGBA8888像素写入缓存器。软件对RGBA8888像素进行解交错,并将结果输入至尺寸为40x34的单独R8、G8和B8像素平面,其中仅32x32像素的资料具有重要性。
开发工程师创建人脸识别器,采用更新的CIFAR-10数据集,针对10-category分类器进行训练,在CIFAR-100中以重复的“人”图像取代“鹿”的图像。为了提高效能,开发团队进一步缩小网络结构,并使用175,000个脸部和非脸部图像的专用数据库,为全新的1-category分类器进行训练。这个专用数据库涵盖各种人脸图像,包括各种年龄、种族、是否戴眼镜、帽子和太阳眼镜等信息。
初步分析结果十分良好。在开发平台上,10-category分类器运行时间为1,315ms。这款小尺寸CPU的工作频率为24MHz,使用iCE40 UltraPlus 5K组件中5,280个4-input LUT中的4,895个。同时,也使用了FPGA中8个16x16 DSP模块的其中4个,30个4kb(0.5kB)BRAM的其中26个以及全部4个32kB SPRAM。ORCA RISC-V上的加速器提升了73倍卷积层运行效率,LVE则提升8倍密集层运行效率。最终整体结果为提升了71倍整体速度。
1-category分类器运行时间为230ms,误差为0.4%,功耗为21.8mW。低功耗版本设计运行速率为1f/s,而功耗仅4.4mW。上述两个分类器的误差率主要归因于训练,并未导致精准度降低。尽管低功耗图像传感器能以1-2mW的功耗实现上述画面更新速率,但在分析中并不包括图像传感器的功耗。
基于TinBiNN神经网络的小尺寸、低功耗解决方案可于网络边缘实现各类应用。例如,智能门铃可通过嵌入式AI功能自动进入待机模式,直到感应到有人出现;智能电视在没有观众观看的情况下自动关机。相同地,智能安全摄像头使用嵌入式人工智能功能,只在出现入侵者时才发送警报,能够减少或避免狗、猫等其他动物经过而出现于摄像头前的错误回报。
搭载脸部识别的移动设备和平板电脑需要用户在进行脸部识别前唤醒装置。该解决方案让这一类设备能够在低功耗的状况下持续侦测人脸,再唤醒高功耗应用处理器执行深度识别任务。
将AI优势扩展至网络边缘同时具有挑战与机会。如本文所示,通过FPGA和RISC-V处理器为设备建构AI功能,取代以云端为基础的资源,能够大幅降低功耗,同时缩短反应时间。同时,本地数据储存和处理不仅提高安全性,更节省宝贵的带宽。通过将AI整合至组件中,即使在网络关闭以节省功耗的情况下,设计工程师也能实现实时工作的智能功能。
(原文发表于Aspencore旗下EDN姐妹媒体EETimes电子工程专辑)