轻量级模型设计与部署总结

news2024/11/22 5:44:35
  • 前言
  • 一些关键字定义及理解
    • 计算量 FLOPs
    • 内存访问代价 MAC
    • GPU 内存带宽
    • Latency and Throughput
    • 英伟达 GPU 架构
  • CNN 架构的理解
  • 手动设计高效 CNN 架构建议
    • 一些结论:
  • 一些建议
  • 轻量级网络模型部署总结
  • 轻量级网络论文解析文章
    • 参考资料

文章同步发于 github 仓库 和 知乎,最新板以 github 为主。
本人水平有限,文章如有问题,欢迎及时指出。如果看完文章有所收获,一定要先点赞后收藏。毕竟,赠人玫瑰,手有余香

前言

关于如何手动设计轻量级网络的研究,目前还没有广泛通用的准则,,只有一些指导思想,和针对不同芯片平台(不同芯片架构)的一些设计总结,建议大家从经典论文中吸取指导思想和建议,然后自己实际做各个硬件平台的部署和模型性能测试。

一些关键字定义及理解

FLOPsMAC 的计算方式,请参考我之前写的文章 神经网络模型复杂度分析。

计算量 FLOPs

  • FLOPsfloating point operations 指的是浮点运算次数,理解为计算量,可以用来衡量算法/模型时间的复杂度
  • FLOPS:(全部大写),Floating-point Operations Per Second,每秒所执行的浮点运算次数,理解为计算速度, 是一个衡量硬件性能/模型速度的指标,即一个芯片的算力。
  • MACCsmultiply-accumulate operations,乘-加操作次数,MACCs 大约是 FLOPs 的一半。将 w[0]∗x[0]+… 视为一个乘法累加或 1MACC

内存访问代价 MAC

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

GPU 内存带宽

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

NVIDIA RTX A4000 建立在 NVIDIA Ampere 架构之上,其芯片规格如下所示:
在这里插入图片描述

A4000 芯片配备 16 GBGDDR6 显存、256 位显存接口(GPUVRAM 之间总线上的独立链路数量),因为这些与显存相关的特性,所以 A4000 内存带宽可以达到 448 GB/s

Latency and Throughput

参考英伟达-Ashu RegeDirector of Developer Technology 的 ppt 文档 An Introduction to Modern GPU Architecture。

深度学习领域延迟 Latency吞吐量 Throughput的一般解释:

  • 延迟 (Latency): 人和机器做决策或采取行动时都需要反应时间。延迟是指提出请求与收到反应之间经过的时间。大部分人性化软件系统(不只是 AI 系统),延迟都是以毫秒来计量的。
  • 吞吐量 (Throughput): 在给定创建或部署的深度学习网络规模的情况下,可以传递多少推断结果。简单理解就是在一个时间单元(如:一秒)内网络能处理的最大输入样例数

CPU 是低延迟低吞吐量处理器;GPU 是高延迟高吞吐量处理器

英伟达 GPU 架构

GPU 设计了更多的晶体管(transistors)用于数据处理(data process)而不是数据缓冲(data caching)和流控(flow control),因此 GPU 很适合做高度并行计算highly parallel computations)。同时,GPU 提供比 CPU 更高的指令吞吐量内存带宽instruction throughput and memory bandwidth)。

CPUGPU 的直观对比图如下所示
在这里插入图片描述

图片来源 CUDA C++ Programming Guide

最后简单总结下英伟达 GPU 架构的一些特点:

  • SIMT (Single Instruction Multiple Threads) 模式,即多个 Core 同一时刻只能执行同样的指令。虽然看起来与现代 CPUSIMD(单指令多数据)有些相似,但实际上有着根本差别。
  • 更适合计算密集数据并行的程序,原因是缺少 CacheControl

2008-2020 英伟达 GPU 架构进化史如下图所示:
在这里插入图片描述

另外,英伟达 GPU 架构从 2010 年开始到 2020 年这十年间的架构演进历史概述,可以参考知乎的文章-英伟达GPU架构演进近十年,从费米到安培。

GPU 架构的深入理解可以参考博客园的文章-深入GPU硬件架构及运行机制。

CNN 架构的理解

在一定的程度上,网络越深越宽,性能越好。宽度,即通道(channel)的数量,网络深度,及 layer 的层数,如 resnet1818 层网络。注意我们这里说的和宽度学习一类的模型没有关系,而是特指深度卷积神经网络的(通道)宽度。

  • 网络深度的意义CNN 的网络层能够对输入图像数据进行逐层抽象,比如第一层学习到了图像边缘特征,第二层学习到了简单形状特征,第三层学习到了目标形状的特征,网络深度增加也提高了模型的抽象能力。
  • 网络宽度的意义:网络的宽度(通道数)代表了滤波器(3 维)的数量,滤波器越多,对目标特征的提取能力越强,即让每一层网络学习到更加丰富的特征,比如不同方向、不同频率的纹理特征等。

手动设计高效 CNN 架构建议

一些结论:

  1. 分析模型的推理性能得结合具体的推理平台(常见如:英伟达 GPU、移动端 ARM CPU、端侧 NPU 芯片等);目前已知影响 CNN 模型推理性能的因素包括: 算子计算量 FLOPs(参数量 Params)、卷积 block 的内存访问代价(访存带宽)、网络并行度等。但相同硬件平台、相同网络架构条件下, FLOPs 加速比与推理时间加速比成正比。
  2. 建议对于轻量级网络设计应该考虑直接 metric(例如速度 speed),而不是间接 metric(例如 FLOPs)。
  3. FLOPs 低不等于 latency 低,尤其是在有加速功能的硬体 (GPUDSPTPU)上不成立,得结合具硬件架构具体分析
  4. 不同网络架构的 CNN 模型,即使是 FLOPs 相同,但其 MAC 也可能差异巨大。
  5. 大部分时候,对于 GPU 芯片,Depthwise 卷积算子实际上是使用了大量的低 FLOPs、高数据读写量的操作。这些具有高数据读写量的操作,加上多数时候 GPU 芯片算力的瓶颈在于访存带宽,使得模型把大量的时间浪费在了从显存中读写数据上,导致 GPU 的算力没有得到“充分利用”。结论来源知乎文章-FLOPs与模型推理速度。

一些建议

  1. 在大多数的硬件上,channel 数为 16 的倍数比较有利高效计算。如海思 351x 系列芯片,当输入通道为 4 倍数和输出通道数为 16 倍数时,时间加速比会近似等于 FLOPs 加速比,有利于提供 NNIE 硬件计算利用率。
  2. channel 数的情况下 (如网路的前几层),在有加速功能的硬件使用普通 convolution 通常会比 separable convolution 有效率。(来源 MobileDets 论文)
  3. shufflenetv2 论文 提出的四个高效网络设计的实用指导思想: G1同样大小的通道数可以最小化 MAC、G2-分组数太多的卷积会增加 MAC、G3-网络碎片化会降低并行度、G4-逐元素的操作不可忽视。
  4. GPU 芯片上 3 × 3 3\times 3 3×3 卷积非常快,其计算密度(理论运算量除以所用时间)可达 1 × 1 1\times 1 1×1 5 × 5 5\times 5 5×5 卷积的四倍。(来源 RepVGG 论文)
  5. 从解决梯度信息冗余问题入手,提高模型推理效率。比如 CSPNet 网络。
  6. 从解决 DenseNet 的密集连接带来的高内存访问成本和能耗问题入手,如 VoVNet 网络,其由 OSAOne-Shot Aggregation,一次聚合)模块组成。

轻量级网络模型部署总结

在阅读和理解经典的轻量级网络 mobilenet 系列、MobileDetsshufflenet 系列、cspnetvovnetrepvgg 等论文的基础上,做了以下总结:

  1. 低算力设备-手机移动端 cpu 硬件,考虑 mobilenetv1(深度可分离卷机架构-低 FLOPs)、低 FLOPs 和 低MACshuffletnetv2channel_shuffle 算子在推理框架上可能不支持)
  2. 专用 asic 硬件设备-npu 芯片(地平线 x3/x4 等、海思 3519、安霸cv22 等),目标检测问题考虑 cspnet 网络(减少重复梯度信息)、repvgg(直连架构-部署简单,网络并行度高有利于发挥 GPU 算力,量化后有掉点风险)
  3. 英伟达 gpu 硬件-t4 芯片,考虑 repvgg 网络(类 vgg 卷积架构-高并行度带来高速度、单路架构省显存/内存)

MobileNet block (深度可分离卷积 block, depthwise separable convolution block)在有加速功能的硬件(专用硬件设计-NPU 芯片)上比较没有效率。

这个结论在 CSPNet 和 MobileDets 论文中都有提到。

除非芯片厂商做了定制优化来提高深度可分离卷积 block 的计算效率,比如地平线机器人 x3 芯片对深度可分离卷积 block 做了定制优化。

下表是 MobileNetv2ResNet50 在一些常见 NPU 芯片平台上做的性能测试结果。
在这里插入图片描述
以上,均是看了轻量级网络论文总结出来的一些不同硬件平台部署轻量级模型的经验,实际结果还需要自己手动运行测试。

轻量级网络论文解析文章汇总

  • MobileNetv1论文详解
  • ShuffleNetv2论文详解
  • RepVGG论文详解
  • CSPNet论文详解
  • VoVNet论文解读

参考资料

  • An Introduction to Modern GPU Architecture
  • 轻量级网络论文解析合集

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

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

相关文章

论文阅读11——《Mutual Boost Network for Attributed Graph Clustering》

原文地址: 论文阅读11——《Mutual Boost Network for Attributed Graph Clustering》 作者:Xiaoqiang Yan, Xiangyu Yu, Shizhe Hu, Yangdong Ye 发表时间:预印本 论文地址:https://papers.ssrn.com/sol3/papers.cfm?abstract_i…

Camtasia Studio2023喀秋莎免费实用的屏幕录像工具

CamtasiaStudio2023是一款非常不错的软件。总的来说CamtasiaStudio的功能从专业度来说,分别有:录制桌面,录制视频教程,录制音频;剪截视频,拼接合成视频,制作小视频Camtasia Studio是TechSmith的…

web网页设计期末课程大作业:环境保护主题网站设计——农业三级带表单带js(14页)HTML+CSS+JavaScript

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

自顶向下计算机网络学习 传输层

自顶向下计算机网络学习 传输层一、概述和传输层服务1.1 传输层提供的服务1.2传输层和网络层的关系1.3 传输层协议可靠的、保序的传输:TCP不可靠、不保序的传输:UDP二、多路复用与解复用2.1 什么是复用与解复用2.2 面向连接(TCP)的多路复用与分解2.3 无连…

Verilog 实现无毛刺时钟切换电路,RTL代码设计+testbench代码测试,波形前仿真

Verilog 实现无毛刺时钟切换电路 1,原理2,无毛刺时钟切换3,RTL代码设计4,testbench测试代码5,RTL+testbench综合的 Netlist6,前仿真波形验证参考文献1 1,原理 想要切换时钟电路,最简单的方法肯定是使用一个MUX,control作为控制信号; control = 1, clk_output = clk_…

JVM 双亲委派模型

一言以蔽之,向上委托,向下委派。 向上委托:如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上…

家居建材如何在线管理订单?数商云采购系统实现订单发收货、退换货流程化管控

新时代的流程化业务,利用信息互通的时效性,提高员工执行力,提升市场竞争力,在悄无声息地促进企业发展。订单管理作为企业客户关系管理的有效延伸,能更好的把个性化、差异化服务有机的融入到客户管理中去,能…

220kV降压变电所电气部分初步设计33号

目录 1 绪论 5 1.1 概述 5 1.2 本次设计内容 5 1.3 本次设计任务 5 2 变电站总体分析 6 2.1变电所总体分析 6 2.2主变压器选择 7 3 电气主接线选择 10 3.1 电气主接线的概念 10 3.2 电气主接…

Linux —— 进程控制

1.进程控制的四个概念 进程控制分为四类,分别是: 进程创建进程终止进程等待进程替换 2.进程创建 2.1初识fork fork的作用是通过拷贝当前进程创建一个子进程,这两个进程的区别在于PID不同(还有一些资源、统计量也不同,但PID是我…

E. Split Into Two Sets(染色法判断二分图)

Problem - 1702E - Codeforces 波利卡普最近得到了一组n(数字n-偶数)的骨牌。每块多米诺骨牌包含1到n的两个整数。 他能把所有的骨牌分成两组,使每组骨牌上的数字都不一样吗?每张多米诺骨牌必须正好进入两组中的一组。 例如&…

7种主流数据分析软件比较及经典教材推荐

前言 STATA 软件优点:Stata以其简单易懂和功能强大受到初学者和高级用户的普遍欢迎。使用时可以每次只输入一个命令,也可以通过一个Stata程序一次输入多个命令。这样的话即使发生错误,也较容易找出并加以修改。尽管Stata的数据管理能力没有…

智慧点餐系统源码 扫码点餐小程序源码

🍓🍓文末获取联系🍓🍓 JAVAUniappMySQLWinForm 系统功能介绍 1、单/多门店自由切换; 2、扫码(桌号)点餐; 3、多规格商品; 4、手动/自动接单; 5、自助&am…

MyBatis-Plus标准数据层开发

1. 标准CRUD使用 对于标准的CRUD功能都有哪些以及MP都提供了哪些方法可以使用呢? 我们先来看张表: 功能自定义接口MP接口新增boolean save(T t)int insert(T t)删除boolean delete(int id)int deleteById(Serializeble id)修改boolean update(T t)int…

系统分析与设计 复习

文章目录系统分析与设计 复习第 1 章 系统分析与设计概述系统特性DevOps第 2 章 系统规划**系统规划步骤**规划模型诺兰模型**CMM 模型**系统规划方法战略集合转换法 SST关键成功因素法 CSF企业资源规划法 BSPCSB 三者联系和区别第 3 章系统分析系统分析概述业务流程图系统流程…

【微电网优化】萤火虫算法求解微电网优化问题【含Matlab源码 2146期】

⛄一、萤火虫算法求解微电网经济优化问题简介 利用迭代搜索法、剔除劣势策略法、逆推归纳法和最大最小优化方法[7,8,9]等均可实现博弈均衡点的求解。但当维数较大时, 这些方法可能存在搜索速度、路径和精度上的问题。萤火虫优化算法[10]由于其原理简单、参数少、易于实现、具有…

Maven中依赖无法导入的终极解决方案

maven依赖无法引入的问题解决 修改maven配置 添加阿里云的设置 阿里云云效maven官方配置指南 创建自己的maven库 jdk的导入设置 阿里云仓库官网 仓库服务 (aliyun.com) jar包下载所在位置 在命令终端进行jar包的引入 mvn install:install-file -Dfilejar包所在路径…

【SQLite】二、SQLite 和 HeidiSQL 的安装

作者主页:Designer 小郑 作者简介:浙江某公司软件工程师,负责开发管理公司OA、CRM业务系统,全栈领域优质创作者,CSDN学院、蓝桥云课认证讲师,开发过20余个前后端分离实战项目,主要发展方向为Vue…

生物素标记试剂:(1458576-00-5,1802908-00-4)Biotin-PEG4-alkyne,Dde-生物素-四聚乙二醇-炔

一、Biotin-PEG4-alkyne 【中文名称】生物素-四聚乙二醇-炔,生物素-四聚乙二醇-丙炔基 【英文名称】 Biotin-PEG4-alkyne 【CAS】1458576-00-5 【分子式】C21H35N3O6S 【分子量】457.58 【纯度】95% 【外观】 淡黄色或白色固体 (具体由其分子量大小决定…

web前端网页制作课作业:用DIV+CSS技术设计的静态网站【四大名著】中国传统文化主题题材设计

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

深入ftrace uprobe原理和功能介绍

上一章我们学习了,kprobe 可以实现动态内核的注入,基于中断的方法在任意指令中插入追踪代码,并且通过 pre_handler/post_handler去接收回调。另一个 kprobe 的同族是 kretprobe,只不过是针对函数级别的内核监控,根据用…