作者 | 王言治,美国东北大学电子与计算机工程系助理教授 出品 | 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应用(包括实时风格转换,实时视频上色,实时超分辨率)。 利用CoCoPIE框架在手机上实现YOLOv4物体检测 利用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在现有的移动设备上实现的视频分辨率提升: 作者简介: 王言治是美国东北大学电子与计算机工程系助理教授。他在清华电子系和南加州大学拿到本科和博士学位。他的主要研究方向是深度神经网络的加速与安全性。他们的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次。他的多位学生已经在各个学校担任教职,包括康涅狄格大学,克莱姆森大学等,工作单位包括谷歌、脸书、腾讯、滴滴(超新星员工)。

备注:部署

模型压缩与应用部署交流群

模型压缩、网络压缩、神经网络加速、轻量级网络设计、知识蒸馏、应用部署、MNN、NCNN等技术,

若已为CV君其他账号好友请直接私信。

我爱计算机视觉

微信号:aicvml

QQ群:805388940

微博知乎:@我爱计算机视觉

投稿:amos@52cv.net

网站:www.52cv.net

在看,让更多人看到  

模型部署到移动端_模型压缩+编译器优化,使AI算法在移动端性能超越专用硬件...相关推荐

  1. 模型压缩+编译器优化,使AI算法在移动端性能超越专用硬件

    作者 | 王言治,美国东北大学电子与计算机工程系助理教授 出品 | AI科技大本营(ID:rgznai100) 近年来,机器学习(Machine Learning)领域的研究和发展可谓是与日俱新,各式 ...

  2. 怎么把python模型部署到线上_如何将机器学习模型成功部署到.Net环境中

    [IT168 技术]Python和R语言是在数据工程师间最流行的编程语言,但是,它并不能适用于应用程序构建的所有部分.这也就是你为什么有时需要找到一种方法,将Python或R编写的机器学习模型部署到基 ...

  3. revit模型怎么在手机上看_模型的查看和定位-Revit基础教程

    了解如何打开视图并定位到模型的不同区域. Revit 文件是建筑的三维模型. 二维视图是是模型的切片,显示楼层平面.立面.剖面或详图视图. "项目浏览器"列出并提供定位到不同的视图 ...

  4. python算法教程百度云_如何用免费GPU学习AI算法?这篇算法资源大集锦别错过

    飞桨开发者投稿 上一次写了篇薅GPU百度AI Studio计算资源的文章,收到很多AI算法初学者私信,问我能不能补充一些AI Studio的学习资源.有求必应向来是我的风格,于是我加入了AI Stud ...

  5. python训练模型、如何得到模型训练总时长_模型训练时间的估算

    模型训练时间的估算 昨天群里一个朋友训练一个BERT句子对模型,使用的是CPU来进行训练,由于代码是BERT官方代码,并没有显示训练需要的总时间,所以训练的时候只能等待.他截图发了基本的信息,想知道训 ...

  6. office移动端_阿里云 Teambition 网盘产品快讯:移动端正式版即将上线,体验将大幅提升...

    据悉,阿里云 Teambition 网盘团队近期再次公布了产品进展,其中特别提到移动端即将在 11 月 20 日正式上线. 对于最近风特别大的阿里云 Teambition 网盘,你体验上了吗? 据了解 ...

  7. 玩客云pc端_玩客云电脑客户端-玩客云pc端下载 v1.4.5.112官方版--pc6下载站

    玩客云pc端是一款功能全面的云盘共享工具,拥有畅快下载.随存随取.文件管理.远程操控.多媒体娱乐等多种实用功能,是一款专为年轻人而设计的私人云盘,为您提供高品质数字娱乐生活.. 相关软件软件大小版本说 ...

  8. 玩客云pc端_玩客云电脑客户端-玩客云PC端 V1.4.5.112 免费安装版

    玩客云电脑客户端|玩客云PC端是一款功能实用的私人云盘共享辅助工具.玩客云如何连接电脑并通过电脑来访问玩客云空间,玩客云电脑直接访问,玩客云PC端拥有畅快下载.随存随取.文件管理.远程操控.多媒体娱乐 ...

  9. 15分钟实现AI端计算模型训练、加速与部署 | 百度EasyDL公开课

    主讲人 | 阿达 百度高级研发工程师 量子位 整理编辑 | 公众号 QbitAI 端计算模型目前已应用到各行业的AI落地实践中,如部署在野外气象观测点用于环境监测,以及响应垃圾分类政策用来打造智能垃圾 ...

最新文章

  1. AI提高药物发现效率 | ML,Supercomputers and Big Data
  2. 论文图片误用?AI:这条路已被我堵死了
  3. java51_Java运行 Unsupported major.minor version 51.0 错误
  4. malloc申请一维动态数组的错误
  5. 单片机c语言应用100例第3版课后答案,单片机C语言应用100例(第3版)(含光盘1张)...
  6. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~...
  7. 测试丢包_入行游戏测试之弱网测试工具
  8. VMware NSX词汇表
  9. python最好用的IDE及查看源码的方法
  10. 初始化列表和构造函数内赋值的区别
  11. 5款Mac必备的Safari扩展
  12. TeamView for Linux是这样实现的!
  13. 编程语言与他背后的故事
  14. 百度文库免费下载(附:分享一些有趣的网站,最后一个可以免飞下载百度文库)
  15. 百度地图api使用时标注图标显示不出来
  16. (44.1)【APP应用漏洞发现】抓包工具、协议分析、逆向工程
  17. android simpleperf工具介绍
  18. tinymce富文本框踩坑
  19. 华为鸿蒙认证测试题,你能答对几道?
  20. 遭遇腾讯SOSO爬虫攻击

热门文章

  1. eNSP 动态路由(RIP)
  2. vue3.0 php,使用Vue3.0收获的知识点(一)
  3. 新装oracle密码过期,Oracle 11g密码过期问题及解决方案
  4. 搞懂全局变量、外部变量、静态全局变量的区别
  5. 一个BP神经网络的完整matlab代码(含模型公式提取)
  6. Laravel 主题模板功能扩展包, 这可能是我用过最优雅的 Laravel 主题扩展插件了
  7. luckysheet打印按钮功能实现,及重写getScreenshotNew打印截图支持插入图片及图表
  8. Java中面向对象三大特征总结
  9. oracle截取4000字节,Oracle 插入超4000字节的CLOB字段的处理方法
  10. altas pf4000说明书_Atlas 阿特拉斯Power Focus 4000