模型的参数量、计算量、延时等的关系

模型的参数量、计算量、延时等的关系

基本概念

1.参数量:Params

2.计算量:FLOPs,Floating Point Operations,浮点运算次数,用来衡量模型计算复杂度。

3.延时:Latency

4.内存访问成本: MAC,memory access cost,存储模型所需的存储空间。

例如某个模型需要256000个浮点参数定义,转化为bit 乘以32得8192000bit,再除8转化为Byte,1024KB,也就是1M,那么这个模型大小约为1M。

5.乘加运算次数:MACs,multiply and accumulate operations,通常MACs=2FLOPs

6.每秒浮点运算次数:FLOPS,Floating Point Operations Per Second,是一个衡量硬件速度的指标。

7.每秒万亿次操作:TOPS,Tera Operations Per Second,1TOPS代表处理器每秒钟可进行一万亿次(10^12)操作,是处理器运算能力单位。

注意:区分FLOPs和FLOPS。

相互关系

1.相同 FLOPs 的两个模型,它们的延时可能会差很多。因为 FLOPs 只考虑模型总的计算量,而不考虑内存访问成本 (memory access cost, MAC) 和并行度 (degree of parallelism)。

2.在相同的 FLOPs 下,MAC 大的模型将具有更大的延时。

3.计算量有时候可以忽略,但是MAC却不能忽略。比如Add 或 Concat 的计算量可以忽略不计。

4.对于并行度而言,在相同的 FLOPs 下,具有高并行度的模型可能比另一个具有低并行度的模型快得多。

5.更高的 FLOPS可能 Params 会降低,比如当模型使用共享参数时。

代码计算

参数量Params:

复制代码
params = sum(p.numel() for p in model.parameters())
print(f"params: {params/(1000 * 1000):.4f} M")

计算量FLOPs:

复制代码
from thop import profile
flops, _ = profile(model, inputs=(image_tensor))
print("GFLOPs:", flops/(1000*1000*1000))

乘加运算次数MACs:

复制代码
from ptflops import get_model_complexity_info
macs, params = get_model_complexity_info(image_model, (3,224,224), as_strings=True, print_per_layer_stat=True)

打印模型结构:

复制代码
from torchsummary import summary
summary(image_model, input_size=(3, 224, 224))
相关推荐
格林威5 小时前
常规线扫描镜头有哪些类型?能做什么?
人工智能·深度学习·数码相机·算法·计算机视觉·视觉检测·工业镜头
程序员莫小特7 小时前
老题新解|大整数加法
数据结构·c++·算法
过往入尘土8 小时前
服务端与客户端的简单链接
人工智能·python·算法·pycharm·大模型
zycoder.8 小时前
力扣面试经典150题day1第一题(lc88),第二题(lc27)
算法·leetcode·面试
蒙奇D索大8 小时前
【数据结构】考研数据结构核心考点:二叉排序树(BST)全方位详解与代码实现
数据结构·笔记·学习·考研·算法·改行学it
智驱力人工智能9 小时前
工厂抽烟检测系统 智能化安全管控新方案 加油站吸烟检测技术 吸烟行为智能监测
人工智能·算法·安全·边缘计算·抽烟检测算法·工厂抽烟检测系统·吸烟监测
程序员爱钓鱼9 小时前
Go语言实战案例——进阶与部署篇:编写Makefile自动构建Go项目
后端·算法·go
_Power_Y10 小时前
Java面试常用算法api速刷
java·算法·面试
艾醒(AiXing-w)10 小时前
大模型面试题剖析:模型微调中冷启动与热启动的概念、阶段与实例解析
人工智能·深度学习·算法·语言模型·自然语言处理
天选之女wow10 小时前
【代码随想录算法训练营——Day32】动态规划——509.斐波那契数、70.爬楼梯、746.使用最小花费爬楼梯
算法·leetcode·动态规划