一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
压缩模型
它简化了深度神经网络模型,具有可容忍的精度损失。因为运行时系统和推理框架通常由硬件供应商提供,这意味着智能边缘加速器的软件环境通常是封闭源代码和很难修改。
因此,在智能边缘加速器上优化深度神经网络时,更提倡独立于特定系统的过滤级剪枝技术。
先前对细粒度神经网络剪枝的一些努力,重点是直接在过滤器中去除一些权重,可以实现剪枝模型的高度非结构化稀疏性。但是,现成的库无法支持非结构化稀疏模型。因此,需要专门设计的软件和硬件技术,这对于大多数现实世界的应用来说都是昂贵的或无法实现的。相比之下,过滤器级别的剪枝方法 可以通过减少一些不重要的卷积过滤器将神经网络缩小为更小的神经网络,从而实现更实际的加速。然而,大多数现有的剪枝方法对整个神经网络使用固定的剪枝率(即,对不同的层使用相同的剪枝率),如图 1(a)所示,当剪枝大量过滤器时,预测精度不可避免地会降低。
先前的几项研究表明,不同层的过滤器具有不同的数据分布并发挥不同的作用。例如,前几层提取低级特征(例如,点和线),而最后几层提取高级特征(例如,整个对象)。不同层的过滤器对神经网络推理的影响可能不同,在优化时需要区别对待。因此,如图 1(b) 所示的灵活比率过滤器剪枝方法更有可能有效地压缩繁琐的神经网络。因此,挑战性的问题:如何使用灵活的过滤器修剪率修剪神经网络模型,从而在满足压缩要求的同时达到更高的精度?
我们提出了 FlexPruner,一种用于优化神经网络的新型灵活比率过滤器剪枝方法,旨在通过使用更灵活的剪枝比率来减少剪枝模型的精度下降,同时满足智能边缘加速器的压缩要求。我们的方法执行迭代损失感知修剪过程,该过程遵循基于贪婪的策略来选择要修剪的神经网络过滤器。
对于每一个剪枝步骤,FlexPruner 都会根据试探性压缩模型的准确度损失来构建整个神经网络中各层的优先级。所选层的过滤器会导致从当前模型到候选修剪模型的最小精度损失,将执行仔细的微调过程以重建权重参数。