当前位置: 首页 > 科技赋能

剪枝需有针对性,快手&罗切斯特大学提出基于能耗建模的模型压缩

时间:2024-05-20 00:42:31 科技赋能

近期,快手Y-Tech西雅图AI实验室与罗切斯特大学等研究人员合作,提出模型压缩基于能源消耗模型。

压缩方法,他们的两篇同源论文分别被ICLR和CVPR接收。

在这篇文章中,我们将介绍这种新模型压缩的核心思想和主要实践。

也许是时候让神经网络压缩朝着一个目标前进了。

模型压缩的应用目前,大部分手机应用都会进行模型压缩,因为无论是能耗、效率还是推理速度,都需要满足很多条件才可以投入使用。

无论您是将深度学习模型部署到云端还是移动设备,模型压缩都是必不可少的。

快手Y-Tech西雅图AI团队成员教授表示,部署到手机上的模型,如美颜相机、视频人脸识别、手势识别等应用,都会进行模型压缩。

重点是减小模型体积,缩小模型尺寸。

能耗,保证推理效率。

部署到服务器也面临类似的问题,因为每秒有数千个调用请求,而这些请求需要在指定时间内得到响应。

例如,更新推荐视频时,快手服务器收到请求后需要立即计算,将最合适的Top-N视频反馈给客户端。

这种响应甚至需要控制在几毫秒之内,才能满足用户良好的体验。

由于有很多实际需求,快手尝试构建更高效、更有目的的模型压缩算法。

在本文提出的两篇论文中,他们以能耗作为约束,构建了更高效、更合理的压缩方法。

虽然论文以能耗为目标,但实际上可以改为推理时间等不同的指标,因此这类神经网络压缩方法具有更广泛的应用。

除了这种适合多种任务的模型压缩之外,快手还将提出新的方法来构建更紧凑的神经网络,这本质上也是一种模型压缩。

例如,在Interspeech的口头论文中,语音组提出了一个可以使用上下文信息的门控循环单元。

该模型可以以极低的延迟为快手提供语音识别、语音特效、语音评论等应用。

神经网络压缩的新视角 在模型压缩方法中,最常见的是剪枝、量化和知识蒸馏。

我们认为,当参数和计算量减少时,模型的能耗和推理延迟也会减少。

但事实上,它们并不是简单地与能耗等测量值成正比,因此这种“想当然”的做法并不是最佳解决方案。

例如,在模型剪枝中,我们希望删除单个不重要的神经元连接,或者直接删除一组不重要的连接(通道级剪枝)。

通常,这种剪枝只注重减少参数数量(或模型大小)和计算复杂度,而不考虑硬件条件或具体能耗等约束。

刘霁说,经典模型压缩有一个隐含的假设:“在不同层删除一条边所节省的能量,或者说效率的提高,是等价的”。

然而,由于物理硬件的复杂性,这个基本假设并不实际。

上述并不绝对正确。

有时,大模型可能比小模型消耗更少的能量或花费更少的时间进行推理。

物理硬件实际上非常复杂。

如果我们用能耗作为约束,它会由几部分组成:计算和数据加载引起的能耗。

算法工程师一般只关注计算复杂度,通常不太关注数据加载的能耗。

因此,刘霁说:“以前的研究工作对硬件本身关注不够,不同的硬件采用相同的压缩模型。

现在我们需要充分了解硬件,设计适合各种硬件的模型。

”刘霁表示,研究人员认为,目前的模型压缩缺乏方向性,即有明确目的的压缩。

这个方向对于当前的模型压缩研究非常重要。

他说:“与标准剪枝或量化等压缩方法相比,我们的研究重点是寻找指导模型剪枝或量化的目标。

标准方法只要求模型变得更小、更薄,但我们需要一个约束来引导优化模型,比如降低能耗或者减少模型推理时间”也就是说,我们应该在给定的能耗或者延迟约束下找到满足约束条件的最“准确”的模型。

为了引入这个约束,我们需要解决两个主要问题:如何对模型能耗或延迟进行建模;如何解决这个约束优化问题。

针对这两个问题,快手 Y-Tech 和罗彻斯特大学最近提出了两套解决方案。

他们同源,都被 ICLR 和 CVPR 这两个顶级会议接受。

以能耗为约束,表明该模型压缩框架可以更有效地进行剪枝以满足各种应用。

基于能量的模型压缩 总的来说,这两篇论文都考虑了如何设计一个深度神经网络,以最大限度地提高给定能量消耗的准确性。

这两篇论文都将这种能耗约束添加到优化过程中,并学习如何通过端到端方法执行更有效的修剪。

论文:Energy-Constrained Compression for Deep Neural Networks via Weighted Sparse Projection and Layer Input Masking (ICLR) 论文地址:Energy-Constrained Deep Neural Network Compression via a Bilinear Regression Model (CVPR) 论文地址:那篇文章研究了core 硬件决定了大致的能耗。

这种GPU等芯片的分析方法可以快速计算出不同剪枝网络的能耗,以指导剪枝过程。

CVPR文章使用了我们更熟悉的数据驱动方法,希望模型能够学习不同网络和特定能耗之间的关系。

对于约束优化方法,其解决方案并不广为人知。

目前大多数深度学习都是无约束优化,可以通过直接调用各种优化器来解决。

相比之下,我们没有成熟的约束优化方法的优化器,很多需要根据具体问题实现新的优化方法。

正如刘霁教授所言:“不是大家没有从约束的角度考虑过模型压缩,但是带约束的优化确实需要更多的技巧和方法,需要我们更深入的工作来解决这些问题。

”总体而言,基于能耗的模型压缩流程如图1所示的ECC论文:ECC通过数据驱动对能耗进行离线建模,然后应用于约束在线优化过程。

能耗直接建模 如前所述,能耗建模可以通过数学分析来完成,但这需要对硬件有足够的了解。

在ICLR论文中,刘霁等研究人员重点讨论了如何对卷积层和全连接层的能耗进行建模,因为它们在推理过程中占据了90%以上的执行时间和能耗。

其他模块的能耗相对较小,可以近似视为一个小常数。

神经网络的推理能耗与硬件底层架构有关。

本文研究TPU、Volta GPU等硬件使用的矩阵运算方法脉动阵列(systolic array)。

对这个硬件的能耗进行建模,最终可以计算出不同模型的能耗。

以下是计算矩阵乘法时的主要能耗,其中脉动阵列包含一些可以执行乘法累加运算(MAC)的计算单元。

(总能耗主要可以分为MAC计算能耗和数据读写能耗,本文整体建模就是为了弄清楚模型稀疏度如何影响这两部分的能耗。

)由于多样性和硬件的复杂性,能耗的分析建模通常并不容易,而且机器学习研究人员并不了解底层硬件。

为此,在CVPR最近提出的ECC中,Y-Tech团队提出了另一种“更美观”的数据驱动方法。

刘霁和教授表示,这种方法的核心思想是:“给定一个网络,我们随机选择每一层的节点数量,然后把这样的模型放到硬件中测试它的能耗或者延迟,这样我们可以构建一个非常全面的数据集,如果基于这个数据集使用模型进行建模,就可以了解神经网络与能耗之间的关系。

”值得注意的是,虽然这两种方法都是建立稀疏性和能耗。

神经网络。

然而,第一篇ICLR论文主要通过权重级别的细粒度剪枝获得稀疏性,第二篇CVPR论文主要通过通道级别的粗粒度剪枝获得稀疏性。

除了剪枝之外,这里还可以同时使用量化等方法。

不过Channel级剪枝更适合各种硬件,我们不需要为其准备专门的硬件架构。

在第二个 ECC 中,研究人员通过双线性模型和构建的数据集对稀疏性和能耗之间的关系进行建模。

通过将硬件平台视为黑匣子,该 DNN 能耗模型可以移植到不同的硬件架构。

此外,由于双线性模型是可微的,学习过程极其简单,传统的基于梯度的方法就足够了。

具体来说,对于能耗模型ε(s),可微的目标函数可以表示为: 其中ε(s)表示给定稀疏度s下的真实能耗,我们希望使用双线性函数f(s)近似实际能源消耗。

一般来说,DNN层级的能耗受到输入通道数和输出通道数的影响,相当于当前层和下一层的稀疏度。

因此 s 可以用双线性模型简单地建模:其中 a_0 到 a_j 是可学习参数,|U|代表级别数。

注意偏置项常数a_0。

刘霁和教授表示:“我们收集的硬件平台数据会包含一些基本的能源消耗,这部分与模型推理无关。

因此,双线性模型中的常数项可以很好地预测这些能源。

”通道级剪枝的能耗也非常合理,因为DNN在推理过程中的算术运算总数大致是双线性形式。

刘霁和教授表示,其他压缩方法可能不适合双线性模型,但我们可以使用神经网络等非线性模型来对能耗进行建模。

但在这种情况下,双线性模型由于其简单性和紧凑性而非常有效。

最后,考虑到硬件和神经网络的结合,ECC中能耗模型的构建完全离线完成,没有运行时开销。

约束优化如果我们使用能耗模型作为剪枝操作的指导,那么我们可以构造一个约束优化过程。

两篇论文的解决方案并不相同。

刘霁和教授说:“约束优化方法一般有几种常见的解决方案。

首先,像ICLR论文一样,采用Projection方法,即先执行SGD,然后执行Projection将解映射到约束条件来强制其满足条件,如果约束条件复杂,那么Projection可能会很难计算,此时主要介绍CVPR文章中使用的ADMM+ Adam解决方案。

当然,这里只简单介绍一下核心思想,详细的更新过程请参考原论文。

对于 Channel-level 的权值剪枝,首先我们需要形式化地表达整个约束优化问题:因为。

ADMM方法不能直接使用,我们需要用多个简单约束来代替复杂的约束,其中,我们希望最小化给定权重W的损失函数,并且每层的权重w需要满足一定程度的稀疏性,并且这些稀疏性需要满足总体能源消耗限制。

刘霁教授表示,ADMM本质上是根据约束条件的满足程度来给予惩罚:如果解满足约束条件,那么就不会在解中添加惩罚。

如果解决方案不满足约束条件,则根据不满意程度进行惩罚。

让解满足约束条件。

因此,从某种意义上来说,ADMM可以看作是一种特殊的增广拉格朗日乘子方法。

我们熟悉拉格朗日乘子法,因此上述方程2可以等价地构造为增广拉格朗日函数的极小极大问题:其中新引入的y和z分别是方程2b和2。

2c, L 的对偶变量是增广拉格朗日函数:即 L(W, s, y, z) := l(W) + L_1(W, s, y) + L_2(s, z)。

对于ADMM来说,基本步骤是使用Adam等SGD类的迭代方法来更新权值,但是这个更新会添加一个“惩罚项”L_1,即更新权值时,希望满足一定的权重稀疏约束。

其次,在更新稀疏度s时,由于L_1和L_2这两项(2b和2c)与稀疏度s有关,SGD可以直接最小化这两项并更新s。

最后,只需按照拉格朗日乘子法的常规解法更新对偶变量y和z即可。

我们可以直观地理解,如果不满程度越大,对偶变量就会增大,给予的惩罚也就会越大。

下面是增广拉格朗日函数的两个子项L_1和L_2的表达式: 刘霁和教授说,L_1和L_2的第一项可以看成二阶惩罚项,其中“+”号表示满足条件不会有惩罚,只有不满足条件的解决方案才会受到惩罚。

第二项可以看作是一阶惩罚项,如果满足条件的话甚至还有“奖励”(惩罚项为负)。

另外,我们还可以从拉格朗日乘子法的角度理解,前一项代表增广拉格朗日函数项,后一项一般代表拉格朗日函数项。

解决了这个约束优化问题后,有目的的剪枝就不是问题了。

最后,两篇论文的实验结果表明,在不同硬件上压缩不同神经网络的能耗明显低于其他方法。

有兴趣的读者可以参考原文。

头图来源:视觉中国 本文经机器之心授权发布。

如需转载,请联系原作者。