性能超越GPU、FPGA,华人学者提出软件算法架构加速AI实时化
作者 | 王言治,美国东北大学电子与计算机工程系助理教授
出品 | AI科技大本营(ID:rgznai100)
近年来,机器学习(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次。他的多位学生已经在各个学校担任教职,包括康涅狄格大学,克莱姆森大学等,工作单位包括谷歌、脸书、腾讯、滴滴(超新星员工)。
更多精彩推荐
GitHub多次霸榜,两个月拿下10000+Star,他说基础软件不开源必死无疑
达摩院NLP团队斩获六项世界冠军背后,让AI没有难懂的语言
万字长文总结机器学习的模型评估与调参 | 附代码下载
“Talk is cheap, show me the code”你一行代码有多少漏洞?
科普 | 定义 Eth2.0 中的验证者质量
相关文章:

PHP获取毫秒时间戳,利用microtime()函数
PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数的函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数的函数。php的毫秒是没有默认函数的,但提供了一个microtime()函数&am…

.NET中添加控件数组
作者:cuike519的专栏 http://blog.csdn.net/cuike519/添加控件数组 在.NET里面我好像没有找到有关于控件数组的说明,但是前两天偶在网上看到了一篇关于如何在.NET里面实现控件数组的文章(该文章请参看MSDN).记得大学的时候在使用VB的时候使用过控件数组,可是到了…
如何在机器学习的框架里实现隐私保护?
编者按:数据时代,人们从技术中获取便利的同时,也面临着隐私泄露的风险。微软倡导负责任的人工智能,因此机器学习中的隐私保护问题至关重要。本文介绍了目前机器学习中隐私保护领域的最新研究进展,讨论了机密计算、模型…

函数图像轻松画:教你用永中图象
函数图像轻松画:教你用永中图象 函数图像轻松画:教你用永中图象转载于:https://blog.51cto.com/premium/933220

c语言语系的命名风格和java系命名风格
c语言系的命名风格:单词之间使用下划线分隔。如上图。 java语言是另外一个系,javascript属于java语系(当年就是想借助java的名气所以命名javascript)。java语系是驼峰式命名法,如getElementById()。如果使用c语系命名风格则使用下划线分隔 ge…

全国IP地址分配表
xa.sn.cn,西安公众网,西安,陕西,CN,202.100.0.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.1.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.2.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.3.* xa.sn.cn,西安公众网,西安,陕西,CN,202.100.4.* xa.sn.cn,西安公众网,西安,陕西,C…
神同步!美国三地 Tesla 车主,自动驾驶都撞了警车
来源 | HyperAI超神经(ID:HyperAI)内容概要:上周在美国北卡州发生了一起交通事故,一辆自动驾驶模式下的 Tesla 撞击了停靠在路边的警车,虽未造成人员伤亡,但车辆损毁严重。事故调查中发现&#…

Q币才是腾讯真正的世界级产品
本文受《虚拟货币将是下一个大平台》启发而来。何玺认为,腾讯Q币本身就具有全球化虚拟货币的基因。 日前,有媒体报道了Pocket Change获得了由Google Ventures领投的500万美元A轮融资,使其融资总额达到640万美元。 Pocket Change是一个为Andro…

解决Office互操作错误检索COML类工厂中 CLSID为 {xxx}的组件时失败,原因是出现以下错误: 80070005...
Excel为例(其他如Word也适用)文件数据导入时报出以下错误: 检索COML类工厂中 CLSID为 {00024500-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误: 80070005,如图所示: 可以看到报出的异常类型为:UnauthorizedAcces…

再论制硬盘逻辑锁
姜卓睿 雷必武 一、序言 由于教学工作需要,本人在参看了贵刊98年第4期《硬盘逻辑锁技术研究及应用》与99年第3期《解开硬盘逻辑死锁的一种有效方法》的文章之后,决定以同类方法尝试一下,结果未获得成功,又“苦于”没有KV300 L …
我国科学家成功研制全球神经元规模最大的类脑计算机
来源 | 之江实验室(ID:zhejianglab)9月1日,浙江大学与之江实验室举办成果发布会,共同发布我国首台基于自主知识产权类脑芯片的类脑计算机(Darwin Mouse)。浙江大学校长吴朝晖院士出席并讲话。他…

批处理获取目录下所有文件名
由于要处理一些文件,找了个这样的批处理: 输出目录及子目录下所有的jpg图片的文件名,不含扩展名 1 echo off 2 cd.>List.txt 3 for /f "delims" %%i in (dir /s/a-d /b *.jpg) do >>List.txt echo %%~ni>>JustName.…

1001: 整数求和
描述:求两个整数之和输入:输入数据只包括两个整数A和B。输出:两个整数的和。样例输入:1 2样例输出:3考点:运算符代码: #include <stdio.h> int main() {int a,b;int c;scanf("%d",&a);scanf("%d",&b);cab;printf("%d",…

ASP.NET 2.0 中的新增安全功能
发布日期: 8/26/2004| 更新日期: 8/26/2004Stephen Walther Microsoft Corporation 适用于: Microsoft ASP.NET 2.0 Microsoft ASP.NET framework Microsoft SQL Server Microsoft Visual Studio .NET 摘要:ASP.NET 2.0 包含一些新…
GitHub 标星 20000+,国产 AI 开源从算法开始突破 | 专访商汤联合创始人林达华
作者 | 阿司匹林责编 | 李雪敬封图 | CSDN 下载自视觉中国作为已经有4000多名员工的AI独角兽,商汤的一举一动备受关注。从2018年开始,奔着“开源、统一、可复现”的目标,商汤开始建设人工智能算法的开源体系。当时,商汤联合创始人…

那些年,我们一起学过的汇编----之伪指令
弄懂了前面几篇关于基础的文章,下面就开始我们真正的汇编之旅了,在这一篇中我们着重来强调下汇编语言的伪指令。伪指令是汇编语言程序设计中的一个主要的部分,属于控制命令,在汇编语言中的数据定义、存储单元分配、指示程序结果等…

JavaScript-数据引用类型对象
1 <!DOCTYPE html>2 <html>3 <head lang"en">4 <meta charset"UTF-8">5 <title></title>6 </head>7 <body>8 <script>9 //按值传递:两个变量间赋值时,或将变量作为参数传入函数时,其实…
热点 | Excel不“香”了,数据分析首选Pyhton!
Excel一直在求职中有着不可动摇的地位无论是投行、咨询、四大曾经都会在JD中明确要求会Excel,而Excel称霸的时代已经过去!事实上,为了追求更高的效率和质量,他们开始使用比Excel更高效的Python,随后交易收入增长了15%。…

ASP.NET中实现打印
怎样才可以调用打印机进行打印并且对纸张类型进行设置呢? --------------------------------------------------------------- <OBJECT id"WebBrowser" height"0" width"0" classid"CLSID:8856F961-340A-11D0-A96B-00…
you have new email in /var/spool/mail/root/
有时在进入系统的时候经常提示You have new mail in /var/spool/mail/root 解决方法:修改系统配置文件/etc/profile,告诉系统不要去检查邮箱. 具体操作: 命令行输入:echo "unset MAILCHECK" >> /etc/profile 【把…

写时复制,写时拷贝,写时分裂,Copy on write
2019独角兽企业重金招聘Python工程师标准>>> 写时复制,写时拷贝,写时分裂 (Copy-on-write,简称COW)是计算机资源管理方面的一种优化技术,有着广泛的应用,比如内存管理(进…

C#生成pdf的源代码
作者:qieyj(温馨港湾) http://search.csdn.net/Expert/topic/1256/1256076.xml?temp.1866419//write by wenhui.orgusing System;using System.IO;using System.Text;using System.Collections; namespace PDFGenerator{ public class PDFGenerator{static fl…
迁移性好、多用途,港中文提出特征分离的无监督人类三维姿态表征
来源 | 我爱计算机视觉(ID:aicvml)本文将介绍一种基于特征分离的通用人类姿态特征的学习算法Unsupervised Human 3D Pose Representation with Viewpoint and Pose Disentanglement。该算法从无监督的特征分离过程中,习得了一个迁移性好、多用…

解決Linux下Android开发真机调试设备不被识别问题
为什么80%的码农都做不了架构师?>>> 在google找了不少关于这个的资料,各种添加和修改系统文件,但是我的defy依旧没有被识别。尼马的! 好吧,是我低估了Android的sdk的adb调试工具,其实简单的两个…

在Server 2003上部署IIS+PHP+MySQL配置清单
在Server 2003上部署IISPHPMySQL I.安装Windows Server 2003 将光盘放入光驱中,设置BIOS,从CDROM引导加载安装程序,等待启动; 设置注册信息,名字和公司组织名; 填写安装密钥; 设置远程连接数目&…
用Python打造一款文件搜索工具,所有功能自己定义
前言在日常的办公中,我们经常会从一堆不同格式的文件(夹)中搜索特定的文件,可能你是凭着记忆去找或是借助软件,但你有想过如何用Python实现吗?本文将基于几个常见的搜索操作讲解。扫描路径内的内容有些时候我们会希望在当前文件夹…

vlan间路由实验
路由与交换技术实验报告 实验7 vlan间路由实验 班级:130462 姓名:张欣国 学号:13046210 一、 实验目的 1. 了解vlan间路由的不同方法; 2. 了解路由备份; 二、 实验步骤与内容 1. 详细阅读操作过程,认真完…

.net中连接SYBASE的种种问题
作者:zwztu http://search.csdn.net/Expert/topic/1612/1612693.xml?temp.2369806首先如果用OLEDB连呢?如果用ASE 的OLEDB 提供者,那这个提供者哪里有下呢? 其次如果用MSDATASHAPE连,可以是可以,…

struts2中使用标签操作静态方法等
2019独角兽企业重金招聘Python工程师标准>>> 有的时候对<%%>特别敏感,不想用jsp的<% %>来调用java类中的静态方法,这时候我们可以用struts2的ognl标签来调用。 下面为struts2的配置文件: <struts><!-- ognl标…
5年5亿美金,华为昇腾如何构建全行业AI生态?
作者 | 阿司匹林出品 | CSDN(ID:CSDNnews)2018 年,在第三届 HUAWEI CONNECT(华为全联接大会)上,华为首次公布了 AI 战略与全栈全场景 AI 解决方案,其中包含全球首个覆盖全场景人工智能的华为昇腾…