作者 | 王言治,美国东北大学电子与计算机工程系助理教授
近年来,机器学习(Machine Learning)领域的研究和发展可谓是与日俱新,各式各样与机器学习相关的研究成果与应用层出不穷(如图像识别,自动驾驶,语音识别等),机器学习能够处理的任务也愈发的复杂。但与此同时,新的问题也随之而来,机器学习模型变得更加庞大复杂,因实时性而对算力所产生的需求也远远超乎了我们的想象。这一问题严重阻碍了人工智能(AI)产品及应用融入到人们的日常生活中,因此亟待解决。
谷歌、微软、亚马逊、华为和苹果等科技巨头以及众多初创公司每年都会花费数以亿计的经费来研发机器学习专用硬件加速器,他们希望能够早日在边缘设备(edge device)与物联网设备(IoT device)上实现人工智能应用的部署,并将人工智能真正的带入到人们的生活中。
现今,全球有不少于100 家 的AI 芯片初创公司,各种新硬件层出不穷,从重塑可编程逻辑和多核设计(programmable logic and multi-core designs),到开发自己的全新架构,再到使用神经形态架构(neuromorphic architectures)等。此外,我们还看到了诸如英特尔以极其高昂的价格收购了 MobilEye、Movidius 和 Altera,NVIDIA 在自动驾驶处理器方面花费了大笔的开销,谷歌开发了 TPU,各家公司都试图都在硬件上抢占先机。
这里我们不难发现,工业界目前的认知是“硬件才是真正制约移动AI发展的主要因素”。他们缺乏对于软件以及目前所使用的通用芯片的计算资源及计算能力的信任。因此,相较于软件,他们将注意力更多地放在了开发机器学习和推理专用的硬件加速器上。
但是,在如此巨大的资金注入下,到目前为止,硬件加速仍成效甚微,我们尚未看到任何边缘 AI 硬件加速器的大规模部署。这不禁令人深思,专用硬件加速真的是正确的道路吗?软件能否成为移动 AI 时代的主导?
从各大公司的角度来看,如果想要让自家的AI产品或应用迅速落地抢占市场,设计专用的芯片或硬件显然并不是最优选择。众所周知,芯片以及硬件的开发成本非常高昂,且开发周期漫长,并非所有公司都可以承受。若是选用第三方提供的AI加速硬件,则可能会面临诸如成本增加,兼容性等一系列问题。而设计专用软件则不同,它的开发成本低廉,容易实现快速部署,可以做到针对性优化,且通常具有完备的生态系统。
从大众的角度来看,若想让AI产品或应用真正融入人们的日常生活,那么它至少需具备几个特点,价格低廉、随时随地、方便快捷。价格低廉就不必多说了,很多AI产品和应用都会给人们的生活带来更大的便利,但这更多的是锦上添花而非必不可少,而使用专用硬件加速器无疑会增加产品的成本,所以人们究竟会不会为这一成本增加而买单、究竟可以接受的尺度有多大,这仍然是个未知数。
目前很多AI相关应用比如最常见的手机语音助手,智能音箱等采取的模式是云端计算,即用户端将数据传输给云端服务器进行运算,云端再将结果传回给用户。这就对用户所处的网络环境提出了要求。如果AI相关运算能在例如手机、音箱等边缘设备上完成,那么用户就可以不受网络环境影响,随时随地的使用AI应用。
试想,当你在地铁上看高清视频,由于网络信号不好,高清视频数据传输量又大,导致了视频卡顿。但如果在你的手机上能够本地运行一个实时视频超分辨率转换的AI应用,那么就可以使用低清分辨率视频源进行传输,从而减少卡顿。
此外,能够方便快捷的使用AI应用也是至关重要的一环,由于移动支付的普及,很多人出门连钱包都省了,只带一个手机。显然,随身携带GPU或FPGA硬件加速器是不现实的。所以无论从公司的角度还是大众的角度来说,基于软件和通用计算设备(比如手机)的AI加速无疑是AI应用的最佳选择。
那么我们不禁要问:
1.我们能否在没有特殊硬件加速器的普通手机(或其他边缘设备)上,克服高算力需求,将各种AI应用实时化呢?
2.如果真的可以,那么与专用硬件加速器相比,基于软件优化和普通手机的实现方式性能又如何呢?能不能比硬件加速器跑的还快,能量效率还高呢?
答案是肯定的。
近期,由美国东北大学王言治研究组、威廉玛丽学院任彬研究组和北卡州立大学慎熙鹏研究组共同提出了名为CoCoPIE的软件算法架构,通过有效的“压缩-编译”协同设计(compression-compilation co-design),在没有特殊硬件加速器的情况下,使用现有边缘设备(如智能手机),依然可以实现人工智能的实时化,并且在性能上超越了特殊硬件加速器。
他们还坚信,AI应用程序的软件优化潜力仍未得到充分开发,即使在移动AI时代,软件仍然将占有业界的主导地位。一旦我们可以在数十亿现有的移动设备上启用实时AI,那么一个拥有万亿美元的庞大市场将被彻底释放。
他们将CoCoPIE架构在三星Galaxy S10智能手机上的性能和基于ASIC和FPGA的硬件机器学习加速器的性能进行了对比。
图1. CoCoPIE 架构在三星Galaxy S10智能手机上与专用ASIC解决方案和FPGA解决方案的性能对比。
对比结果总结在上图中。其中图(a),(b),(c)对比了CoCoPIE和专用ASIC硬件(包括Google的云TPU-V2和Edge TPU,Eyeriss 以及NVIDIA Jetson AGX Xavier)在性能和能效方面的表现。图(d)对比了CoCoPIE与FPGA解决方案(ESE)在准确性和能效上的表现。为了达到公平,他们使用相同的网络模型进行比较,并且CoCoPIE未采用权重量化(quantization)。
结果显示CoCoPIE在能效方面始终优于这些代表性的ASIC / FPGA解决方案。这种独特的现象归因于三个原因:
1.智能手机本身具有超高的能量效率。智能手机芯片使用最先进的技术(例如7nm,11nm技术)构建;而FPGA / ASIC解决方案则基于28nm或40nm技术--这些技术本身节能效果较差。同样,ARM(移动CPU)和高通(移动GPU)尤其擅长高效电路/系统设计。CoCoPIE可以最大限度地利用这些前人的成果。
2.虽然现有的移动编译器框架对不同神经网络的支持有限(例如,不支持RNN或大规模DNN),但CoCoPIE可以支持所有的主流神经网络,从而释放了移动设备的全部潜力。
3.由于基于软件的解决方案具有高度的灵活性,因此CoCoPIE在不同的DNN上始终保持高性能。相反,当前的ASIC / FPGA解决方案通常针对特定的DNN类型/大小进行优化,从而影响其通用性。具体而言,边缘TPU通常针对小型DNN优化,而云端TPU通常针对大型DNN优化。
他们利用CoCoPIE框架在一台普通的三星Galaxy S10手机上实现了多种具有代表性的AI应用,并成功地做到了可实时。比如图2所示的风格转换,视频上色以及超分辨率应用全部达到了实时运行标准(每秒不小于30帧)。此外,他们还在手机上成功实现了更具挑战性的AI应用,包括基于YOLO-V4的物体检测,以及基于3D卷积的行为识别,并且分别达到了14帧每秒和110帧每秒,如图3所示。更多的演示视频请参考下面的网址。
Youtube:
https://www.youtube.com/channel/UCCKVDtg2eheRTEuqIJ5cD8A
B站:
https://space.bilibili.com/573588276?from=search&seid=13333469485394270447
图2.利用CoCoPIE框架在手机上实现的实时AI应用(包括实时风格转换,实时视频上色,实时超分辨率)。
图3.利用CoCoPIE框架在手机上实现物体检测以及3D行为识别。
除了CNN网络,他们还在RNN上与FPGA硬件加速器ESE和C-LSTM做了对比(如图4所示)。即使CoCoPIE不使用任何量化技术。CoCoPIE当压缩率高于245倍时,有着与ESE相同的推理时间 (ESE为82.7us),而CoCoPIE的GPU能量效率比ESE高将近40倍,比C-LSTM高近12倍。因为,与ESE的查找表激活算法相比,CoCoPIE的编译器优化显著提高了并行性和内存性能,而ESE的查找表激活算法导致了有限的并行化和不规则的内存访问。C-LSTM则存在两个不容忽视的问题,一是识别能力不高,二是无法利用手机GPU的并行节能运算模式,而CoCoPIE框架可以同时确保高识别率、高能量效率、多平台执行。
图4. 对于RNN模型(googlelstm网络),CoCoPIE架构使用三星Galaxy S10手机的CPU/GPU上与专用与FPGA硬件加速器ESE和C-LSTM的性能对比。
他们还将CoCoPIE的测试结果与现有的加速框架进行了对比,由于这些框架缺乏像CoCoPIE所使用的“压缩-编译”协同设计方法,他们的性能不如CoCoPIE。图5为CoCoPIE与TFLite,TVM 以及MNN加速框架在普通的三星Galaxy S10手机的CPU和GPU上的性能对比。S10拥有最新的高通骁龙(Qualcomm Snapdragon)855移动平台,包含了高通Kryo 485 8核CPU和高通Adreno 640 移动GPU。结果显示在所有情况下,CoCoPIE都超越了其它的加速框架。
图5.CoCoPIE与TFLite, TVM以及MNN加速框架的性能对比。
CoCoPIE架构中使用了两个关键技术来实现AI应用在手机端的加速,即 “模型压缩” 与 “编译器优化” 。
模型压缩技术主要分为两类:1.剪枝(pruning);2.量化(quantization)
剪枝技术意在删除模型中冗余的权重来减少权重的存储量和计算量,而量化技术意在降低权重的精度来减少存储和加快计算速度。
在CoCoPIE架构中他们新提出了 “卷积核模式剪枝(kernel pattern pruning)” 和 “连通性剪枝(connectivity pruning)”,以便在不损失准确性的情况下实现更高的剪枝倍率和加速效果。
图6. CoCoPIE 压缩-编译架构
在编译器优化方面,CoCoPIE主要使用了以下技术:
1. 压缩权重存储(compressed weight storage)
压缩权重存储格式是专门为CoCoPIE中使用的卷积核模式和连通性剪枝设计的。卷积核与输出通道重排结合后,这种紧凑的数据结构比传统的 CSR(压缩稀疏行)格式能够产生更好的压缩率。
2.消除负载冗余(load redundancy elimination)
通过在内核执行代码生成过程中通过分析处理两个寄存器级负载冗余问题,解决了基于卷积核模式化剪枝对内存性能的挑战。在内存和缓存之间的数据移动已通过高级数据平铺技术进行了优化的前提下,这种负载冗余消除有着更加重要的意义。
3.参数自动调整(parameter auto-tuning)
参数自动调整专门测试关键性能参数的不同配置,包括将数据放置在各种 GPU/CPU 存储器上,不同的数据平铺大小以及每个处理单元上每个 DNN 层的循环置换的策略,从而为生成最优的模型执行代码扫清了障碍。
总而言之,压缩-编译协同设计方法允许编译器将剪枝后的内核视为特殊模式,不仅可以实现模型的高精度与高压缩率,还可以有效地将卷积核模式转换为性能上的提升。
结语
由此看来,工业界所争相追逐的硬件加速器是否真是AI发展的决定性因素依然有待商榷。CoCoPIE作为一个很好的例子,向我们证明了,我们还是可以在现有的商业计算设备上实现AI,并且提供甚至比专业的AI硬件加速器更高的加速效果以及能量效率。这能够扩展 AI 在边缘计算设备上的能力,并且改变人们对终端设备上实现实时 AI 就必须采用专业的特殊 AI 硬件的认知。AI应用的软件优化潜力仍未得到充分开发,软件依然可能成为AI时代的业界主导。
无需专业硬件加速器,CoCoPIE压缩编译协同设计软件算法方案可以在数十亿的现有的移动设备以及数万亿的大有可为的物联网设备上,快速实现多种AI应用的实时化以及部署,产生巨大的商业价值。
本文的技术详情请见:
1)该文涵盖了完整的CoCoPIE的概览:
https://arxiv.org/abs/2003.06700
2)以下网站展示了CoCoPIE在现有的移动设备上实现各种实时功能的视频分辨率提升:
B站:
https://www.bilibili.com/video/BV1XK41157Sf
Youtube:
https://www.youtube.com/watch?v=UqaRtG5EVR4
作者简介:
王言治是美国东北大学电子与计算机工程系助理教授。他在清华电子系和南加州大学拿到本科和博士学位。他的主要研究方向是深度神经网络的加速与安全性。他们的CoCoPIE压缩编译协同优化框架可以实现大多数神经网络在移动端的实时推理。他的文章广泛发表于各个顶会顶刊,包括机器学习方向AAAI,CVPR,ICML,ICCV,ICLR,IJCAI,ECCV等,电路与设计自动化方向DAC,ICCAD,ISSCC,FPGA等,计算机系统方面ASPLOS,ISCA,MICRO,HPCA,CCS,VLDB,PLDI,ICS,PACT等。他的文章引用超过7200次,得过Google,Mathworks, Intel等研究奖项,得过4项最佳论文奖,另外10次提名,多次设计竞赛奖项。他的研究工作被媒体广泛报道和引用超过400次。他的多位学生已经在各个学校担任教职,包括康涅狄格大学,克莱姆森大学等,工作单位包括谷歌、脸书、腾讯、滴滴(超新星员工)。