【AI系统】推理参数

推理参数

本文将介绍 AI 模型网络参数方面的一些基本概念,以及硬件相关的性能指标,为后面让大家更了解模型轻量化做初步准备。值得让人思考的是,随着深度学习的发展,神经网络被广泛应用于各种领域,模型性能的提高同时也引入了巨大的参数量和计算量(如下图右所示),一般来说模型参数量越大,精度越高,性能越好(如下图左所示)。

但由于大部分的神经网络模型的参数量很大,无法满足直接部署到移动端的条件,因此在不严重影响模型性能的前提下对模型进行重新设计,来减少网络参数量和计算复杂度,提升运算能力是目前相当热门的研究方向。同时也希望在后续的章节中,让大家更了解模型轻量化的一些经典网络结构。

在这里插入图片描述

复杂度分析

模型参数量和计算量是两个重要的考量因素。模型参数量指的是模型中的参数数量,对应于数据结构中空间复杂度的概念。而计算量则对应于时间复杂度的概念,与网络执行时间的长短有关。

计算量和复杂度的衡量指标主要是 FLOPs(浮点运算次数),FLOPS(每秒所执行的浮点运算次数),MACCs(乘-加操作次数),Params(模型含有多少参数),MAC(内存访问代价),内存带宽(内存带宽),下面将对每个计算指标进行详细讲解。

FLOPs

FLOPs 是 floating point operations 的缩写(s 表复数),指浮点运算次数,可以用来衡量算法/模型的复杂度,表示计算量。论文中常用的还有 GFLOPs 和 TFLOPs。

FLOPS

每秒所执行的浮点运算次数(Floating-point Operations Per Second),理解为计算速度,是一个衡量硬件性能/模型速度的指标,即一个芯片的算力。

单位换算

  • 一个 MFLOPS(MegaFLOPS)等于每秒一百万( = 1 0 6 =10^{6} =106)次浮点运算。

  • 一个 GFLOPS(GigaFLOPS)等于每秒十亿( = 1 0 9 =10^{9} =109)次浮点运算。

  • 一个 TFLOPS(TeraFLOPS)等于每秒一万亿( = 1 0 12 =10^{12} =1012)次浮点运算。

  • 一个 PFLOPS(PetaFLOPS)等于每秒一千万亿( = 1 0 15 =10^{15} =1015)次浮点运算。

  • 一个 EFLOPS(ExaFLOPS)等于每秒一百京( = 1 0 18 =10^{18} =1018)次浮点运算。

  • 一个 ZFLOPS(ZettaFLOPS)等于每秒十万京( = 1 0 1 =10^{1} =101)次浮点运算。

GFLOPS 就是 Giga FLoating-point Operations Per Second,即每秒 10 亿次浮点运算,常作为 GPU 性能参数但不一定代表 GPU 的实际表现,因为还要考虑具体如何拆分多边形和像素、以及纹理填充,理论上该数值越高越好。1GFLOPs = 1000MFLOPs。

MACCs

乘-加操作次数(Multiply-accumulate Operations),MACCs 大约是 FLOPs 的一半,将 w ∗ x + b w*x+b wx+b 视为一个乘法累加或 1 个 MACC。

MAdds

MACs 全称 Multiply–Accumulate Operations,即乘加累积操作,1MACs 包含一个乘法操作与一个加法操作,大约包含 2FLOPs。通常 MACs 与 FLOPs 存在一个 2 倍的关系,而 MACs 和 MAdds 是同一个含义。
关于神经网络利用率

假设用一个简单的 CNN 网络做 forward 时,对于硬件资源的利用情况称之为利用率,所以利用率的计算简单描述为:

  • 计算网络的计算量,通常是乘累加的次数

  • 测量网络运行耗时

  • 乘累加次数除以耗时,计算该网络的 GFLOPS

  • 用计算的网络 GFLOPS 除以硬件资源的理论 GFLOPS,即利用率

Params

模型含有多少参数,直接决定模型的大小,也影响推断时对内存的占用量,单位通常为 M,通常参数用 float32 表示,所以模型大小是参数数量的 4 倍。

MAC

内存访问代价(Memory Access Cost),指的是输入单个样本,模型/卷积层完成一次前向传播所发生的内存交换总量,即模型的空间复杂度,单位是 Byte。

内存带宽

内存带宽决定了它将数据从内存(vRAM)移动到计算核心的速度,是比计算速度更具代表性的指标,内存带宽值取决于内存和计算核心之间数据传输速度,以及这两个部分之间总线中单独并行链路数量。

神经网络的计算量

网络前向计算时,卷积运算占据耗时 90%以上。重点关注下如何计算卷积的运算量。为简化问题,以下讨论认为:卷积采用滑动窗口且忽略非线性计算的开销。

假设对于 CNN 网络,有卷积层的参数包括:输入 feature map 的 Cin,宽 Hin,高 Win,输出 feature map 的 Cout,宽 Hout,高 Wout,卷积核的尺寸 K,卷积核通道等于 Cin,卷积核个数等于 Cout。

则该卷积核与 feature map 做卷积的运算量为:

W o u t = W i n / s t r i e w , H o u t = H i n / s t r i d e h W_{out}=W_{in}/strie_{w},H_{out}=H_{in}/stride_{h} Wout=Win/striew,Hout=Hin/strideh

F L O P s = ( K ∗ K ∗ C i n ∗ 2 + 1 ) ∗ W o u t ∗ H o u t ∗ C o u t FLOP_{s}=(K*K*C_{in}*2+1)*W_{out}*H_{out}*C_{out} FLOPs=(KKCin2+1)WoutHoutCout

其中的 1 表示偏置量。偏置值每个卷积核对应 1 个,共有 Cout 个。

典型结构对比

下面将会对神经网络模型的典型结构的参数进行对比,标注其参数计算方式。

标准卷积层

  • Params

模型参数量计算公式为:

k h × k w × c i n × c o u t k_{h}\times k_{w}\times c_{in}\times c_{out} kh×kw×cin×cout

其中 k h k_{h} kh 是卷积核的高度, k w k_{w} kw 是卷积核的宽度; c i n c_{in} cin 是输入的通道数; c o u t c_{out} cout 是输出的通道数

  • FLOPs

浮点运算数即计算量。可以用来衡量算法/模型的复杂度,公式如下:

k h × k w × c i n × c o u t × H × W k_{h}\times k_{w}\times c_{in}\times c_{out}\times H \times W kh×kw×cin×cout×H×W

其中 k h k_{h} kh k w k_{w} kw 分别为卷积核的高宽, c i n c_{in} cin c o u t c_{out} cout 分别是输入输出维度。

Group 卷积

  • Params

( k h × k w × c i n / g × c o u t / g ) × g = k h × k w × c i n × c o u t / g (k_{h}\times k_{w}\times c_{in}/g\times c_{out}/g)\times g = k_{h}\times k_{w}\times c_{in}\times c_{out}/g (kh×kw×cin/g×cout/g)×g=kh×kw×cin×cout/g

  • FLOPs

k h × k w × c i n × c o u t × H × W / g k_{h}\times k_{w}\times c_{in}\times c_{out}\times H \times W /g kh×kw×cin×cout×H×W/g

Depth-wise 卷积

  • Params

k h × k w × c i n × c o u t / c i n = k h × k w × c o u t k_{h}\times k_{w}\times c_{in}\times c_{out}/c_{in} = k_{h}\times k_{w}\times c_{out} kh×kw×cin×cout/cin=kh×kw×cout

  • FLOPs

k h × k w × c o u t × H × W k_{h}\times k_{w}\times c_{out}\times H \times W kh×kw×cout×H×W

全连接层 FC

  • Params
    c i n × c o u t c_{in}\times c_{out} cin×cout

  • FLOPs

c i n × c o u t c_{in}\times c_{out} cin×cout

其中 c i n c_{in} cin c o u t c_{out} cout 分别是输入输出维度。

如果您想了解更多AI知识,与AI专业人士交流,请立即访问昇腾社区官方网站https://www.hiascend.com/或者深入研读《AI系统:原理与架构》一书,这里汇聚了海量的AI学习资源和实践课程,为您的AI技术成长提供强劲动力。不仅如此,您还有机会投身于全国昇腾AI创新大赛和昇腾AI开发者创享日等盛事,发现AI世界的无限奥秘~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

列表| 习题+思维导图

列表习题 1. 已知列表xlist(range(9)),那么执行语句del x[:2]之后,x的值为(D) A.[1,3,5,7,9] B.[1,3,5,7] C.[0,1,3&a…

在freeBSD上开启IPSec内核功能

我使用的版本strongSwan 6.0.0, FreeBSD 14.1-RELEASE, amd64 背景 在freeBSD上配置strongSwan,启动charon时,一直遇到如下错误: unable to set IPSEC_POLICY on socket: Protocol not available过程 此前查阅的某个文档说 freeBSD已经默…

初识树(二叉树,堆,并查集)

本篇博客将涉及到一些专业名词:结点、深度、根、二叉树、满二叉树、完全二叉树、堆、并查集等。 概要 树型结构是一类重要的非线性数据结构。其中以树和二叉树最…

知从科技闪耀汽车智能底盘大会:共探软件安全新篇章

在汽车科技蓬勃发展的浪潮中,智能底盘技术正成为引领行业变革的关键力量。11月27日-28日,盖世汽车 2024 第四届汽车智能底盘大会盛大召开,上海知从科技有限公司受邀出席此次盛会,与众多汽车领域的精英齐聚一堂,共话智能…

TCP Analysis Flags 之 TCP Spurious Retransmission

前言 默认情况下,Wireshark 的 TCP 解析器会跟踪每个 TCP 会话的状态,并在检测到问题或潜在问题时提供额外的信息。在第一次打开捕获文件时,会对每个 TCP 数据包进行一次分析,数据包按照它们在数据包列表中出现的顺序进行处理。可…

241205_使用本地vosk模型实现流式语音识别

241205_使用本地vosk模型实现流式语音识别 上一篇我们使用了vosk模型实现了本地的语音识别,但是存在一个严重的问题,因为我们采用的是整段音频录制结束之后再进行转文字并进行关键字检索,就会导致识别不实时,在环境噪音较为复杂&…

CMake笔记之在CMakeLists.txt文件中开启Debug模式

CMake笔记之在CMakeLists.txt文件中开启Debug模式 code review! 文章目录 CMake笔记之在CMakeLists.txt文件中开启Debug模式1.设置 CMake 的构建类型2.添加编译器的调试选项3.使用 CMAKE_CXX_STANDARD (可选)4.编译和构建5.针对多配置生成器6.最终示例 CMakeLists.txt 1.设置 …

VINS_MONO视觉导航算法【一】基础知识介绍

文章目录 VINS-Mono其他文章说明简介单目相机存在的尺度不确定问题缺乏深度信息尺度等价性对极几何和三角化平移和深度的关系解决尺度不确定问题的方法视觉惯性里程计(VIO)初始尺度估计持续尺度校正 摄像头数据处理直接法(Direct Method&…

【CC2530开发基础篇】光敏和热敏传感器

一、前言 1.1 开发背景 本实验通过CC2530单片机接入光敏传感器和热敏传感器,进行数据采集与检测,并将检测结果通过串口终端输出。光敏传感器和热敏传感器是常见的环境感知设备,分别用于测量光强和温度。在实际应用中,这些传感器…

计算机网络-GRE基础实验二

前面我们学习了GRE隧道的建立以及通过静态路由指向的方式使得双方能够网络互联,但是通过静态路由可能比较麻烦,GRE支持组播、单播、广播因此可以在GRE隧道中运行动态路由协议使得网络配置更加灵活。 通过前面的动态路由协议的学习我们知道动态路由协议都…

中建海龙:科技创新引领建筑业革新,铸就行业影响力

在建筑业这个古老而又充满活力的行业中,中建海龙科技有限公司(以下简称“中建海龙”)凭借其卓越的科技实力和一系列荣誉奖项,正逐步确立其在建筑工业化领域的领导地位,并对整个行业产生了深远影响。 中建海龙自成立以来…

Y20030028 JAVA+SSM+MYSQL+LW+基于JAVA的考研监督互助系统的设计与实现 源代码 配置 文档

基于JAVA的考研监督互助系统 1.项目描述2. 课题开发背景及意义3.项目功能4.界面展示5.源码获取 1.项目描述 随着高等教育的普及和就业竞争的加剧,越来越多的学生选择继续深造,参加研究生入学考试。考研人数的不断增加,使得考研过程中的学习监…

HarmonyOS NEXT开发进阶(一):初识 HarmonyOS NEXT开发

文章目录 一、前言二、HarmonyOS NEXT 开发框架三、HarmonyOS NEXT开发指导3.1 Windows环境准备 四、项目拆解4.1 工程目录4.2 全局配置4.2.1 APP全局配置: AppScope层(AppScope/app.json5)4.2.3 签名全局配置 4.3 APP代码初始化4.4 APP签名文件配置4.5 …

【机器学习算法】——逻辑回归

目录 逻辑回归理解损失函数代码练习1. 房屋价格与面积的关系2.基于学生特征的录取概率预测 逻辑回归理解 逻辑回归是用来二分类的! 是在线性回归模型之后加了一个激活函数(Sigmoid)将预测值归一化到【0~1】之间,变成概率值。 一般计算其中一…

mongo开启慢日志及常用命令行操作、数据备份

mongo开启慢日志及常用命令行操作、数据备份 1.常用命令行操作2.mongo备份3.通过命令临时开启慢日志记录4.通过修改配置开启慢日志记录 1.常用命令行操作 连接命令行 格式:mongo -u用户名 -p密码 --host 主机地址 --port 端口号 库名; 如:连…

排序的事

排序的事 C语言实现C实现Java实现Python实现 💐The Begin💐点点关注,收藏不迷路💐 输入n个不相同的正整数,每个数都不超过n。现在需要你把这些整数进行升序排序,每次可以交换两个数的位置,最少需…

.NET Framework修复工具

某些精简Windows系统或者第三方下载的改版Windows系统在安装.NET Framework的时候会出现类似下面的错误信息: 可以使用微软官方出的.NET Framework修复工具解决, 下载地址: 【免费】.NETFramework修复工具资源-CSDN文库 下载后运行即可修复系统里的.NET Framework

PyTorch 本地安装指南:全面支持 macOS 、 Linux 和 Windows 系统

PyTorch 本地安装指南:全面支持 macOS 、 Linux 和 Windows 系统 PyTorch 是一个功能强大的深度学习框架,支持高效的计算图和 GPU 加速,广泛应用于人工智能和机器学习项目中。本文从安装前的准备工作开始,详细介绍了如何使用 con…

【单片机基础知识】MCU三种启动方式(Boot选择)[主Flash/系统存储器(BootLoader)/嵌入式SRAM]

参考资料: MCU的三种启动方式 - EdgeAI Lab 立芯嵌入式的视频 在SRAM中运行代码 - EdgeAI Lab 利用 Boot 选择不同的启动方式: 根据不同的启动方式,将不同的地址(主 FLASH/系统存储器/嵌入式 SRAM)映射到 0x0000 0000(系统中断向量表) 上…

记录一个Flutter 3.24单元测试点击事件bug

哈喽,我是老刘 这两天发现一个Flutter 3.24版本的单元测试的一个小bug,提醒大家注意一下。 老刘自己写代码十多年了,写Flutter也6年多了,没想到前两天在一个小小的BottomNavigationBar 组件上翻了车。 给大家分享一下事件的经过。…