选自arXiv
作者:Pavan Kumar Anasosalu Vasu等
机器之心编译
编辑:小舟
来自苹果的研究团队分析了现有高效神经网络的架构和优化瓶颈,提出了一种新型移动端主干网络。
用于移动设备的高效神经网络主干通常针对 FLOP 或参数计数等指标进行优化。但当部署在移动设备上,这些指标与网络的延迟可能并没有很好的相关性。
基于此,来自苹果的研究者通过在移动设备上部署多个移动友好网络对不同指标进行广泛分析,探究了现有高效神经网络的架构和优化瓶颈,提供了缓解这些瓶颈的方法。该研究设计了一个高效的主干架构 MobileOne,它的变体在 iPhone12 上的推理时间少于 1 ms,在 ImageNet 上的 top-1 准确率为 75.9%。
论文地址:https://arxiv.org/abs/2206.04040
MobileOne 架构不仅实现了 SOTA 的性能,还在移动设备上提速了许多倍。其中,最好的模型变体在 ImageNet 上获得了与 MobileFormer 相当的性能,同时速度提高了 38 倍。MobileOne 在 ImageNet 上的 top-1 准确率比 EfficientNet 在相似的延迟下高 2.3%。
此外,该研究还表明 MobileOne 可以推广到多个任务 —— 图像分类、目标检测和语义分割,与部署在移动设备上的现有高效架构相比,准确度显著提高,延迟显著缩短。
方法概览
研究者首先分析了常用指标(FLOP 和参数计数)与移动设备延迟的相关性,并分析了架构中不同设计选择对手机延迟的影响。
指标相关性
比较两个或多个模型大小最常用的成本指标是参数计数和 FLOPs。但是,它们可能与实际移动应用程序中的延迟没有很好的相关性,该研究对此进行了深入的分析,对高效神经网络进行了基准测试。
该研究并使用近期模型的 Pytorch 实现将它们转换为 ONNX 格式。该研究使用 Core ML Tools 将每个模型转换成 coreml 包,然后开发了一个 iOS 应用程序来测量 iPhone12 上的模型延迟。
如下图 2 所示,该研究绘制了延迟与 FLOPs 和延迟与参数计数的关系图。研究者观察发现许多具有较高参数计数的模型延迟较低。在类似的 FLOPs 和参数计数下,MobileNets 等卷积模型对于比相应的 Transformer 模型延迟更低。
研究者还估计了下表 1 (a) 中的 Spearman 排名相关性,并发现延迟与 FLOPs 适度相关,而与移动设备上高效架构的参数计数弱相关,在台式机 CPU 上相关性会更低。
激活函数的关键瓶颈
为了分析激活函数对延迟的影响,该研究构建了一个 30 层的卷积神经网络,并在 iPhone12 上使用不同的激活函数对其进行基准测试,这些激活函数通常被用于高效的 CNN 主干网络。下表 3 中的所有模型除了激活函数之外,架构都是相同的,但它们的延迟却截然不同。
这种差异主要是由最近提出的激活函数(例如 SE-ReLU、Dynamic Shift-Max 和 DynamicReLUs)造成的。 MobileOne 中仅使用 ReLU 激活函数。架构块影响运行时性能的两个关键因素是内存访问成本和并行度。
在多分支架构中,内存访问成本显著增加,因为必须存储来自每个分支的激活函数来计算图中的下一个张量。如果网络的分支数较少,则可以避免此类内存瓶颈。强制同步的架构块(如 Squeeze-Excite 块中使用的全局池化操作)也会因同步成本而影响整体运行时间。为了演示内存访问成本和同步成本等隐藏成本,该研究在 30 层卷积神经网络中大量使用残差连接(skip connection)和 Squeeze-Excite 块,表 1b 展示了它们对延迟的影响。
基于此,该研究采用了在推理时没有分支的架构,从而降低了内存访问成本,并在 MobileOne 的最大变体中使用 Squeeze-Excite 块以提高准确性。最终,MobileOne 架构如下图所示。
为了提高性能,模型在以下几个方面进行了扩展:宽度、深度和分辨率。该研究没有随着 FLOP 和内存消耗的增加而扩大输入分辨率,这对移动设备上的运行时性能是有害的。
由于新模型在推理时没有多分支架构,因此它不会产生数据移动成本。与多分支架构(如 MobileNet-V2、EfficientNets 等)相比,苹果的新模型能够积极地扩展模型参数,而不会产生很高的延迟成本。
增加参数数量能够让该模型很好地泛化到其他计算机视觉任务上,如目标检测和语义分割。表 4 将新模型与最近的训练时间过参数化工作进行了比较,结果表明 MobileOne-S1 变体的性能优于 RepVGG-B0,约比后者高 3 倍。
实验及结果
在移动设备上获得准确的延迟测量可能很困难。在 iPhone 12 上,没有命令行访问或功能来保留所有计算结构以仅用于模型执行。同时也无法将往返延迟分解为网络初始化、数据移动和网络执行等类别。为了测量延迟,该研究使用 swift 开发了一个 iOS 应用程序对这些模型进行基准测试。该应用程序使用 Core ML 运行模型。
在基准测试期间,应用程序会多次运行模型(默认为 1000 次)并累积统计信息。为了实现最低延迟和最高一致性,手机上的所有其他应用程序都将关闭。
如下表 8 所示,该研究报告了完整的模型往返延迟。其中大部分时间可能不是来自该模型本身的执行进程,但在实际应用程序中,这些延迟是不可避免的。因此,该研究将它们包含在报告的延迟中。为了过滤掉来自其他进程的中断,该研究报告了所有模型的最小延迟。
此外,该研究还报告了几种模型在 MS COCO 数据集上的目标检测任务性能和在 Pascal VOC 、ADE 20k 数据集上语义分割任务性能,MobileOne 的性能普遍优于其他模型,具体结果如下表 9 所示。
感兴趣的读者可以阅读论文原文,了解更多研究细节。