夏乙 发自 凹非寺
量子位 出品 | 公众号 QbitAI

把深度学习模型压缩部署到手机上直接本地运行的趋势,愈演愈烈。从Google的TensorFlow Lite、苹果的Core ML,到小米今年6月推出的MACE,移动端深度学习框架几乎已成科技巨头标配。

可是,究竟用哪个框架?选哪个模型压缩算法?超参数怎样取值?众多工具摆到开发者面前的同时,问题也纷纷出现了。

腾讯AI Lab给出了一个答案:自动模型压缩框架PocketFlow

这个模型,腾讯自己已经用上了,最近还将开源。

全球首个自动模型压缩框架

PocketFlow被腾讯AI Lab称为世界首款自动化深度学习模型压缩框架,它集成了腾讯自己研发的和来自其他同行的主流的模型压缩与训练算法,还引入了自研的超参数优化组件,实现了自动托管式模型压缩与加速。

所谓“自动化”,就是说模型的压缩和加速过程都是自动完成的。就像Google AutoML用户不用自己选择模型架构一样,使用PocketFlow也不用自己选择模型压缩算法和超参数取值,只要设定对性能指标的期待,让框架自己完成剩下的工作就好。

人类需要费时费力调参才能达到的性能,对于PocketFlow来说,只需要十几次迭代。

不仅省人工,效果还不错。

PocketFlow经过100次迭代后搜索得到的超参数组合,可以降低约0.6%的精度损失;通过使用超参数优化组件自动地确定网络中各层权重的量化比特数,PocketFlow在对用于ImageNet图像分类任务的ResNet-18模型进行压缩时,取得了一致性的性能提升;当平均量化比特数为4比特时,超参数优化组件的引入可以将分类精度从63.6%提升至68.1%(原始模型的分类精度为70.3%)。

腾讯展示了PocketFlow对ResNet、MobileNet等CNN网络进行压缩和加速的效果。

在CIFAR-10数据集上,PocketFlow压缩的ResNet-56模型,实现了2.5倍加速下分类精度损失0.4%,3.3倍加速下精度损失0.7%,且显著优于未压缩的ResNet-44模型。

在ImageNet数据集上,PocketFlow可以把MobileNet模型压缩到更小,但分类精度基本不变。在分类精度毫不逊于Inception-V1、ResNet-18等模型的条件下,PocketFlow压缩的MobileNet模型大小只有它们的20 - 40%。

模型压缩算法+超参数优化

PocketFlow框架是怎样压缩深度学习模型的?

靠的是两部分组件:一是模型压缩/加速算法,二是超参数优化器

将未压缩的原始模型输入到PocketFlow框架中,设置期望的性能指标,比如模型的压缩、加速倍数等等,PocketFlow就可以开始工作了。

在每一轮迭代过程中,超参数优化器选取一组超参数取值组合,之后模型压缩/加速算法组件基于该超参数取值组合,对原始模型进行压缩,得到一个压缩后的候选模型;基于对候选模型进行性能评估的结果,超参数优化组件调整自身的模型参数,并选取一组新的超参数取值组合,以开始下一轮迭代过程;当迭代终止时,PocketFlow选取最优的超参数取值组合以及对应的候选模型,作为最终输出,返回给开发者用作移动端的模型部署。

在整个过程中,发挥作用的一共可以总结为六大组件:

  • 通道剪枝(channel pruning)组件:
    在CNN网络中,通过对特征图中的通道维度进行剪枝,可以同时降低模型大小和计算复杂度,并且压缩后的模型可以直接基于现有的深度学习框架进行部署。在CIFAR-10图像分类任务中,通过对ResNet-56模型进行通道剪枝,可以实现2.5倍加速下分类精度损失0.4%,3.3倍加速下精度损失0.7%。
    这一组件的背后,是腾讯AI Lab团队提出的基于判别力最大化准则的通道剪枝算法,相关论文Discrimination-aware Channel Pruning for Deep Neural Networks发表于NIPS 2018,即将公布。

  • 权重稀疏化(weight sparsification)组件:
    通过对网络权重引入稀疏性约束,可以大幅度降低网络权重中的非零元素个数;压缩后模型的网络权重可以以稀疏矩阵的形式进行存储和传输,从而实现模型压缩。对于MobileNet图像分类模型,在删去50%网络权重后,在ImageNet数据集上的Top-1分类精度损失仅为0.6%。

  • 权重量化(weight quantization)组件:
    通过对网络权重引入量化约束,可以降低用于表示每个网络权重所需的比特数;团队同时提供了对于均匀和非均匀两大类量化算法的支持,可以充分利用ARM和FPGA等设备的硬件优化,以提升移动端的计算效率,并为未来的神经网络芯片设计提供软件支持。以用于ImageNet图像分类任务的ResNet-18模型为例,在8比特定点量化下可以实现精度无损的4倍压缩。

  • 网络蒸馏(network distillation)组件:
    对于上述各种模型压缩组件,通过将未压缩的原始模型的输出作为额外的监督信息,指导压缩后模型的训练,在压缩/加速倍数不变的前提下均可以获得0.5%-2.0%不等的精度提升。

  • 多GPU训练(multi-GPU training)组件:
    深度学习模型训练过程对计算资源要求较高,单个GPU难以在短时间内完成模型训练,因此团队提供了对于多机多卡分布式训练的全面支持,以加快使用者的开发流程。无论是基于ImageNet数据的Resnet-50图像分类模型还是基于WMT14数据的Transformer机器翻译模型,均可以在一个小时内训练完毕。
    另外,团队还提出了一种误差补偿的量化随机梯度下降算法,通过引入量化误差的补偿机制加快模型训练的收敛速度,能够在没有性能损失的前提下实现一到两个数量级的梯度压缩,降低分布式优化中的梯度通信量,从而加快训练速度,相关论文Error Compensated Quantized SGD and its Applications to Large-scale Distributed Optimization发表于ICML 2018。
    论文地址:http://proceedings.mlr.press/v80/wu18d.html

  • 超参数优化(hyper-parameter optimization)组件:
    多数开发者对模型压缩算法往往不甚了解,但超参数取值对最终结果往往有着巨大的影响,因此团队引入了超参数优化组件,采用了包括强化学习等算法以及AI Lab自研的AutoML自动超参数优化框架来根据具体性能需求,确定最优超参数取值组合。例如,对于通道剪枝算法,超参数优化组件可以自动地根据原始模型中各层的冗余程度,对各层采用不同的剪枝比例,在保证满足模型整体压缩倍数的前提下,实现压缩后模型识别精度的最大化。

开源在即,腾讯先用为敬

我们前面也提到过,腾讯AI Lab计划将PocketFlow开源。现在,这个框架已经用在了腾讯自己的移动端业务里。

腾讯举了一个栗子:手机拍照App里的人脸关键点定位模型。他们用PocketFlow对这个模型进行了压缩,在保持定位精度不变的同时,降低了计算开销,在不同的移动处理器上取得了25%-50%不等的加速效果。

是不是有点期待?

加入社群

量子位AI社群28群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;

此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。

进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

移动端机器学习模型压缩也自动化了:腾讯新框架为自家模型加速50%相关推荐

  1. 腾讯AI Lab开源世界首款自动化模型压缩框架PocketFlow:将深度学习装进口袋

    来源:腾讯AI 实验室 腾讯AI Lab机器学习中心今日宣布成功研发出世界上首款自动化深度学习模型压缩框架--PocketFlow,并即将在近期发布开源代码.这是一款面向移动端AI开发者的自动模型压缩 ...

  2. 深度学习实战——模型推理优化(模型压缩与加速)

    忆如完整项目/代码详见github:https://github.com/yiru1225(转载标明出处 勿白嫖 star for projects thanks) 目录 系列文章目录 一.实验思路综 ...

  3. 浅谈模型压缩之量化、剪枝、权重共享

    之前陆陆续续看了许多模型压缩相关的文章,自己业务中也接触过一些相关的客户,今天周末没事做,把模型压缩相关的内容整理一下做个分享.可能更多地从科普的角度去介绍,因为我也不是专业做这方面技术的研究. 首先 ...

  4. 【论文】AMC:AutoML用于移动设备上的模型压缩和加速

    摘要 模型压缩是在计算资源有限且功率预算紧张的移动设备上高效部署神经网络模型的有效技术.传统的模型压缩技术依赖于手工制作的特性,需要领域专家在模型大小.速度和精度之间进行权衡,以探索大的设计空间,这通 ...

  5. 模型压缩整理2020.5.6

    https://www.bilibili.com/video/BV1LE411Z76J?p=2 AI领域最有趣的老师李宏毅:模型压缩系列讲解 模型压缩 1.剪枝的理由 不用小的network直接训练是 ...

  6. 137% YOLOv3加速、10倍搜索性能提升!百度飞桨推出模型压缩神器

    深度学习模型压缩,又有利器问世. 最新消息,历经一年四个版本打磨之后,百度推出最新深度学习模型压缩工具PaddleSlim1.0. 不仅囊括了深度学习模型压缩中常用的量化.剪裁.蒸馏.模型结构搜索.模 ...

  7. PyTorch 深度学习模型压缩开源库(含量化、剪枝、轻量化结构、BN融合)

    点击我爱计算机视觉标星,更快获取CVML新技术 本文为52CV群友666dzy666投稿,介绍了他最近开源的PyTorch模型压缩库,该库开源不到20天已经收获 219 颗星,是最近值得关注的模型压缩 ...

  8. 【模型压缩】谷歌高被引知识蒸馏论文笔记

    论文名称:Distilling the Knowledge in a Neural Network 论文下载:https://arxiv.org/abs/1503.02531 论文作者:Geoffre ...

  9. 对抗性鲁棒性与模型压缩:ICCV2019论文解析

    对抗性鲁棒性与模型压缩:ICCV2019论文解析 Adversarial Robustness vs. Model Compression, or Both? 论文链接: http://openacc ...

最新文章

  1. linux 脚本 ,shell中的与
  2. 最小二乘法多项式曲线拟合原理与实现--转
  3. sqlserver2000内存突破4g_酷比魔方iPlay30评测:10.5英寸大屏,支持4G全网通
  4. 修改linux系统iqn,linux iSCSI target配置全过程
  5. TransactionScope只要一个操作失败,它会自动回滚,Complete表示事务完成
  6. 【Linux】一步一步学Linux——tput命令(232)
  7. cpta 好像有漏洞
  8. NTA高性能Flow负载均衡及其应用
  9. 媒智科技--深度学习算法Python后台开发--热招中~
  10. html5-样式表的使用-初步
  11. python 邻接矩阵_阿里巴巴举荐,Python视频,免费分享,用python求解特征向量和拉普拉斯矩阵...
  12. RDL报表制作和发布
  13. “21天好习惯“第一期-2
  14. 高中数学解析几何求轨迹常用的六种解题方法(实用干货)
  15. 思科关闭日志_Cisco命令日志
  16. redis与数据库同步的解决方案
  17. VC2005-应用程序正常初始化失败-0xc0150002
  18. 方维直播源码对接新版腾讯云通信对接新版腾讯即时通信IM
  19. pg_stat_statements
  20. 微信公众号自定义菜单修改

热门文章

  1. 战不胜抖音的腾讯微视,即将被判“死刑”? | 畅言
  2. k3s 卸载_Mac-Homebrew安装/卸载/更换国内镜像源
  3. 计算机网络系统组播功能_全国计算机等级考试四级计算机网络考试大纲(最新版2018年版)...
  4. 支持pygame的python有哪些版本_完整构建文件支持PYGAME
  5. php获取ajax data,HTML 获取 PHP 接口数据(ajax)
  6. mysql无法连接10061错误1067_解决MySQL启动的error 2003和1067 10061错误问题
  7. 关于 Node 集群
  8. matlab怎么利用圆形度提取园,基于Matlab+GUI图像处理的物料粒度与圆形度测试.pdf...
  9. android 两列菜单,【Android】实战开发之ListView同一个item显示2列的实现方法(仿2列商品列表)...
  10. java obj1 = obj2_无障碍assertEquals(Object obj1,Object obj2),想怎么比较就怎么比较!! [ 光影人像 东海陈光剑 的博客 ]...