神经网络压缩与加速竞赛双项冠军技术解读 2019 NeurIPS (神经网络压缩算法)
雷锋网AI开发者讯,日前,神经信息处理系统大会(NeurIPS 2019)于12月8日至14日在加拿大温哥华举行,中国科学院自动化研究所及其南京人工智能芯片创新研究院联合团队在本次大会的神经网络压缩与加速竞赛(MicroNet Challenge)中获得双料冠军!
以模型压缩和加速为代表的深度学习计算优化技术是近几年学术界和工业界最为关注的焦点之一。随着人工智能技术不断地落地到各个应用场景中,在终端上部署深度学习方案面临了新的挑战:模型越来越复杂、参量越来越多,但终端的算力、功耗和内存受限,如何才能得到适用于终端的性能高、速度快的模型?
由Google、Facebook、OpenAI等机构在NeurIPS2019上共同主办的MicroNet Challenge竞赛旨在通过优化神经网络架构和计算,达到模型精度、计算效率、和硬件资源占用等方面的平衡,实现软硬件协同优化发展,启发新一代硬件架构设计和神经网络架构设计等。
MicroNet Challenge竞赛对于人工智能软件、硬件的未来发展都有着非比寻常的意义,此次不仅集结了MIT、加州大学、KAIST、华盛顿大学、京都大学、浙大、北航等国内外著名前沿科研院校,同时还吸引了ARM、IBM、高通、Xilinx等国际一流芯片公司的参与。
MicroNet Challenge竞赛包括ImageNet图像分类、CIFAR-100图像分类和WikiText-103语言模型三个子任务。来自自动化所程健研究员实验室的团队参加了竞争最激烈的ImageNet和CIFAR-100两个子赛道的比拼。历经五个多月的厮杀,团队一举包揽了图像类的全部两项冠军。
团队结合极低比特量化技术和稀疏化技术,在ImageNet任务上相比主办方提供的基准模型取得了20.2倍的压缩率和12.5倍的加速比,在CIFAR-100任务上取得了732.6倍的压缩率和356.5倍的加速比,遥遥领先两个任务中的第二名队伍。
同时,受组织方的邀请,团队在大会以“A Comprehensive Studyof Network Compression for Image Classification”为主题详细介绍了相关的量化和稀疏化压缩和加速技术。
针对比赛任务,团队在报告中给出解决办法:采用量化和稀疏化技术,将深度学习算法模型进行轻量化和计算提速,以大幅降低算法模型对算力、功耗以及内存的需求,让低端设备实现人工智能方案。团队成员冷聪副研究员表示,量化及稀疏化技术也是深度学习软、硬件协同加速方案的突破口。通过将其与人工智能硬件架构设计紧密结合,可以进一步降低人工智能技术落地难度,让AI更为易得易用。
NeruIPS 2019 MicroNet Challenge神经网络压缩与加速竞赛双项冠军技术解读
赛题介绍
本比赛总共包括三个赛道:ImageNet分类、CIFAR-100分类、WikiText-103语言模型。在三个赛道上,参赛团队要求构建轻量级网络,在精度满足官方要求的条件下,尽可能降低网络计算量和存储。对于ImageNet分类,要求至少达到75%的top-1精度,而对于CIFAR-100,top-1精度需要达到80%以上。
评测指标
最终评分指标包括存储压缩和计算量压缩两部分,均采用理论计算量和存储进行计算。
对于存储,所有在推理阶段需要使用的参数均需要计算在内,比如稀疏化中的mask、量化中的字典、尺度因子等。对于存储,32比特位算作一个参数,低于32比特的数按照比例计算,例如8比特数算作1/4个参数。
对于计算量,乘法计算量和加法计算量分别计算。对于稀疏而言,稀疏的位置可以认为计算量为0。对于定点量化,32比特操作算作一个操作,低于32比特的操作按照比例计算。操作的比特数认为是两个输入操作数中较大的那一个,例如一个3比特数和一个5比特数进行计算,输出为7比特数,那么该操作数为5/32。
对于ImageNet,以MobileNet-V2-1.4作为基准(6.9M参数,1170M计算量,精度大约为75%)。所以,如果参数量记为Param,计算量记为Operation,则最终评分Score为:
对于CIFAR-100,以WideResNet-29-10为基准(36.5M参数,10.49B计算量,精度大约为80%),评分公式为:
解决方案
我们主要采用稀疏化+量化的方式,主要包括模型选择、网络剪枝、定点量化、算子融合等操作,实现大规模稀疏和极低比特压缩。
首先是模型选择,复杂的模型往往具有更高的精度,参数量和计算量较大,但同时压缩空间也比较大;轻量级模型精度相对较低,但参数量和计算量相对较小,同时对网络压缩也比较敏感,因此需要再模型复杂度和精度之前进行权衡。我们选择轻量级、同时精度略高于比赛要求的网络。最终在ImageNet上选择了MixNet-S模型(精度75.98%),在CIFAR-100上选择了DenseNet-100(精度81.1%)。
在确定好模型之后,我们先对网络进行剪枝,去掉不重要的参数量和计算。在这之前,我们对每一层进行了鲁棒性分析。具体而言,对于每一层,我们进行稀疏度从0.1到0.9的剪枝,然后测试网络精度。图1显示了网络各层对不同稀疏度的影响,可以看出某几层对网络剪枝特别敏感,而其余一些层对剪枝却很鲁邦。基于此,我们确定了每一层的稀疏度,然后删除不重要的节点,再对剩余连接进行重新训练。我们可以实现在稀疏度大概为60%的情况下,精度损失只有0.4%。
图1 网络各层对剪枝操作的鲁棒性分析
在对网络进行剪枝以后,再对网络进行定点量化。我们采用了均匀量化策略,量化公式如下:
对于激活,每层引入一个浮点数尺度因子;而对于权值,每个3D卷积核引入一个浮点数尺度因子。在给定比特数的情况下,以上优化公式唯一的待求解参数就是尺度因子,即优化目标为 ,我们采用迭代优化的方式计算出每一层的尺度因子。在求解尺度因子之后,与网络剪枝类似,我们需要对网络进行微调来恢复精度,在网络微调阶段,我们保持尺度因子一直不变。通过以上方式,我们可以实现在激活7比特,参数大部分为3、4、5比特的情况下,网络精度损失为0.5个点,最终网络模型top-1精度为75.05%。
最后,我们进行了算子融合,把量化中的尺度因子、卷积层偏置、BN层参数等融合成一个Scale层,以进一步降低网络的存储和计算量。最终,我们的方法在ImageNet上只有0.34M参数和93.7M计算量,相对于基准模型实现20.2倍的压缩和12.5倍的加速;而在CIFAR-100上,我们的模型存储仅有49.8K,计算量为29.4M,相对于基准模型压缩732.6倍,加速365.5倍。
雷锋网AI开发者
原创文章,未经授权禁止转载。详情见 转载须知 。