模型计算力(flops)和参数(parameters)

  • Post author:
  • Post category:其他





    1. 模型计算力(flops)和参数(parameters)






https://zhuanlan.zhihu.com/p/144938518





提纲:



Ø 参数量

Ø FLOPS\FLOPs\GFLOPs

Ø 浮点运算和参数量的区别

Ø 不能绝对的用FLOPs作为速度衡量的原因——MAC\并行度\平台



参数量:

CNN:

一个卷积核的参数 = k*k*Cin+1

一个卷积层的参数 = (一个卷积核的参数)*卷积核数目=k*k*Cin*Cout+Cout



FLOPS:

注意:全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。



FLOPs:

注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

但是关于FLOPs的公式花样百出,不过大致形式都差不多,没有找到特别统一的说法。

CNN的FLOPs:

  1. (1) 知乎:

Ci、Co表示输入和输出通道,K卷积核大小,HW是输出的feature map大小。其中括号中的式子这样理解:

左边是乘法运算量,右边是加法运算量,因为n个数字要加n-1次,所以有个-1.这里忽略了bais如果算上bais需要把-1去掉。

  1. (2) nvida论文:

论文里应该是把n个累加直接当成加n次,还算上了个bais

  1. (3)torchstat库

简单用代码实验了下,如下图:

Flops:44,158,464 = 222*222*(3*3*3+1)*32

params:896 = 3*3*3*32

推算了下它的公式FLOPs = H*W*(K*K*Cin+1)*Cout (又是不一样的!)

FullyConnect的FLOPs:

I输入神经元数目,O输出神经元个数。同理,考虑bais没有-1



GFLOPs:


这其实是一个单位,1GLOPs=10亿次浮点运算。是Paper里比较流行的单位。

浮点运算量和参数量的区别:

浮点运算量是实际运算过程中的加减乘除计算过程中的计算次数,描述计算力;

参数量只是指的模型大小,和输入的图片大小无关,描述需要内存

不能只用FLOPs作为网络速度的指标。

FLOPs没有考虑几个对速度有相当大影响的重要因素——MAC\并行度\平台

  1. 1.MAC(Memory Access Cost)

比如:MAC(内存访问成本),计算机在进行计算时候要加载到缓存中,然后再计算,这个加载过程是需要时间的。其中,分组卷积(group convolution)是对MAC消耗比较多的操作(例如AlexNet多GPU)。

k*k普通卷积(不算bais)的FLOPs和MAC:

FLOPs = 2*h2*w2*k*k*c1*c2

MAC=输入+输出+权重参数=h1*w1*c1+h2*w2*c2+c1*c2*k*k

普通卷积和分组卷积的参数量:

1*1卷积普通卷积:

结论:FLOPs一定时,当且仅当c1=c2,MAC越小。

1*1分组卷积:

结论:B不变,g越大MAC越大

  1. 2.并行度

第二个对速度有相当大影响的重要因素就是模型的并行度。

在相同的FLOPs下,具有高并行度的模型可能比具有低并行度的另一个模型快得多。如果网络的并行度较高,那么速度就会有显著的提升。

  1. 3.计算平台的不同

    不同的运行平台,得到的FLOPs也不相同。有的平台会对操作进行优化,比如:cudnn加强了对3×3conv计算的优化。这样一来,不同平台的FLOPs大小确实没有什么说服力。



Ref:


https://arxiv.org/abs/1611.06440v2


https://www.zhihu.com/question/65305385/answer/451060549

分享一个FLOPs计算神器——

https://www.jianshu.com/p/b1ceaa7effa8


https://zhuanlan.zhihu.com/p/67009992


https://www.e-learn.cn/topic/3471595


https://github.com/Captain1986/CaptainBlackboard/blob/master/D%230023-CNN

模型计算量估计/D%230023.md


https://blog.csdn.net/weixin_39833897/article/details/105807172

C