文章目录
一、模型部署基础知识
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的图<