惯例资源
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

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

被折叠的 条评论
为什么被折叠?



