实际使用中的神经网络压缩

引起这篇综述的缘由是论文《Neural Network Distiller: A Python Package ForDNN Compression Research》,这种实用工具形式的科研工具会使我对这一充满希望的方向充值一点希望。除了Distiller 以外,Nvidia的TensorRT也是实用中的网络压缩工具,一并来说一说。

Distiller

Distiller用Python编写,旨在简单,可扩展,可供专家和非专家使用,并可在各种情况下作为库重用。 

上图描述了Distiller的高级体系结构。 Distiller的核心是DNN压缩所需的算法构建块的实现(例如修剪,量化和正则化)。 使用通常需要进行压缩的软件组件将它们组装成压缩方法:

  • 新的操作层,例如:截短的SVDa是线性层的分解替换,而Distiller LSTM用于对LSTM单元内部的量化进行精细控制
  • 层融合(例如批-范式折叠)
  • 模型收缩 (“细化”)和扩展
  • 实用程序,例如**统计信息,图形数据相关性分析和模型摘要

对于涉及训练或微调模型的压缩方法,Distiller支持各种训练技术,包括完整/部分数据集,单/多GPU,知识蒸馏和**假设(LTH)训练。 压缩调度组件负责交叉训练和压缩的交织,例如迭代修剪。

为了加快开发速度,Distiller还提供了用于通用实用程序功能的API。 这些包括日志和绘图(例如每个参数的张量稀疏度); 检查点(带有特定于压缩的元数据)和简单的实验工件管理; 数据加载(具有各种采样器的全部/部分数据集); 特定于压缩的命令行参数处理; 和可复制的执行。

TensorRT

参考TensorRT官网,https://developer.nvidia.com/tensorrt 。

NVIDIA TensorRT™是用于高性能深度学习推理的SDK。它包括深度学习推理优化器和运行时,可为深度学习推理应用程序提供低延迟高吞吐量。在推理过程中,基于TensorRT的应用程序的运行速度比仅基于CPU的平台快40倍。借助TensorRT,您可以优化在所有主要框架中训练的神经网络模型,以高精度对低精度进行校准,最后部署到超大规模数据中心,嵌入式或汽车产品平台。

TensorRT基于NVIDIA的并行编程模型CUDA构建,TensorRT为深度学习推理应用程序的生产部署提供INT8FP16优化,例如视频流,语音识别,推荐和自然语言处理。降低的精度推断会显着减少应用程序延迟,这是许多实时服务,自动和嵌入式应用程序所必需的。

您可以将训练有素的模型从每个深度学习框架导入TensorRT。在应用优化之后,TensorRT选择平台特定的内核,以在数据中心,Jetson嵌入式平台和NVIDIA DRIVE自动驾驶平台上的Tesla GPU上最大化性能。

为了在数据中心生产中使用AI模型,TensorRT Inference Server是一种容器化的微服务,可最大化GPU利用率并在节点上同时运行来自不同框架的多个模型。它利用Docker和Kubernetes无缝集成到DevOps架构中。