【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世界的无限奥秘~

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

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

相关文章

devops-Dockerfile+Jenkinsfile方式部署Java前后端应用

文章目录 概述部署前端Vue应用一、环境准备1、Dockerfile2、.dockerignore3、nginx.conf4、Jenkinsfile 二、Jenkins部署1、新建任务2、流水线3、Build Now 构建 & 访问 Springboot后端应用1. 准备工作2. 创建项目结构3. 编写 Dockerfile后端 Dockerfile (backend/Dockerfi…

【时时三省】(C语言基础)结构体的变量定义和初始化

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 有了结构体类型,那如果定义变量,其实很简单。 示例: 这个就是结构体变量的基础创建 初始化 比如里面只剩一个s3 s3里面有两个成员 第一个给c的值 第二个给…

社群分享在商业引流与职业转型中的作用:开源 AI 智能名片 2+1 链动模式小程序的应用契机

摘要:本文聚焦于社群分享在商业领域的重要性,阐述其作为干货诱饵在引流方面的关键意义。详细探讨了提供有价值干货的多种方式,包括文字分享、问题解答以及直播分享等,并分析了直播分享所需的条件。同时,以自身经历为例…

Python毕业设计选题:基于协同过滤的动漫推荐系统设计与实现_django+hive+spider

开发语言:Python框架:djangoPython版本:python3.7.7数据库:mysql 5.7数据库工具:Navicat11开发软件:PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 动漫数据 看板展示 论坛交流 系统管理 用户功能…

Python批量生成个性化Word录用通知书

你是一名人力资源部门的员工,你需要根据一份Excel表格中的员工信息,为每位员工生成一份录用通知书。 Excel表格中包含了员工的姓名、性别、职位、入职日期等信息,你需要将这些信息填充到Word模板中,并生成独立的录用通知书文件。…

第1章 敏捷的基本概念

1.区分:敏捷、精益和看板方法 敏捷既可以说成是一种思维,也可以说是一种方法,它旨在项目推进的过程中,帮助团队提高效率,但除了敏捷,精益思想和看板方法也能够提高效率。   敏捷方法和看板方法都是面向组织级的&…

OpenHarmony中HDC相关操作源码

目录 一.背景 二.文件路径 三.相关指令位置 一.背景 本次主要记录OpenHarmony中的HDC相关操作的源码位置,为后续有hdc相关修改可以进行快速的查询 二.文件路径 首先找到hdc相关的代码逻辑模块位置,路径:xxx\developtools\hdc 如果想干掉hdc的所有功能,就是如下的patch d…

校企合作新模式:校招管理系统促进企业人才供需精准对接

近年来,随着高校毕业生就业形势的日益严峻,校企合作作为一种有效的人才培养模式,越来越受到社会各界的广泛关注。然而,传统的校企合作模式往往存在信息传递不畅、供需不匹配等问题,导致企业难以招到合适的人才&#xf…

【清华】世界模型综述:理解世界还是预测未来?

论文:https://arxiv.org/pdf/2411.14499 1. 引言 1.1 研究背景与意义 世界模型(World Models)的概念随着人工智能领域,尤其是多模态大型语言模型和视频生成模型的快速发展而受到广泛关注。这些模型被视为实现人工通用智能(AGI…

排序2(万字详细版)

一 快速排序 快速排序是Hoare于1962年提出的⼀种⼆叉树结构的交换排序⽅法,其基本思想为:任取待排序元素 序列中的某元素作为基准值,按照该排序码将待排序集合分割成两⼦序列,左⼦序列中所有元素均⼩ 于基准值,右⼦序列…

智能交通(8)——腾讯开悟智能交通信号灯调度赛道

本文档用于记录参加腾讯开悟智能信号灯调度赛道的模型优化过程。官方提供了dqn和target_dqn算法,模型的优化在官方提供的代码基础上进行。最终排名是在榜单16,没能进入最后的决赛。 一.赛题介绍 赛题简介:在本地赛题中,参赛团队…

抖音矩阵系统快速部署指南/抖音矩阵系统源码分发,短视频矩阵账号管理系统开发部署—

抖音矩阵系统的源码分发与短视频账号管理平台的开发部署,要求通过对接官方API来实现功能的拓展。当前开发的账号矩阵管理系统专注于提供一键式管理多个账户的能力,支持定时发布内容、自动化关键词生成以实现搜索引擎优化(SEO)和霸…

社群借势与 AI 智能名片微信小程序的融合应用与发展策略

摘要:本文探讨了在社群运营中借势策略的运用,包括通过联谊活动和互换用户在不同社群间实现资源整合与协同发展。同时,引入 AI 智能名片微信小程序这一新兴工具,分析其在社群运营借势过程中的独特作用与应用模式,旨在为…

群控系统服务端开发模式-应用开发-短信工厂腾讯云短信开发

一、腾讯云短信工厂开发 1、添加框架对应的SDK composer require tencentcloud/tencentcloud-sdk-php 2、添加腾讯云工厂 在根目录下extend文件夹下Sms文件夹下channel文件夹下,创建腾讯云短信发送工厂并命名为TencentSmsSender。记住,一定要在腾讯云短…

【JavaEE】多线程(6)

一、用户态与内核态 【概念】 用户态是指用户程序运行时的状态,在这种状态下,CPU只能执行用户态下的指令,并且只能访问受限的内存空间 内核态是操作系统内核运行时的状态,内核是计算机系统的核心部分,CPU可以执行所有…

SpringBoot 架构下校园失物招领系统:精准定位校园失物去向

2系统开发环境 2.1vue技术 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。 [5] 与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第…

x86处理器编程模型

为x86处理器编写程序的时候, 必须要了解x86的内核寄存器 通用寄存器 后面才扩充到了32位,又要对以前的代码进行兼容, 所以之前16位结构保留了, BP与SP主要用于对栈空间进行操作, SI和DI用来进行数据的拷贝. 段寄存器 因为早期是16位的模式,只能到65535(64KB的空间),所以后来…

Maven核心概念

Maven 介绍 Maven 官方文档是这样介绍的 Maven 的: Apache Maven is a software project management and comprehension tool. Based on the concept of a project object model (POM), Maven can manage a projects build, reporting and documentation from a ce…

Ubuntu的pip怎么用

第一步:查看python3版本 第二步:安装pip 第三步:可以尝试使用pip list查看 也可以尝试安装 下面这条命令可以设置永久源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

第三十九篇——条件概率和贝叶斯公式:机器翻译是怎么工作的?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 数学中的概率,看似和我们的生活没关系,其实它却是…