模型推理速度与硬件算力

1. 模型大小衡量指标

1.1 参数量

这里的参数量就是指模型的权重,对于 CNN 网络而言,主要就集中在 Conv 和 FC 层。

参数量主要会体现在模型的物理大小(硬盘占用大小),在运行时也会体现在内存(显存)占用上,对运行速度没有直接的影响(间接的影响显然是存在的)。具体来说就是,如果模型硬盘占用很大,显然会影响最终软件的大小,如果模型内存占用很多,显然会影响一块显卡(或其他硬件)能同时加载模型的数量。

参数量可以借助 thop,summary 或者 summaryx 获得。

1.2 计算量

  • FLOPs(Floating Point Operations)浮点计算次数,注意区别,不是 FLOPS,FLOPS(Floating Point Operations Per Second) 是一种衡量硬件计算速度的指标。

    比如对于 Conv 操作来说,乘和加各算一次操作,那么如果输入为 (N,C,H,W)(N, C, H, W)(N,C,H,W),卷积核为 (kh,kw,C,Cout)(k_h, k_w, C, C_{out})(kh​,kw​,C,Cout​), 输出尺寸为 (N,Cout,Hout,Wout)(N, C_{out}, H_{out}, W_{out})(N,Cout​,Hout​,Wout​),计算量如下:

    FLOPs=N∗Cout∗Hout∗Wout∗Kh∗kn∗C∗2FLOPs = N*C_{out}*H_{out}*W_{out}*K_h*k_n*C*2 FLOPs=N∗Cout​∗Hout​∗Wout​∗Kh​∗kn​∗C∗2

当然我们并不需要一个一个算子的去手算,pytorch 中可以借助summary 或者 summaryx 等工具查看。

1.3 访存量

MACs(Memory Access Costs) 是指模型计算时所需访问存储单元的字节大小,反映了模型对存储单元带宽的需求。访存量一般用 Bytes(或者 KB/MB/GB)来表示,即模型计算到底需要存/取多少 Bytes 的数据。

比如两个 size 为 (N,C,H,W)(N, C, H, W)(N,C,H,W) 的 tensor 进行 ele-wise 相加,其涉及到读取两个 tensor,和存放一个 tensor 结果。所以总的访存量可以表示如下:
MACs=(2+1)∗N∗C∗H∗W∗sizeof(datatype)MACs = (2+1)*N*C*H*W*sizeof(data_type) MACs=(2+1)∗N∗C∗H∗W∗sizeof(datat​ype)
对于上面的卷积来说,其访存量如下:
MACs=MACsinput+MACsweight+MACsoutput=[(N∗C∗H∗W)+(kh∗kw∗C∗Cout)+(N∗Cout∗Hout∗Wout)]∗sizeof(datatype)\begin{aligned} MACs &= MACs_{input} + MACs_{weight} +MACs_{output} \\ &= [(N*C*H*W) + (k_h*k_w*C*C_{out}) + (N*C_{out}*H_{out}*W_{out})]*sizeof(data_type) \end{aligned} MACs​=MACsinput​+MACsweight​+MACsoutput​=[(N∗C∗H∗W)+(kh​∗kw​∗C∗Cout​)+(N∗Cout​∗Hout​∗Wout​)]∗sizeof(datat​ype)​
访存量对模型的推理速度至关重要,设计模型时需要予以关注。

MACs 可以借助 thop 获得。

1.4 内存占用

内存占用是指模型运行时,所占用的内存/显存大小,这个主要是影响并发运行的模型数量。这个一般只能在模型运行前后,通过查看硬件的信息来观察得出内存占用情况。比如对于 Nvidia 的显卡,可以通过 nvidia-smi来查看硬件数据。

2. 计算平台运算能力衡量指标

2.1 算力(π\piπ)

算力指计算平台的性能上限,指的是一个计算平台倾尽全力每秒钟所能完成的浮点运算数。也就是上面提到的 FLOPS

2.2 带宽(β\betaβ)

计算平台的带宽上限,指的是一个计算平台倾尽全力每秒所能完成的内存交换量。单位是Byte/s

2.3 计算强度上限(ImaxI_{max}Imax​)

计算强度上限描述的是在这个计算平台上,单位内存交换最多用来进行多少次计算。单位是FLOP/Byte
Imax=πβI_{max} = \frac{\pi}{\beta} Imax​=βπ​

3. Roofline 模型

Roofline 模型是试图对硬件和程序通盘考虑,用于评估程序在硬件上能达到的性能上界的模型。具体可以参考论文 Roofline: An Insightful Visual Performance Model for Floating-Point Programs and Multicore Architectures

其实这个 Roofline 模型所讲的就是一个道理:硬件的算力和带宽都会限制计算强度,上面的折线的上升部分,显然没有达到峰值计算速度(访存密集区),此时的限制主要在于带宽,而到了水平部分(算力密集区),此时限制计算速度的是硬件的算力。

4. 修正的 Roofline 模型

4.1 硬件限制对性能上界的影响

上面提到的宽带峰值和算力峰值都是理论值,但在实际情况下,硬件会因为种种原因,无法达到这个理论值。因此建议大家对硬件进行micro-benchmark,以获取硬件的真实性能上限

对于算力和内存的测试方法可以参考:

  • 浮点峰值那些事儿
  • stream

4.2 系统环境对性能的影响

4.3 软件实现对性能的影响

5. 计算密集型算子与访存密集型算子

网络中的算子可以根据计算密度进行分类。一般来讲,Conv、FC、Deconv 算子属于计算密集型算子;ReLU、EltWise Add、Concat 等属于访存密集型算子。

同一个算子也会因参数的不同而导致计算密度变化,甚至改变性质,比如在其他参数不变的前提下,增大 Conv 的 group,或者减小 Conv 的 input channel 都会减小计算密度。

算子的计算密度越大,越有可能提升硬件的计算效率,充分发挥硬件性能

6. 模型与硬件匹配

VGG16 的计算量大约是 MobileNe V1 的 30 倍,但是如果把两个模型放在 1080Ti 上做推理,速度的上差异并没有这么夸张,这主要就是 MobileNet V1 由于计算强度的原因,并不能真正发挥 1080Ti 的优势,而更适合在嵌入式设备上运行。

参考

  • 深度学习模型大小与模型推理速度的探讨

  • Roofline Model与深度学习模型的性能分析

模型推理速度与硬件算力相关推荐

  1. 【Roofline 推理速度】影响深度学习模型推理速度的因素及相关基础知识

    文章目录 1 问题分析 2 计算平台角度分析 2.1 算力 π 2.2 带宽 β\betaβ 2.3 计算强度上限 ImaxI_{max}Imax​ 3 模型自身的性能评价指标 3.1 计算量与参数量 ...

  2. 图像处理深度学习模型训练速度的硬件影响因素

    深度学习训练速度的影响因素 1 数据流通路径 2影响速率的因素 2.1硬盘读取速度 2.2PCle传输速度 2.3内存读写速度 2.4cpu频率 2.5 GPU 其他名词 以图象训练任务为例,从CPU ...

  3. 最新组合式模型量化方法,实现FPGA最高硬件利用率,准确率-推理速度达到SOTA...

    作者 | 王言治 来源 | AI科技大本营(ID:rgznai100) 深度神经网络(DNN)在图像.语言处理等领域获得了巨大成功,而如何将这些网络部署在ASIC.FPGA等嵌入式设备仍是热门研究方向 ...

  4. 深度学习模型参数量/计算量和推理速度计算

    作者|龟壳 来源 | 知乎 地址 | https://zhuanlan.zhihu.com/p/376925457 本文仅作学术分享,若侵权请联系后台删文处理 本文总结了一些关于模型参数量计算以及推理 ...

  5. 模型压缩高达75%,推理速度提升超20%,百度Paddle Lite v2.3正式发布

    如今,诸如计算机视觉.智能语音交互等基于深度学习的AI技术,在满足日常应用层面上已经非常成熟.比如,人脸识别闸机在机场.地铁.办公楼.学校等地方随处可见.什么都不用带,只要刷个脸就行,方便快捷又省事! ...

  6. 阿里云PAI-Diffusion功能再升级,全链路支持模型调优,平均推理速度提升75%以上

    导读 随着Stable Diffusion模型在AI圈的爆火,AI生成内容(AI Generated Content,AIGC)的应用呈现出井喷式的增长趋势.其中,文图生成(Text-to-image ...

  7. 较为详细的记录总结TensorRT的python接口的使用,环境配置,模型转换和静态动态模型推理

    先来一段摘抄自网上的TensorRT介绍: TensorRT是英伟达针对自家平台做的加速包,TensorRT主要做了这么两件事情,来提升模型的运行速度. TensorRT支持INT8和FP16的计算. ...

  8. 谁说学生模型就得小?稀疏化DAN模型推理可提速600倍

    ©PaperWeekly 原创 · 作者 | BNDSBilly 研究方向 | 自然语言处理 Abstract 有效提升模型推理速度的方式是对 SOTA 的 Transformer 模型进行压缩,然而 ...

  9. 精度45.9%,推理速度72.9FPS,百度飞桨推出工业级目标检测模型 PP-YOLO

    允中 发自 凹非寺 量子位 编辑 | 公众号 QbitAI 工业视觉.自动驾驶.安防.新零售等我们身边熟知的各行各业都需要目标检测技术,由于其很好的平衡了标注成本.检测精度和速度等,成为当前智能制造产 ...

  10. 【读点论文】EfficientFormer: Vision Transformers at MobileNet Speed,运用纯transformer架构对比卷积模型在终端上部署的推理速度

    EfficientFormer: Vision Transformers at MobileNet Speed Abstract 视觉transformer(ViT)在计算机视觉任务中取得了快速的进展 ...

最新文章

  1. joomla 1.7遇到的麻烦——不能删除模板的解决办法
  2. 张鸿轩:大数据让无形之风尽在掌握 | 优秀毕业生专访
  3. 《AutoCAD 2016中文版室内装潢设计从入门到精通》——第2章 AutoCAD 2016入门2.1 操作界面...
  4. mysql如何处理图片吗_如何解决mysql插入图片后缀名问题?
  5. linux install StarDict
  6. sql行数少于10_如何用少于100行的代码创建生成艺术
  7. C++ 梳理(一):跑通简单程序
  8. DBA必知的mysql备份与还原的几大方法
  9. 嵌入式操作系统内核原理和开发(任务创建和堆栈溢出检查)
  10. Uvalive - 3026 Period (kmp求字符串的最小循环节+最大重复次数)
  11. java反射作用与意义
  12. 导航守卫与keep-alive
  13. 智能优化算法:蝴蝶优化算法-附代码
  14. 全国地址SQL数据文件(精确到区县)
  15. 微信小程序如何跳转到tabbar页面-陆大湿
  16. 谷歌李开复 我的传奇人生源于十句箴言
  17. python中oserror是什么意思,python – OSError:[错误1]不允许操作
  18. win系统服务器做加速,Win 2003操作系统25招加速大法(转)
  19. 对抖音App评论进行抓取
  20. 基于JAVA社区老人健康服务跟踪系统计算机毕业设计源码+数据库+lw文档+系统+部署

热门文章

  1. CAD打印adobe acrobat pro/DC 安装的PDF打印机闪退问题
  2. xp系统一直跳出宽带连接服务器,xp系统一直显示正在获取网络地址的操作方案...
  3. flash提示版本过低导致无法安装解决方法
  4. 如何卸载快压病毒流氓软件--不停自动下载安装App
  5. AutoRunner使用说明
  6. 电子设计自动化实验 实验三 频率计制作
  7. 京东开始卖钻石了!?
  8. o2o是什么营销模式c语言求幂函数,O2O营销模式的特点是什么,o2o模式的运营方式...
  9. VS2015 LNK2001:无法解析的外部符号 debug调试
  10. 正则表达式校验手机号