【6s965-fall2022】深度学习的效率指标

news2024/9/23 14:35:01

在这里插入图片描述

  • 两个核心指标是计算和内存(Computation and Memory)。
  • 需要考虑的三个维度是存储、延迟和能耗(Storage, Latency, and Energy)。

延迟 Latency

在这里插入图片描述
Latency = m a x ( T o p e r a t i o n , T m e m o r y ) max(T_{operation}, T_{memory}) max(Toperation,Tmemory)

能耗 Energy

在这里插入图片描述

  • 内存访问比计算更消耗能量。以下是能耗排名:

  • DRAM Access > SRAM Access > FP Mult > INT Mult > Register File > FP Add > INT Add

  • 因此,我们应该避免数据移动,因为数据移动越多,内存引用就会导致更多的能量消耗。

内存相关的指标

模型参数 Number of parameters (#Parameters)

  • Linear: c 0 × c i c_0 \times c_i c0×ci

  • Convolution: c o c i k h k w c_o c_i k_h k_w cocikhkw

  • Grouped convolution: c o c i k h k w / g c_o c_i k_h k_w / g cocikhkw/g

  • Depthwise convolution: c o k w k h c_o k_w k_h cokwkh

模型大小 Model size

  • M o d e l S i z e = N u m O f P a r a m e t e r s × B i t W i d t h = 模型参数 × 位宽 Model Size = NumOfParameters \times BitWidth=模型参数 \times 位宽 ModelSize=NumOfParameters×BitWidth=模型参数×位宽

例如,AlexNet有61M参数,因此它的模型大小将是244MB (FP32)和61MB (INT8)。

激活函数的个数 Number of Activations(#Activations)

  • 激活函数的个数是IoT推理中的内存瓶颈,而不是模型参数。
    在这里插入图片描述
  • 在训练过程中,内存瓶颈不是参数,而是激活函数的个数。
    在这里插入图片描述- MCUNet:从输入层到输出层,激活占的比例越来越小,权重占的比例越来越大,因为通道在增加。
    在这里插入图片描述

计算相关的指标

MACs: multiply-accumulate operations 乘法累加操作

  • 一次乘法累加(MAC)操作是 a = a + b × c a = a + b \times c a=a+b×c
  • 以下是一些常见的MACs的计算方式:
    • Matrix-vector multiplication (MV): m × n m\times n m×n

    • General matrix-matrix multiplication (GEMM): m × n × k m\times n\times k m×n×k

    • Linear layer: c o × c i c_o\times c_i co×ci

    • Convolution: c i × k w × k h × h o × w o × c o c_i\times k_w \times k_h \times h_o \times w_o \times c_o ci×kw×kh×ho×wo×co

    • Grouped convolution: c i × k w × k h × h o × w o × c o / g c_i\times k_w \times k_h \times h_o \times w_o \times c_o / g ci×kw×kh×ho×wo×co/g

    • Depthwise convolution: k w × k h × h o × w o × c o k_w \times k_h \times h_o \times w_o \times c_o kw×kh×ho×wo×co

FLOP: floating point operation

  • 1 M A C = 2 F L O P 1MAC = 2 FLOP 1MAC=2FLOP

    • 例如,AlexNet有724M mac,对应1.4G FLOP。
  • Floating point operation per second (FLOPS)

    • F L O P S = F L O P s e c o n d FLOPS = \frac{FLOP}{second} FLOPS=secondFLOP

用python 实现这些指标

from torchprofile import profile_macs

def get_model_macs(model, inputs) -> int:
    return profile_macs(model, inputs)

def get_num_parameters(model: nn.Module, count_nonzero_only=False) -> int:
    """
    calculate the total number of parameters of model
    :param count_nonzero_only: only count nonzero weights
    """
    num_counted_elements = 0
    for param in model.parameters():
        if count_nonzero_only:
            num_counted_elements += param.count_nonzero()
        else:
            num_counted_elements += param.numel()
    return num_counted_elements


def get_model_size(model: nn.Module, data_width=32, count_nonzero_only=False) -> int:
    """
    calculate the model size in bits
    :param data_width: #bits per element
    :param count_nonzero_only: only count nonzero weights
    """
    return get_num_parameters(model, count_nonzero_only) * data_width


Byte = 8
KiB = 1024 * Byte
MiB = 1024 * KiB
GiB = 1024 * MiB

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

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

相关文章

Softmax Loss、AAM-Softmax(ArcFace)、Sub-center ArcFace的PyTorch实现与代码解读

概述 说话人识别中的损失函数分为基于多类别分类的损失函数,和端到端的损失函数(也叫基于度量学习的损失函数),关于这些损失函数的理论部分,可参考说话人识别中的损失函数本文主要关注这些损失函数的实现,…

开源PPP软件PRIDE-PPPAR使用记录(二)解算网友发来的GNSS观测文件

最近有个网友发来了几个GNSS原始观测文件,想使用TerraPos处理一下看看结果。 TerraPos打开这几个文件,都报一个格式错误,见下图: 正在上传…重新上传取消​ 这个问题不难,解决之道就是按照上一篇文章的方法&#xf…

杭州到温州老家自驾路线优化与整理

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 背景及义意义 背景 考虑到后续经常回老家,需要提前熟悉回家的路线。杭州和温州有很多快速路和国道与高速是基本相伴而行的,可以利用这些道路取…

在项目管理中,甘特图是最常用的工具之一

在项目管理中,为了能对项目过程进行监控,可视化进度管理,需要使用辅助工具来帮助我们管理项目,而甘特图则是其中最经常使用的工具之一。 甘特图更够清晰的反映项目各个阶段的计划,任务由谁负责,计划与实际…

mysql性能优化二

1 mysql 基本功能 1.1、mysql连接器的工作流程: 1.2、查看连接状态: show processlist; Note:客户端太长时间没动静 就自动断开 这个时间是由wait_timeout参数控制的,默认8h 长连接短链接 长连接是链接成功后,如果客户端持续有请求,则使用同一个链接[尽量使用长连接,因为每次…

通用NetCore前后端分离项目Linux系统部署步骤

最近参与的大部分项目都是NetCore API加SAP页面的形式,都是部署在linux系统上,本文记录新领的服务器的部署步骤。采用NetCore3.1,MySql数据库。 本文记录的程序名:myapp.dll 部署文件保存目录: 后台程序:/u…

SOLIDWORKS 2023新功能揭秘!装配体升级 阵列实例、配合错误修复、零件替换同步更新

SOLIDWORKS 2023全新面世,今天众联亿诚为大家带来SOLIDWORKS 2023装配体的新功能揭秘,SOLIDWORKS 2023对装配体进行功能增强,并且继续加强性能,让我们深入研究这些令人振奋的新功能吧!在装配体中阵列是一种常见的、节省…

jfow-core 代码分析

EntityNoName目录概述需求:设计思路实现思路分析1.code:2.code2:3.FLows4.frm5.code3:code4:EntityTreeAttrEntitiesNoNameenum:JUmp way参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full bu…

深度学习是什么?深度学习和神经网络的区别是什么

1、深度学习中什么是人工神经网络? 人工神经网络(Artificial Neural Network,即ANN )是从信息处理角度对人脑神经元网络进行抽象,是20世纪80年代以来人工智能领域兴起的研究热点,其本质是一种运算模型&…

C++——多态、异常、转化函数

目录 一、多态 二、异常 ​三、转换函数 3.1标准转换函数 3.2自定义转换函数 3.3隐式转换&#xff08;explicit&#xff09; 封装Thread类 一、多态 c支持用基类的指针指向派生类。 #include <iostream>using namespace std;class A{ public:A(){ }~A(){ cout<…

vite+vue3环境变量的配置

文章目录一、vite1. 环境变量2. env 文件2.1 环境加载优先级2.2 TypeScript 的智能提示3. 模式二、vue1. 开发环境2. 生产环境3. 在 vite.config.ts 使用环境变量一、vite vite官方文档&#xff1a;环境变量和模式 1. 环境变量 Vite 在一个特殊的 import.meta.env 对象上暴露…

爱普生LQ-635K针式打印机打链式打印纸设置自动切纸方法

链式打印纸还有别的叫法&#xff0c;折叠式打印纸、复写打印纸、等分打印纸、电脑打印纸...... 其实链式打印纸是打印纸的两边带孔的具有复写功能的一种。链式打印纸可连续打印&#xff0c;很合适大量的使用&#xff0c;节约放纸时间。 链式打印纸有整张、二等分、三等分的规格…

python比较两张图片并获取精准度

先安装依赖库dlib、face_recognition、cv2下载wheel文件&#xff1a;python3.6&#xff1a;dlib-19.7.0-cp36-cp36m-win_amd64.whl: https://drfs.ctcontents.com/file/1445568/768652503/68cb5d/Python/dlib-19.7.0-cp36-cp36m-win_amd64.whlpython3.7:dlib-19.17.99-cp37-cp3…

Spring中的IOC和AOP

IOC(控制反转)和AOP(面向方面编程)作为Spring框架的两个核心&#xff0c;很好地实现了解耦合。所以&#xff0c;简单来说&#xff0c;Spring是一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面&#xff08;AOP&#xff09;的容器框架。 spring的基本框架主要包含六…

2023年中职网络安全技能竞赛网页渗透(审计版)

三、竞赛任务书内容 (一)拓扑图 网页渗透测试 任务环境说明: 服务器场景:Server2127服务器场景操作系统:未知(封闭靶机)用户名:未知 密码:未知访问服务器网站目录1,根据页面信息完成条件,将获取到的flag提交;访问服务器网站目录2,根据页面信息完成条件,将获取…

SpringCloud(10):Hystrix请求缓存

1 类继承的方法来实现请求缓存 1.1 编写CacheCommand类 package com.study.service.hystrix;import com.netflix.hystrix.HystrixCommand; import com.netflix.hystrix.HystrixCommandGroupKey; import com.netflix.hystrix.HystrixCommandKey; import com.netflix.hystrix.H…

面试 | Python 自动化测试技术面试真题

本文为面试某公司测试开发&#xff0f;自动化测试工程师时的面试题笔记。 全部笔试内容没有全部写全&#xff0c;只贴通用性的技术相关的笔试面试题&#xff0c;至于测试理论和团队管理的问题&#xff0c;都是大同小异&#xff0c;也没什么实际的参考价值。 1.直接手写一个 Pyt…

智慧工地 | 数字孪生楼宇施工管理平台

随着科学技术的进步&#xff0c;时代的发展&#xff0c;越来越多的智慧应用走进我们身边&#xff0c;万物互联不再是口号。当前智慧城市建设的兴起&#xff0c;都在要求建筑实现与物联网结合&#xff0c;使其扩展和延伸到建筑物和任何物品之间进行交换和通信&#xff0c;也就是…

python环境构造

目录 1. python安装包下载 2. 双击默认安装即可 3. python插件安装 4. 本地手动安装python插件 1. python安装包下载 可以去官网 (Download Python | Python.org) 下载&#xff0c;但是可能速度会比较慢 也可以去我的百度网盘下载&#xff0c;版本是win64 3.11.1版&#xf…

机器视觉 · 工业光源

文章目录光源 环形光源光源 环形漫反射光源光源 高亮环形无影光源光源 高亮环形大功率光源光源 双向高均匀漫射环形光源光源 多方向高均匀漫射环形光源光源 球状分布式对称无影光源光源 条形光源光源 条形光源光源 高亮条形光源光源 条形组合光源光源 背光源光源 …