CUDA与TensorRT学习四:模型部署基础知识、模型部署的几大误区、模型量化、模型剪枝、层融合

文章目录

一、模型部署基础知识

1)FLOPS和TOPS定义介绍、计算公式

(1)基础定义
  • 学习目标
    ①理解FLOPS和TOPS是什么
    ②CPU/GPU中的计算FLOPS/TOPS的公式
    ③CUDA core和Tensor Core的区别

  • FLOPS定义
    一秒钟可以出来的浮动小数点运算的次数(衡量计算机硬件性能),表示计算机每秒可以执行的浮点数运算次数,衡量计算机性能标准
    在这里插入图片描述

  • TOPS定义
    一秒钟可以处理整形运算的次数
    在这里插入图片描述

  • HPC对比(CPU/GPU 单双精度对比)
    在这里插入图片描述

  • FLOPs:
    衡量模型大小的指标,表示模型中有多少个浮点运算
    在这里插入图片描述

(2)计算公式
  • FLOPS计算公式
FLOPS = 时钟频率 * core数量 * 每个时钟周期可以处理的FLOPS
  • 举例计算
    intel i7 Haswell架构 (8核 ,频率3.0 GHz,两个FMA,支持AVX-256指令集)
    那么双精度:
3.0 * 10^9Hz * 8 core * 16 FLOPS/clk = 0.38 TFLOPS 

16 FLOPS/clk:
2 FMA * 4个FP64的SIMD运算*2 乘加融合(乘法和加法是两个浮点运算) = 16   FLOPS/clk

单精度:

3.0 * 10^9Hz * 8 core * 32 FLOPS/clk = 0.76 TFLOPS

2 FMA * 8个FP64的SIMD运算*2 乘加融合(乘法和加法是两个浮点运算) = 32 FLOPS/clk
  • FMA 计算(加法和乘法融合计算,只需一个时钟周期就可以完成计算
    在这里插入图片描述

  • AVX-256指令集的SIMD操作 (一个指令集处理多个数据)
    在这里插入图片描述

(3)FLOPS在GPU试怎么运算?
  • 与cpu不同的地方
    1)没有AVX这种东西
    2)但是有大量的core来提高吞吐量
    3)有Tensor Core来优化矩阵运算
(4)Ampere SM的电子元件结构
  • 一个SM包括
    在这里插入图片描述
  • 每种精度在一个SM的吞吐量
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2)Roofline model

  • 学习目标
    ①理解什么叫做Roofline model、memory bound、compute bound
    ②理解各个layer的计算密度分类

  • Roofline model定义
    一个衡量计算机软件/硬件性能的一个分析模型
    在这里插入图片描述

  • Roofline model作用
    在这里插入图片描述

  • 关于模型的各种指标
    ①计算量:FLOPs
    ②计算峰值:FLOPS
    ③参数量:Byte,表示模型中所有的weights(主要在conv和FC中),衡量模型大小的标准
    ④访存量:Byte,表示模型中某一个算子,或者某一层layer需要与memory产生read/write的量,是分析模型计算效率的标准之一
    ⑤带宽:Byte/s,表示单位时间内可以传输数据量的多少,衡量计算机硬件memory性能的标准,就比如DDR3/DDR4/GDDR4
    在这里插入图片描述
    这里乘4是因为是FP32计算的,是4字节
    在这里插入图片描述

  • 带宽影响因素
    ①memory clock(GHz):表示单位时间内可以read/write的频率,一般以GHz为单位
    ②memory bus width(Bytes):可以同时读写的数据多少
    ③memory channel:表示通道数量,越多越好

  • 带宽计算举例
    在这里插入图片描述
    在这里插入图片描述

(1)Roofline model相关参数计算(计算密度计算)

①计算密度计算:
单位:FLOPs/Byte
作用:表示的是传送单位数据可以进行的浮点运算数(假如传数据很多耗时很长,但是只进行了一次计算,计算效率就很低),纵轴是计算量峰值,横轴是计算密度,斜率是峰值带宽,分为性能饱和和未饱和区间(性能未饱和区间:读写访存太多了,性能饱和区域:计算量太大了
在这里插入图片描述

  • 用3080 Ampere架构来做Roofline model性能分析
1)Core种类和数量
8704 CUDAT cores
272 Tensor cores
68 SMs
2)计算峰值
(FP32) 29.8 TFLOPS
(FP16) 119TFLOPS
(INT8) 238 TOPS
3)带宽
760.32GB/s
4)频率
1.7GHz

计算峰值曲线图(计算密度峰值 = 横轴 = 纵轴/斜率 = 硬件峰值/带宽)
在这里插入图片描述
得出关系表
在这里插入图片描述

(2)卷积分析conv核函数算子的各个参数对计算密度的影响FP32(kernel size、Output size、channel size、group convolution、tensor reshape、FC)

核函数kernel size对计算密度的影响:

  • 参数解释
M: 卷积核输出特征图的H高和W宽。不同的时候可以用Mh和Mw表示
K:卷积核大小

在这里插入图片描述
在这里插入图片描述

可以看到kernel size也就是卷积核大小逐步变化

  • 总结
    1x1 conv虽然减少计算量,但是计算密度很低。随着kernel size增大,计算密度增长率逐渐下降

②Output size对计算密度的影响
在这里插入图片描述

  • 总结
    1x1 conv虽然减少计算量,但是计算密度很低。随着Output size增大,计算密度增长率逐渐下降

③channel size对计算密度的影响
在这里插入图片描述

  • 总结
    随着channel size增大,计算密度增长率逐渐下降

④group convolution对计算密度影响
在这里插入图片描述

  • 总结
    group conv对计算密度的影响,depthwise虽然降低了计算量,但是计算密度也下降很多

⑤tensor reshape的影响
在这里插入图片描述
在这里插入图片描述

  • 总结
    reshape多,那计算密度就降低,reshape不参与计算
    ⑥FC对计算密度的影响
    在这里插入图片描述

  • 总结
    FC计算密度低在于有大量的访存

(3)对整个模型进行Roofline model分析

在这里插入图片描述

①用3080 RTX Ampere架构去看各个模型的计算密度(都没有达到计算密度的饱和)
在这里插入图片描述

②如果把模型部署在jetson上

  • jetson Xavier AGX Volta架构配置
1)Core种类和数量
512 CUDAT cores
64 Tensor cores
8 SMs
2)计算峰值
(FP32) 1.4 TFLOPS
(FP16) 11 TFLOPS
(INT8) 22 TOPS
3)带宽
137GB/s
4)频率
900MHz

画出roofline的图<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值