神经网络的设备端推理以低延迟和注重隐私的方式支持各种实时应用,如姿势估计和背景模糊。使用带有XNNPACK ML 加速库的TensorFlow Lite等 ML 推理框架,工程师通过找到模型大小、推理速度和预测质量之间的最佳点来优化他们的模型以在各种设备上运行。
来优化模型的一种方法是通过使用稀疏神经网络[的1,2,3 ],其具有它们的权重设为零的显著部分。一般来说,这是一种理想的质量,因为它不仅通过压缩减小了模型大小,而且还可以跳过大部分乘加运算,从而加快推理速度。此外,可以增加模型中的参数数量,然后对其进行稀疏化以匹配原始模型的质量,同时仍然受益于加速推理。然而,这种技术在生产中的使用仍然受到限制,这主要是由于缺乏稀疏流行卷积架构的工具,以及对在设备上运行这些操作的支持不足。
今天,我们宣布为XNNPACK 加速库和 TensorFlow Lite发布一组新功能,这些新功能可实现稀疏网络的高效推理,以及有关如何稀疏化神经网络的指南,目的是帮助研究人员开发自己的设备上稀疏楷模。在合作开发DeepMind,这些工具提供动力的新一代实时感知经验,包括手跟踪在MediaPipe和后台功能在 Google Meet 中,将推理速度从 1.2 倍提高到 2.4 倍,同时将模型大小减少一半。在这篇文章中,我们提供了稀疏神经网络的技术概述——从在训练期间引入稀疏性到设备上部署——并提供一些关于研究人员如何创建自己的稀疏模型的想法。
稀疏化神经网络
许多现代深度学习架构,如MobileNet和EfficientNetLite,主要由具有小空间内核的深度卷积和线性组合输入图像特征的1x1 卷积组成。虽然此类架构有许多潜在的稀疏化目标,包括在许多网络开始时经常出现的完整2D 卷积或深度卷积,但以推理时间衡量,1x1 卷积是最昂贵的算子。由于它们占总计算量的 65% 以上,因此它们是稀疏化的最佳目标。
建筑学 推理时间 移动网 85% 移动网络V2 71% 移动网络V3 71% EfficientNet-Lite 66% 现代移动架构中专用于 1x1 卷积的推理时间的比较(以百分比为单位)。
在现代设备端推理引擎中,如 XNNPACK,深度学习模型中 1x1 卷积的实现以及其他操作依赖于 HWC 张量布局,其中张量维度对应于高度、宽度和通道(例如,输入图像的红色、绿色或蓝色)。这种张量配置允许推理引擎并行处理对应于每个空间位置(即图像的每个像素)的通道。然而,张量的这种排序不太适合稀疏推理,因为它将通道设置为张量的最内维,并且使得访问的计算成本更高。
我们对 XNNPACK 的更新使其能够检测模型是否稀疏。如果是,则从其标准密集推理模式切换到稀疏推理模式,它采用 CHW(通道、高度、宽度)张量布局。张量的这种重新排序允许加速实现稀疏的 1x1 卷积核,原因有两个:1)当在单个条件检查后相应的通道权重为零时,可以跳过张量的整个空间切片,而不是逐像素测试; 2) 当通道权重不为零时,通过将相邻像素加载到同一内存单元中可以提高计算效率。这使我们能够同时处理多个像素,同时还可以跨多个线程并行执行每个操作。当至少 80% 的权重为零时,这些变化一起导致 1.8 倍到 2.3 倍的加速。
为了避免在每次操作后在最适合稀疏推理的 CHW 张量布局和标准 HWC 张量布局之间来回转换,XNNPACK在 CHW 布局中提供了几个 CNN 算子的有效实现。
训练稀疏神经网络的指南
要创建稀疏神经网络,此版本中包含的指南建议从密集版本开始,然后在训练期间逐渐将其权重的一部分设置为零。这个过程称为修剪。在许多可用的剪枝技术中,我们建议使用幅度剪枝(可在TF 模型优化工具包中获得)或最近引入的RigL方法。随着训练时间的适度增加,这两种方法都可以成功地稀疏深度学习模型而不会降低其质量。生成的稀疏模型可以以压缩格式有效存储,与密集等效模型相比,该格式将大小减少了两倍。
稀疏网络的质量受几个超参数的影响,包括训练时间、学习率和修剪时间表。该TF修剪API提供了如何选择这些,还有一些技巧训练这种模式一个很好的例子。我们建议运行超参数搜索以找到适合您的应用程序的最佳位置。
应用
我们证明可以稀疏分类任务、密集分割(例如,满足背景模糊)和回归问题(MediaPipe Hands),这为用户提供了切实的好处。例如,在 Google Meet 的案例中,稀疏化将模型的推理时间降低了 30%,这为更多用户提供了访问更高质量模型的机会。
此处描述的稀疏方法最适用于基于反向残差块的架构,例如MobileNetV2、MobileNetV3和EfficientNetLite。. 网络中的稀疏程度会影响推理速度和质量。从固定容量的密集网络开始,我们发现即使在 30% 的稀疏度下也能获得适度的性能提升。随着稀疏度的增加,模型的质量保持相对接近于密集基线,直到达到 70% 的稀疏度,超过 70% 时,准确度下降更为明显。然而,可以通过将基础网络的大小增加 20% 来补偿 70% 稀疏度时精度的降低,从而在不降低模型质量的情况下加快推理时间。运行稀疏模型不需要进一步的更改,因为 XNNPACK 可以识别并自动启用稀疏推理。
稀疏性作为蒸馏的自动替代方案
Google Meet 中的背景模糊使用基于带有注意块的修改后的 MobileNetV3 主干的分割模型。通过应用 70% 的稀疏化,我们能够将模型速度提高 30%,同时保持前景蒙版的质量。我们检查了稀疏和密集模型对来自 17 个地理子区域的图像的预测,没有发现显着差异,并在相关的模型卡中发布了详细信息。
类似地,MediaPipe Hands使用基于 EfficientNetLite 主干的模型在移动设备和网络上实时预测手部地标。这个主干模型是手动蒸馏的来自大型密集模型,这是一个计算成本高的迭代过程。使用密集模型的稀疏版本而不是蒸馏模型,我们能够保持相同的推理速度,但没有从密集模型中提取的劳动密集型过程。与密集模型相比,稀疏模型将推理提高了两倍,实现了与蒸馏模型相同的地标质量。从某种意义上说,稀疏化可以被认为是非结构化模型蒸馏的一种自动方法,它可以在不进行大量人工操作的情况下提高模型性能。我们评估的geodiverse数据集稀疏模式并取得了模卡公开可用的。
未来的工作
我们发现稀疏化是一种简单而强大的技术,可以改善神经网络的 CPU 推理。稀疏推理允许工程师运行更大的模型而不会产生显着的性能或大小开销,并为研究提供了一个有前途的新方向。我们将继续扩展 XNNPACK,为 CHW 布局中的操作提供更广泛的支持,并正在探索如何将其与其他优化技术(如量化)相结合。我们很高兴看到您可以使用这项技术构建什么!
本文暂时没有评论,来添加一个吧(●'◡'●)