加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

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

发布时间:2019-04-03 06:19:31 所属栏目:教程 来源:36氪
导读:编者按:本文来自“机器之心”,36氪经授权发布。 作者:思源 最近,快手 Y-Tech 西雅图 AI lab 联合罗切斯特大学等研究者提出了一种基于能耗建模的压缩方法,他们一脉相承的两篇论文分别被 ICLR 2019 和 CVPR 2019 接收。在这篇文章中,我们将介绍这种新

由于硬件的多样性和复杂性,对能耗进行分析建模通常并不容易,机器学习研究者对底层硬件也不是那么了解。为此在最近 CVPR 2019 提出的 ECC 中,Y-Tech 团队提出另一种「更优美」的数据驱动方法。刘霁教授表示这种方法的核心思想即:「给定一个网络,我们随机选择每一层的节点数,然后把这样的模型放到硬件测试它的能耗或延迟,这样就能构造一个很全面的数据集。如果再用某个模型根据这个数据集建模就能学会神经网络与能耗之间的关系。」

值得注意的是,这两种方法虽然都在建立神经网络稀疏性与能耗之间的关系,但第一篇 ICLR 2019 论文主要通过权重级的细粒度剪枝获得稀疏性,第二篇 CVPR 2019 论文主要通过 Channel 级的粗粒度剪枝获得稀疏性。除了剪枝,量化等方法在这里也可以同时使用。不过 Channel 级的剪枝更适用于各种硬件,我们不需要为它准备特殊的硬件架构。

在第二篇 ECC 中,研究者通过双线性模型和构造的数据集对稀疏性和能耗之间的关系进行建模。这种 DNN 能耗模型能移植到不同的硬件架构中,它只需要将硬件平台视为黑盒就行了。此外,因为双线性模型是可微的,所以学习过程也极其简单,使用传统基于梯度的方法就够了。

具体而言,对于能耗模型 ε(s),可微的目标函数可以表示为以下:

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

其中ε(s) 表示在给定稀疏性 s 情况下的真实能耗,我们希望用双线性函数 f(s) 逼近真实能耗。一般而言,DNN 层级的能耗是受输入通道数与输出通道数影响的,它们又相当于当前层和后一层的稀疏性。因此可以简单地用双线性模型为 s 建模:

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

其中 a_0 到 a_j 为可学习参数,|U| 表示层级数量。注意 a_0 这个偏置项常数,刘霁教授表示:「我们采集的硬件平台数据会包含一些基础能耗,这一部分是和模型推断无关的,因此双线性模型中的常数项很好地对这些能耗进行了建模。」

使用双线性建模 Channel 级剪枝的能耗也是很有道理的,因为 DNN 在推断过程中总的算术运算数大致上是一种双线性形式。刘霁教授表示其它压缩方法可能并不适合双线性模型,但是我们可以用神经网络等非线性模型对能耗建模。只不过在这个案例中因为双线性模型的简单和紧凑,它的效果非常好。

最后,给定硬件和神经网络的组合,ECC 中能耗模型的建立完全是离线完成的,它没有运行时开销。

带约束的最优化

如果我们将能耗模型作为剪枝操作的指导,那么就可以构建一个带约束的最优化过程。这两篇论文的解法并不相同,刘霁教授表明:「一般带约束的最优化方法有几种常见解法,首先如同 ICLR 那篇采用的是 Projection 方法,即先执行 SGD,然后执行 Projection 将解映射到约束中以令它强行满足条件。如果约束比较复杂,那么 Projection 可能很难计算,这个时候就需要 CVPR 那篇采用的 ADMM 算法了。」

这一部分主要介绍第二篇 CVPR 所采用的 ADMM+ Adam 解法,当然这里只简要介绍核心思想,详细的更新过程可参考原论文。对于 Channel 级的权重剪枝,首先我们需要形式化地表达整个带约束的最优化问题:

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

因为 ADMM 方法并不能直接使用,我们需要把复杂约束换为多个简单约束。其中我们希望在给定权重 W 的情况下最小化损失函数,且每一层的权重 w 都需要满足某种程度的稀疏性,而这些稀疏性又需要满足总体的能耗约束。

刘霁教授表示,ADMM 本质上会根据约束的满足程度给出一个惩罚:如果解满足约束,那么就不会给解加上惩罚,如果解不满足约束,那么惩罚会根据不满足程度变大而强行令解满足约束。所以一定意义上,ADMM 可以看作是一种特殊的增广拉格朗日乘子法。拉格朗日乘子法算我们比较熟悉的了,那么上面方程 2 可以等价地构造为增广拉格朗日函数的极小极大问题:

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

其中新引入的 y 和 z 分别是方程 2b 和 2c 的对偶变量,L 为增广拉格朗日函数:即 L(W, s, y, z) := l(W) + L_1(W, s, y) + L_2(s, z)。

对于 ADMM 而言,基本步骤还是使用 SGD 类的迭代方法如 Adam 更新权重,不过这一更新会加上一个「罚项」L_1,即在更新权重时希望它满足某个权重稀疏性的约束。其次在更新稀疏性 s 时,因为 L_1 与 L_2 两项(2b 和 2c)都与稀疏性 s 相关,所以 SGD 可直接极小化这两项而更新 s。最后,按照拉格朗日乘子法的常规解法,再更新对偶变量 y 和 z 就行了。我们可以直观理解为,如果不满足程度越大,那么对偶变量会增大,它们给出的惩罚也会变大。

如下所示为增广拉格朗日函数两个子项 L_1 与 L_2 的表达式:

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

刘霁教授表示,L_1 和 L_2 的第一项可以看成二阶的惩罚项,其中「+」号表示满足条件下是没任何惩罚的,只惩罚不满足条件的解。而第二项可以看作一阶的罚项,它在满足条件下甚至还有「奖励」(罚项为负)。另外,我们也可以从拉格朗日乘子法的角度理解,前一项表示增广拉格朗日函数项,后一项一般表示拉格朗日函数项。

解决这个带约束的最优化问题后,有目的地剪枝就不成问题了。最后,两篇论文的实验结果表明,在不同的硬件上对不同的神经网络进行压缩,能耗都要显著低于其它方法,感兴趣的读者可以查阅原论文。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读