当前位置:K88软件开发文章中心电脑基础基础应用22 → 文章内容

开源 | Intel发布神经网络压缩库Distiller:快速利用前沿算法压缩PyTorch模型

减小字体 增大字体 作者:华军  来源:华军资讯  发布时间:2019-4-2 2:21:00

原标题:开源 | Intel发布神经网络压缩库Distiller:快速利用前沿算法压缩PyTorch模型选自intel作者:Neta Zmora机器之心编译参与:思源近日,Intel 开源了一个用于神经网络压缩的开源 Python 软件包 Distiller,它可以减少深度神经网络的内存占用、加快推断速度及节省能耗。Distiller 为 PyTorch 环境提供原型和分析压缩算法,例如产生稀疏性张量的方法和低精度运算等。项目地址:https://github.com/NervanaSystems/distiller/文档地址:https://nervanasystems.github.io/distiller/index.html深度学习正快速发展,它从输入法到汽车已经应用到各种场景和设备当中。但它们所采用的深度神经网络在运算时间、计算力、内存和能耗上都有非常大的需求。很多开发者考虑到硬件和软件的限制及实际应用的环境,而在算法准确度、速度和功耗之间取得平衡。近日,Intel 人工智能实验室开源了 Neural Network Distiller,它是一个为神经网络压缩算法研究而设计的 Python 包。Intel 认为深度网络的压缩可以成为促进更多的研究成果投入应用,并实现更优秀的功能。深度网络压缩面向用户的深度学习应用需要高度重视用户体验,因为交互式的应用通常对程序的响应时间非常敏感。谷歌的内部研究发现即使很小的服务响应延迟,它对用户的影响也非常显著。而随着越来越多的应用由深度模型提供核心功能,不论我们将模型部署在云端还是移动端,低延迟的推断变得越来越重要。减少计算资源和加快推断速度的一种方法是从一开始就设计一种紧凑型的神经网络架构。例如 SqueezeNet 和 MobileNet 都旨在压缩参数数量与计算量的情况下尽可能保留较高的准确度,而 Intel 人工智能实验室也在设计这种紧凑型的模型,即提出了一种用于深层 DNN 的无监督结构学习方法,以获得紧凑的网络结构与高准确率。而另一种降低计算力需求的方法直接从通用且性能优秀的深度网络架构开始,然后通过一些算法过程将其转换为更加短小精悍的网络,这种方法即神经网络压缩。神经网络压缩是降低计算力、存储空间、能耗、内存和推断时间等需求的过程(至少其一),它同时还需要保持其推断准确性不下降或在可接受的范围内。通常这些资源是相互关联的,减少一种资源的需求同时会降低其它资源的需求。此外,即使我们使用前面几种紧凑的小模型,我们同样可以使用压缩算法进一步减少计算资源的需求。其实很多研究都表明深度神经网络存在着非常高的参数冗余,虽然这些参数冗余在收敛到更优解时是非常必要的,但在推断过程中可以大量减少参数与计算量。总体而言,绝大多数压缩方法在于将巨大的预训练模型转化为一个精简的小模型,且常用的方法有低秩近似、神经元级别的剪枝、卷积核级别的剪枝、参数量化及知识蒸馏等。例如在量化这一常见的压缩算法中,我们只需储存 k 个聚类中心 c_j,而原权重矩阵只需要记录各自聚类中心的索引就行。在韩松 ICLR 2016 的最佳论文中,他用如下一张图非常形象地展示了量化的概念与过程。

开源 | Intel发布神经网络压缩库Distiller:快速利用前沿算法压缩PyTorch模型