先看一下yolov8的表
模型计算量(FLOPs)和参数量(Params)是衡量深度学习算法复杂度的两个重要指标,它们可以用来评估一个模型的性能和实用性。以下是对这两个指标的理解:
1、Params - 参数量
即模型中需要学习的参数数量,它是衡量模型复杂度的另一个重要指标。模型的参数量越多,表示模型的表达能力越强,但也意味着模型需要更多的计算资源和数据来训练和推断。比如,在训练模型时需要更多的GPU内存,推断时需要更多内存来存储模型参数。
论文中常用到的是: Params(M)
即一个模型包含多少个参数 。单位M,是million(百万 : 1 000 000 )缩写 ——也即(10的6次方)
2、FLOPs - 模型计算量
即浮点运算次数(Floating Point Operations, FLOPs),注意 s小写(s表复数)
指运行一次网络模型需要进行浮点运算的次数,可以理解为计算量。是衡量模型在推断(inference)过程中需要执行多少次浮点运算的量。FLOPs通常用于衡量模型的计算效率和速度,也可以用来衡量算法/模型的复杂度。比如,在边缘设备或者移动设备上部署模型时,需要考虑到设备的限制,如果模型的计算量过大,则会导致推断时间过长,不适合实际应用。
大模型的单位通常为 G(GFLOPs:10亿次浮点运算, 10 的9次方),小模型单位通常为 M通常只考虑乘加操作(Multi-Adds)的数量,而且只考虑 CONV 和 FC 等参数层的计算量,忽略 BN 和 PReLU 等等。
3、FLOPS
FLOPS(即“每秒浮点运算次数”,“每秒峰值速度”),可以理解为计算速度,是“每秒所执行的浮点运算次数”(Floating Point Perations per Second)的缩写。它常被用来估算电脑的执行效能,衡量硬件性能的指标,尤其是在使用到大量浮点运算的科学计算领域中。正因为FLOPS字尾的那个S,代表秒,而不是复数,所以不能省略掉。
一次浮点预算是一个FLOPS
FLOPS 计算公式
一个MFLOPS(megaFLOPS)等于每秒一百万(=10^6)次的浮点运算,
一个GFLOPS(gigaFLOPS)等于每秒十亿(=10^9)次的浮点运算,
一个TFLOPS(teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算,(1太拉)
一个PFLOPS(petaFLOPS)等于每秒一千万亿(=10^15)次的浮点运算,
一个EFLOPS(exaFLOPS)等于每秒一百京(=10^18)次的浮点运算,
一个ZFLOPS(zettaFLOPS)等于每秒十万京(=10^21)次的浮点运算。
4、 模型大小
指一个模型的大小,即模型所占存储空间,单位MB(MByte的缩写):
在深度学习神经网络中,最常见的数据格式是float32,占4个字节(Byte)。类似地,float16,占2个字节。1024个字节为1KB,1024x1024个字节为1MB。那么存储10000个参数需要的内存大小为10000x4 Bytes,约为39KB。存储1M(100万)个参数需要的内存大小为39x100/1024MB,约为3.8MB。深度学习神经网络的参数量通常是百万级之上的,所以我们可以将3.8MB看作是一个基本单位,即每一百万个数字需要3.8MB。
换算:
1 GB = 1000 MB
1 MB = 1000 KB
1 KB= 1000 Byte
1 Byte = 8 bit