https://arxiv.org/pdf/2404.10518
https://github.com/jiaowoguanren0615/MobileNetV4/tree/main
https://github.com/tensorflow/models/blob/master/official/vision/modeling/backbones/mobilenet.py
MobileNetv4设计目的是提升在多种类型端侧设备上的通用性能,通过NAS搜索新增的UIB通用模块和Mobile MQA注意力模块实现通用高效的新模型结构。
论文总结
如图上所示,区别于针对不同设备侧重优化的网络,无论是在端侧高性能加速模块还是低性能cpu,MBNv4都展示全场景的低延迟-高精度的平衡。
性能瓶颈分析-如何降低推理延迟:
在低算理边缘设备如cpu,通常模型的计算资源比内存资源更加紧张,针对这种设备通常需要压缩MACs(乘加运算),如果有必要以增加内存来降低计算复杂度会是有效方法如 MobileNetV3Large (深有体会)。
相反的在高性能设备数据拷贝转移也就是上述内存资源才是瓶颈,增加模型计算复杂度提升模型表达力反而没有降低延迟比如 MobileNetV1-1.5。
MobileNetV4解决上述性能瓶颈:
对于低性能设备,在开始层MBNv4会使用更大的高开销初始层 增加表能力和下游任务准确性,相对的这部分耗时会最多。
对于高性能设备,在深层所有尺寸的MBNv4都使用同一种shape的FC层最大限度的提升准确度,对高性能设备FC的内存带宽资源是最大瓶颈。
中间层设计
UIB模块(Universal Interval BottleNeck)
一种新的通用模块设计,可以组合实现上图所有模块:
- Extra DW:相对低的开销增加网络深度和感受野
- IB:标准倒残差模块
- ConvNext:扩张通道前先空间混合降低计算量
- FFN:两个PW层组合,中间加入激活和BN,速度最快
Mobile MQA
一个专门为加速器优化的新型注意力块,它能提供超过 39%的推理速度提升。
MQA 在混合模型中是高效的:MHSA 将 Query、键和值投影到多个空间以捕捉信息的不同方面。多 Query 注意力(MQA)通过在所有头之间使用共享的键和值简化了这一点。尽管多个 Query 头是必要的,但大型语言模型可以有效共享单个键和值的头,而不会牺牲准确度。对于键和值使用一个共享的头,当批处理的 Token 数量相对于特征维度较小时,可以大大减少内存访问需求,从而显著提高操作强度。
这对于面向移动应用的混合视觉模型通常是这种情况,在这种情况下,仅在具有高特征维度的低分辨率后期阶段使用注意力,并且批大小通常为 1。作者的实验证实了 MQA 在混合模型中的优势。如下表所示,与 MHSA 相比,MQA 在 EdgeTPUs 和三星 S23GPU 上实现了超过 39%的加速,而质量损失可以忽略不计(-0.03%)。MQA 还将 MACs 和模型参数减少了 25%以上。