文章目录
- 一、模型部署基础知识
- 1)FLOPS和TOPS定义介绍、计算公式
- (1)基础定义
- (2)计算公式
- (3)FLOPS在GPU试怎么运算?
- (4)Ampere SM的电子元件结构
- 2)Roofline model
- 二、模型部署的几大误区
- 三、模型量化
- 1)mapping-and-shift
- 2)quantization-granularity
- 3)calibration-algorithm
- 4)PTQ-and-quantizatin-analy
- 5)QAT-and-layer-fusion
- 四、模型剪枝
- 1)pruning granularity
- 2)channel level pruning
- 3)sparse tensor core
- 五、层融合
一、模型部署基础知识
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的吞吐量