[计算机视觉]-从ShuffleNet V2来看,为什么有些FLOPs小的模型在实际推理过程中所花费的时间更长/速度更慢?

本文探讨了FLOPs作为计算量指标在衡量模型推理速度时的局限性,指出MAC(内存访问成本)、底层算子优化、并行度和Element-wise操作对实际速度的影响。 ShuffleNet v2通过实验提出四个设计原则,强调在输入输出通道相同时MAC最小、分组卷积的分组数、支路数量和Element-wise操作对速度的权衡。实验结果显示,合理的结构设计和操作选择对模型速度至关重要。

惯例资源

论文地址


1.简介

相对于传统卷积方式,目前如分组卷积,空洞卷积,深度可分离卷积等,这些新型的卷积方式可以有效的降低模型的FLOPs,然而在实际设备上,由于各种各样的优化计算操作,导致计算量并不能准确地衡量模型的速度,换言之,相同的FLOPs会有不同的推理速度

具体来说,如在GPU运算的一些操作,底层都是调用cuda算子,而这些算子的操作方式,都是由开发人员优化后的,可能并没有针对具体的如深度可分离卷积进行优化;或在arm架构的cpu上,本质也是调用cpu的算子,可能并无相关优化。


2. 四个设计原则

shuffleNet_v2,指出了四个影响模型实际推理速度的操作,并在对速度和精度进行权衡后提出了shufflenet_v2架构。

FLOPs是理论上的计算量,我们可以把它看为是一种间接的衡量指标,与直接的衡量标准(速度)还是有差异的。

为什么这样说,FLOPs不能作为直接衡量标准?

2.1忽视了MAC

主要原因可能在于FLOPs只考虑了计算量却 忽视了MAC(memory access cost),即内存访问的时间成本。例如分组卷积,其使得底层使用的一些优化实现算法由于分组后实现性能更低,从而导致,分组数越大,时间成本越高。另一个是并行度,同样FLOPs下,高并行度的模型速度快于低并行度的模型。

2.2底层算子优化不同

另一个原因就是不同的算子(如调用cuda、cudnn)对每个具体的操作优化是不同的。举例来说按照FLOPs计算公式:

F L O P s = H ∗ W ∗ C i n ∗ K ∗ K ∗ C o u t FLOPs = H*W*Cin*K*K*Cout FLOP

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值