【深度学习实战(48)】如何计算模型的参数量、占用内存、CPU、GPU占用的算力

一、 参数量

每一次卷积的参数量和特征图的大小无关,仅和卷积核的大小,偏置及BN有关。
1.每个卷积层的参数量,+1表示偏置:
Co x (Kw x Kh x Cin + 1)
2.全连接层的参数量
(D1 + 1) x D2
3.BN层的参数量
因为BN层需要学习两个参数 γ和 β ,所以参数量是2xCo

二、内存占用

参数量所占内存(32位的float需要占用4个字节)
Memory(MB) = params x 4 /1024 /1024
比如:VGG参数量约为138million,则内存大小为138*3.8 = 524MB

三、模型复杂度,计算量 FLOPs

FLOPs(floating point operations):指浮点运算次数,可以用来衡量算法/模型的复杂度,表示计算量

FLOPS表示每秒浮点运算次数,用于评估计算设备的处理能力和性能,单位有MOPS,GOPS,TOPS

算力单位量级变换
MOPS (Million Operation Per Second) 一百万次(10^6) 兆;百万
GOPS (Giga Operations Per Second) 十亿次 (10^9) 千兆;十亿(billion,B)
TOPS (Tera Operations Per Second) 一万亿次 (10^12) 兆兆

1 MOPS = 10^6 FLOPS
一个MFLOPS(megaFLOPS)等于每秒一百万(=10^6)次的浮点运算,

1 GOPS = 10^9 FLOPS
一个GFLOPS(gigaFLOPS)等于每秒十亿(=10^9)次的浮点运算,十亿(部分地方可能会用B,billion,十亿)

==1 TOPS = 10^12 FLOPS ==
一个TFLOPS(teraFLOPS)等于每秒一万亿(=10^12)次的浮点运算,(1太拉)
注意:这个地方有时候加不加FL比较含糊,很多厂家和个人有时候没有专门写明,一般先关注量级即可

举例:

单模型算力需求算力为50 Gflops,其中单模型主干网络算力30 Gflops,车道线检测12 Gflops,目标检测8 Gflops,进行4相机同时推理,并达到10 fps,需求算法为:
50410 = 2000 Gflops=2 Tops

DIMS

CPU性能评估采用综合测试程序,较流行的有Whetstone和Dhrystone两种。Dhrystone主要用于测整数计算能力,计算单位就是DMIPS。Whetstone主要用于测浮点计算能力,计算单位就是MFLOPS。一个表示整数运算能力,一个表示浮点数运算能力,二者不能完全等同。

DMIPS:Dhrystone Million Instructions executed Per Second,主要用于测整数计算能力;
MFLOPS:Million Floating-point Operations Per Second,主要用于测浮点计算能力;
D是Dhrystone的缩写,表示的是基于Dhrystone这样一种测试方法下的MIPS。Dhrystone是于1984年由Reinhold P. Weicker设计的一套综合的基准程序,该程序用来测试CPU(整数)计算性能。Dhrystone所代表的处理器分数比MIPS(Million Instructions executed Per Second,每秒钟执行的指令数)更有意义。

一般芯片都有DMIPS/MHz信息,比如ARM Cortex-A53架构为2.3DMIPS/MHz,那么可以计算出:

双核A53架构,主频为1.6GHz的CPU,DMIPS为:2 * 1600MHz * 2.3 DMIPS/MHz = 7360 DMIPS;
四核A53架构,主频为1.6GHz的CPU,DMIPS为:4 * 1600MHz * 2.3 DMIPS/MHz = 14720 DMIPS;

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 17:50:05       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 17:50:05       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 17:50:05       58 阅读
  4. Python语言-面向对象

    2024-07-11 17:50:05       69 阅读

热门阅读

  1. ant-design-vue表格设置某列标题部分文字颜色

    2024-07-11 17:50:05       24 阅读
  2. python-redis-lock是如何实现锁自动续期的

    2024-07-11 17:50:05       23 阅读
  3. APK反编译

    2024-07-11 17:50:05       25 阅读
  4. ubuntu 上配置开机自动启动ssh

    2024-07-11 17:50:05       17 阅读
  5. 无线电术语

    2024-07-11 17:50:05       24 阅读
  6. RDD 专项练习

    2024-07-11 17:50:05       22 阅读
  7. 何为vue脚手架?

    2024-07-11 17:50:05       25 阅读
  8. 桥接模式案例

    2024-07-11 17:50:05       23 阅读
  9. C++八股(一)

    2024-07-11 17:50:05       21 阅读
  10. springmvc前端jsp与html

    2024-07-11 17:50:05       19 阅读
  11. 前端不同年限的差异不同开发经验的差异

    2024-07-11 17:50:05       21 阅读