当前位置: 首页 > news >正文

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

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

  • 基本概念
  • 相互关系
  • 代码计算

基本概念

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(model, (3,224,224), as_strings=True, print_per_layer_stat=True)

打印模型结构:

from torchsummary import summary
summary(model, input_size=(3, 224, 224))
http://www.lryc.cn/news/319381.html

相关文章:

  • Java映射(含源码)
  • JMeter 面试题及答案整理,最新面试题
  • lua脚本的基础内容
  • MySQL语法分类 DDL(1)
  • 苹果Find My App用处多多,产品认准伦茨科技ST17H6x芯片
  • Lua中文语言编程源码-第三节,更改lualib.h Lua标准库, 使Lua支持中文关键词(与所有的基础库相关)
  • Vue | 使用 ECharts 绘制折线图
  • NVENC 视频编码器 API 编程指南 ( 中文转译 )
  • 媒体发稿:澳门媒体发稿7个流程
  • Spring Web MVC入门(2)
  • tomcat 实现会话绑定
  • Android Studio中快速修改包名
  • solr/ES 分词插件Jcseg设置自定义词库
  • 嵌入式硬件设计(一)|利用 NodeMCU-ESP8266 开发板和继电器结合APP“点灯•blinker”制作Wi-Fi智能开关(附有关硬件详细资料)
  • CSS扩展选择器
  • 知名Web3投资基金a16z合伙人Jane Lippencott确认出席Hack.Summit() 2024区块链开发者大会
  • 电脑那个部件坏了或者是哪个软件需要修复来看价钱
  • GiT: Towards Generalist Vision Transformer through Universal Language Interface
  • 纽约时报起诉OpenAI和微软将决定未来LLM的发展
  • IntelliJ IDEA 面试题及答案整理,最新面试题
  • T1.数据库MySQL
  • idea中database的一些用法
  • 外卖点餐系统 |基于springboot框架+ Mysql+Java+JSP技术+Tomcat的外卖点餐系统 设计与实现(可运行源码+设计文档)
  • 挑战杯 机器视觉的试卷批改系统 - opencv python 视觉识别
  • Node.js 自带的 http 模块来实现一个简单的本地服务器
  • c++ 设计模式模版方法
  • 踏上机器学习的征程:探索基础概念与学习模式
  • 基于YOLO的自动驾驶目标检测研究综述
  • 深度学习-解读GoogleNet深度学习网络
  • 【LeetCode: 2684. 矩阵中移动的最大次数 + dfs】