英特尔最近发布了 Neural Compressor,这是一个用于模型压缩的开源 Python 包。该库可应用于 CPU 或 GPU 上的深度学习部署,以减小模型大小并加快推理速度。此外它为著名的网络压缩技术提供统一的用户界面,包括跨各种深度学习框架的量化、修剪和知识蒸馏。该工具的自动精度驱动调整技术可用于生成最佳量化模型。此外,它允许知识蒸馏,以便可以将来自教师模型的知识转移到学生模型中。它实现了几种权重剪枝方法,以使用预定的稀疏目标生成剪枝模型。为了改进框架互操作性,
为了允许从模型级别到操作员级别的细粒度量化粒度,库的量化功能建立在标准 PyTorch 量化 API 之上并进行更改。英特尔神经压缩器通过提供用于量化、自动混合精度和精度感知调整的复杂配方来扩展 PyTorch 量化。它接受 PyTorch 模型作为输入,并生成一个理想模型作为响应。使用这种方法,用户可以提高准确性,而无需进行任何额外的手动调整。Neural Compressor 还具有自动精度感知调整方法,可提高量化效率。该工具在第一阶段搜索框架以获取多种量化能力,包括量化粒度、方案、数据类型和校准方法。然后询问每个运算符支持的数据类型。该工具使用这些查询的功能来产生各种量化配置的巨大调整空间并开始调整轮次。它对每组量化配置进行校准、量化和评估。当评估达到准确度目标时,该工具停止调整并创建量化模型。
非结构化和结构化权重修剪和过滤器修剪是英特尔神经压缩器修剪功能的重点。当训练期间权重的大小低于设定的阈值时,使用非结构化剪枝过程对权重进行剪枝。为了提高稀疏模型的效率,结构化剪枝结合了实验性的 tile-wise 稀疏内核。NLP 模型的头部、中间层和隐藏状态是根据梯度确定的重要性分数使用一种称为过滤器剪枝的剪枝算法进行剪枝的,该剪枝算法还包括梯度敏感性剪枝。为了将知识从较大的“教师”模型传输到较小的“学生”模型而不失去有效性,英特尔神经压缩器还使用了知识蒸馏技术。
为了在使用流行的神经网络压缩技术时提高生产力并解决与精度损失相关的问题,英特尔推出了 Neural Compressor。Neural Compressor 具有易于使用的 API 和自动调整机制。该团队一直致力于通过包含更多压缩公式并融合这些方法来创建理想模型来改进该工具。此外,该团队还征求开源社区的意见,并鼓励人们为 Python 包做出贡献。可以在此处访问该库的 Github 存储库。
https://github.com/intel/neural-compressor
参考:
https://www.intel.com/content/www/us/en/developer/tools/oneapi/neural-compressor.html
https://medium.com/pytorch/pytorch-inference-acceleration-with-intel-neural-compressor-842ef4210d7d