深度学习基础(四)——计算量(FLOPs)、参数量(Params)、计算速度(FLOPS/TOPS))

一、计算量FLOPs

FLOPs,全称为Floating Point Operations, (s为复数缩写),浮点运算数,指模型完成一次前向传播所需的浮点运算次数,可以理解为计算量(模型的时间复杂度),用来衡量算法/模型的复杂度。
意义:FLOPs越高,模型计算复杂度越高,推理速度可能越慢。
关键规则

  • 一次乘加计算计为 2 F L O P s 2FLOPs 2FLOPs(乘法+加法)

计算公式
全连接层 F L O P s = 输入维度 ∗ 输出维度 ∗ 2 FLOPs = 输入维度 * 输出维度 * 2 FLOPs=输入维度输出维度2
卷积层 F L O P s = 输出高 ∗ 输出宽 ∗ 卷积核高 ∗ 卷积核宽 ∗ 输入通道数 ∗ 输出通道数 ∗ 2 FLOPs = 输出高 * 输出宽 * 卷积核高 * 卷积核宽 * 输入通道数 * 输出通道数 * 2 FLOPs=输出高输出宽卷积核高卷积核宽输入通道数输出通道数2
激活函数/池化层:操作计算量通常较小,一般不计入FLOPs
BN层 F L O P s = 4 ∗ 输入元素个数 FLOPs = 4*输入元素个数 FLOPs=4输入元素个数
示例

  • 全连接层输入100维, 输出50维: F L O P s = 100 ∗ 50 ∗ 2 = 10000 FLOPs = 100 * 50 * 2 = 10000 FLOPs=100502=10000
  • 卷积层输入 224 ∗ 224 ∗ 3 224*224*3 2242243, 输出 112 ∗ 112 ∗ 64 112*112*64 11211264, 卷积核 3 ∗ 3 3*3 33, 步长2: F L O P s = 112 ∗ 112 ∗ 3 ∗ 3 ∗ 3 ∗ 64 ∗ 2 ≈ 8.7 亿 FLOPs = 112 * 112 * 3 * 3 * 3 * 64 * 2 ≈ 8.7亿 FLOPs=1121123336428.7亿

二、参数量Params

参数量是指模型可训练参数的总数量,包含权重和偏置,可以理解为模型的空间复杂度。
意义:参数越多,模型复杂度越高,可能过拟合风险越大,且对计算资源要求更高。
计算公式
全连接层 P a r a m s = 权重数量 + 偏置数量 = (输入维度 ∗ 输出维度) + 输出维度 Params = 权重数量+偏置数量 = (输入维度 * 输出维度)+ 输出维度 Params=权重数量+偏置数量=(输入维度输出维度)+输出维度
卷积层 P a r a m s = 权重数量 + 偏置数量 = (卷积核高 ∗ 卷积核宽 ∗ 输入通道数 ∗ 输出通道数) + 输出通道数 Params = 权重数量+偏置数量 = (卷积核高 * 卷积核宽 * 输入通道数 * 输出通道数) + 输出通道数 Params=权重数量+偏置数量=(卷积核高卷积核宽输入通道数输出通道数)+输出通道数
BN层:Params = 2 * 通道数

示例

  • 全连接层输入100维, 输出50维: P a r a m s = 100 ∗ 50 + 50 = 5050 Params = 100 * 50 + 50 = 5050 Params=10050+50=5050
  • 卷积层输入 224 ∗ 224 ∗ 3 224*224*3 2242243, 输出 112 ∗ 112 ∗ 64 112*112*64 11211264, 卷积核 3 ∗ 3 3*3 33, 步长2: P a r a m s = 3 ∗ 3 ∗ 3 ∗ 64 + 64 = 1792 Params = 3 * 3 * 3 * 64 + 64 = 1792 Params=33364+64=1792

基于pytorch计算参数量和FLOPs

import torch
from thop import profilemodel = torch.nn.Conv2d(3, 64, kernel_size=3)
input = torch.randn(1, 3, 224, 224)
flops, params = profile(model, inputs=(input,))
print(f"FLOPs: {flops / 1e9} G, Params: {params / 1e6} M")

三、FLOPS

FLOPS,全称为Floating Point Operations Per Sencond,表示设别每秒能完成的浮点运算次数,可以理解为计算速度。
意义:衡量计算设备的算力(如GPU/TPU的峰值算力)。
单位

  • 1 G F L O P S = 1 0 9 F L O P S 1 GFLOPS = 10^{9} FLOPS 1GFLOPS=109FLOPS(十亿次/秒)
  • 1 T F L O P S = 1 0 12 F L O P S 1 TFLOPS = 10^{12} FLOPS 1TFLOPS=1012FLOPS(万亿次/秒)
    示例:NVIDIA A100 GPU的峰值算力维19.5TFLOPS。

四、TOPS
TOPS,全称为Tera Operations Per Second, 每秒万亿次操作( 1 T O P S = 1 0 12 1 TOPS = 10^{12} 1TOPS=1012 次/秒)。
意义:衡量硬件(如AI芯片)的算力性能,常以整数运算
计算公式 T O P S = 时钟频率 ∗ M A U 数量 ∗ 2 TOPS=时钟频率 * MAU数量 * 2 TOPS=时钟频率MAU数量2,其中MAU是乘加单元,每个MAU每周期执行一次乘加
与FLOPs的关系
1、TOPS侧重整数/定点运算,FLOPS侧重浮点运算
2、若TOPS以int8为基准,FLOPS以FP16计算,则1 TFLOPS≈2 TOPS
3、TOPS专用于评估AI芯片算力;FLOPS评估通用计算硬件性能

四、根据FLOPs和Params匹配TOPS/FLOPS
1、FLOPs与硬件算力TOPS/FLOPS匹配
模型推理时间 ≈ F L O P s ÷ 硬件 F L O P S 模型推理时间 ≈ FLOPs ÷ 硬件FLOPS 模型推理时间FLOPs÷硬件FLOPS
例如,模型 F L O P s = 1 0 12 FLOPs=10^{12} FLOPs=1012次,硬件算力为 10 T F L O P S 10TFLOPS 10TFLOPS,则理论耗时约为0.1秒。
若模型使用int8量化,需优先匹配TOPS(如AI芯片),浮点模型(FP16/32)需匹配FLOPS(如GPU)
2、Params与内存带宽关联

  • 内存需求:Params决定模型存储占用,例如,100M参数需约400MB内存(每个参数4字节)
  • 带宽限制:硬件内存带宽需支持快速加载参数,避免因带宽不足导致算力闲置。 带宽 ≥ ( P a r a m s ∗ 数据类型大小) ÷ 推理时间 带宽 ≥ (Params * 数据类型大小)÷ 推理时间 带宽Params数据类型大小)÷推理时间。如 P a r a m s = 100 M = 400 M B Params = 100M=400MB Params=100M=400MB,推理时间需 ≤ 0.1 秒 ≤0.1秒 0.1,则带宽需 ≥ 4 G B / s ≥4 GB/s 4GB/s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/903750.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电子秤检测管理系统开发实战:从数据采集到可视化大屏

简介 电子秤作为现代工业生产和商业流通中的核心计量设备,其准确性直接关系到产品质量和交易公平。针对仙贝生产企业的电子秤管理需求,我们开发了一套集电子秤检测信息录入、产品信息管理、实时称重数据采集和后台可视化大屏于一体的综合管理系统。该系统基于Django框架构建…

Cesium添加WMS,WMTS,地形图图,3D Tiles数据

在 Cesium 中,你可以添加 WMS、WMTS、地形图 和 3D Tiles 数据源。以下是详细的实现方法: 1. 添加 WMS 服务 WMS(Web Map Service)是一种动态地图服务,适用于加载栅格地图图层。 代码示例 const viewer new Cesium…

数据库基本概念:数据库的定义、特点、分类、组成、作用

一:数据库相关概念 1.1 定义 (1)数据库:存储数据的仓库 (2)数据库管理系统:模拟和管理数据库的大型软件 (3)SQL:操作关系型数据库的编程语言,定义…

【项目篇之消息序列化】仿照RabbitMQ模拟实现消息队列

实现消息序列化 为什么不使用JSON来序列化直接使用二进制序列化实现序列化方法toBytes()1: 创建内存缓冲区​​2 :创建对象序列化通道​3:执行序列化操作​4:提取二进制数据,转换成byte[]序列化图示流程:序…

单片机-89C51部分:13、看门狗

飞书文档https://x509p6c8to.feishu.cn/wiki/LefkwDPU7iUUWBkfKE9cGLvonSh 一、作用 程序发生死循环的时候(跑飞),能够自动复位。 启动看门狗计数器->计数器计数->指定时间内不对计数器赋值(主程序跑飞,无法喂…

C++23/26 静态反射机制深度解析:编译时元编程的新纪元

目录 引言 一、C静态反射的核心特性 1. 编译时元数据获取 2. 元信息操作的语法革新 3. 与现有特性的深度融合 二、应用场景:从理论到实践 1. 序列化与反序列化 2. 领域特定语言(DSL)与代码生成 3. 动态插件系统 4. 调试与元编程增强…

RISCV学习(5)GD32VF103 MCU架构了解

RISCV学习(5)GD32VF103 MCU架构了解 1、芯片内核功能简介 GD32VF103 MCU架构,采用Bumblebee内核,芯来科技(Nuclei System Technology)与台湾晶心科技(Andes Technology)联合开发&am…

【Java学习笔记】递归

递归(recursion) 思想:把一个复杂的问题拆分成一个简单问题和子问题,子问题又是更小规模的复杂问题,循环往复 本质:栈的使用 递归的注意事项 (1)需要有递归出口,否者就…

渗透测试中的那些“水洞”:分析与防御

1. Nginx 版本泄露 风险分析: Nginx 默认会在响应头中返回 Server: nginx/x.x.x,攻击者可利用该信息匹配已知漏洞进行攻击。 防御措施: 修改 nginx.conf 配置文件,隐藏版本信息:server_tokens off;使用 WAF 进行信息…

基于C#开发的适合Windows开源文件管理器

使用DDD从零构建一个完整的系统 推荐一个功能强大且直观的开源文件管理器,适用于Windows平台。 01 项目简介 该项目是一个基于C#开发、开源的文件管理器,适用于Windows,界面UI美观、方便轻松浏览文件。此外,支持创建和提取压缩…

实习入职的总结

我是4月14号入职的,到现在差不多已经三个礼拜了,今天想总结一下这段时间的工作情况,并给学弟学妹们提供一些指引。 目前,我所在的公司是一家初创企业,专注于IPC安防领域。作为一名大专生,我深知自己的学历在…

Ubuntu 系统上部署 Kubernetes 的完整指南

Ubuntu 系统上部署 Kubernetes 的完整指南 一、环境准备(Ubuntu 22.04/24.04)1. 系统初始化2. 安装容器运行时(containerd)3. 安装 Kubernetes 组件(kubeadm, kubelet, kubectl) 二、部署 Kubernetes 集群1…

partition_pdf 和chunk_by_title 的区别

from unstructured.partition.pdf import partition_pdf from unstructured.chunking.title import chunk_by_titlepartition_pdf 和 chunk_by_title 初看有点像,都在"分块",但是它们的本质完全不一样。 先看它们核心区别 partition_pdfchun…

基于深度学习的医疗诊断辅助系统设计

标题:基于深度学习的医疗诊断辅助系统设计 内容:1.摘要 随着医疗数据的爆炸式增长和深度学习技术的飞速发展,开发基于深度学习的医疗诊断辅助系统具有重要的现实意义。本研究的目的在于设计一个高效、准确的医疗诊断辅助系统,以辅助医生进行更精准的诊断…

Matlab/Simulink - BLDC直流无刷电机仿真基础教程(四) - PWM调制模拟

Matlab/Simulink - BLDC直流无刷电机仿真基础教程(四) - PWM调制模拟 前言一、PWM调制技术基本原理二、仿真模型中加入PWM调制三、逆变电路MOS管添加体二极管四、模拟添加机械负载五、仿真模型与控制框图文章相关模型文件下载链接参考链接 前言 本系列文…

Curl 全面使用指南

Curl(Client URL)是一个跨平台命令行工具,支持多种协议(HTTP/HTTPS/FTP/SFTP等),用于数据传输、API调试、文件上传/下载等场景。以下从 核心功能、用户疑问解答、高级技巧 三方面系统总结,并整合…

PyTorch中“原地”赋值的思考

在开发一个PyTorch模块时,遇到了一个诡异的现象,将他描述出来就是下面这样: f[..., :p_index - 1] f[..., 1:p_index] 这个操作将f张量的部分数值进行左移,我在模型训练的时候还能正常跑,但是当我将模型部署到项目中…

什么是:云边端一体化架构

什么是云边端一体化架构 文章目录 什么是云边端一体化架构云、边、端云计算边缘计算终端设备 云边端一体化协同云边端一体化架构协同的流程云边端一体化架构协同的应用云边端一体化架构协同的价值云边端一体化架构协同未来发展趋势 云、边、端 云(Cloud&#xff09…

gephi绘图

参考: 如何在Gephi中正确的显示中文? Gephi绘制网络图初步探索 gephi 节点标签 调节_图分析与可视化-从Gephi开始

马克·雷伯特:用算法让机器人飞奔的人

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 马克雷伯特:用算法让机器人飞奔的人 一、天才的起点 在机器人领域,有一个名字如雷贯耳——马克雷伯特(Marc Raibert)。作为波士顿动力公司(Boston…