模型大小与模型推理速度
常用的模型大小评估指标
- 计算量 FLOPs (Floating Point Operations),即浮点计算次数(乘加各算一次)
- 参数量 对于 CNN 来说参数主要由 Conv/FC 层的 Weight 构成
- 访存量 指模型计算时所需访问存储单元的字节大小,反映了模型对存储单元带宽的需求。访存量一般用 Bytes(或者 KB/MB/GB)来表示
- 内存占用 指模型运行时,所占用的内存/显存大小 (≠ 访存量)
影响模型在硬件上推理速度的一些因素
计算密度与 RoofLine 模型
计算密度(计算访存比)是指一个程序在单位访存量下所需的计算量,单位是 FLOPs/Byte
RoofLine 模型是一个用于评估程序在硬件上能达到的性能上界的模型
计算密集型算子与访存密集型算子
一般来讲,Conv、FC、Deconv 算子属于计算密集型算子;ReLU、EltWise Add、Concat 等属于访存密集型算子
算子的计算密度越大,约有可能提升硬件的计算效率,充分发挥硬件性能
推理时间
对于访存密集型算子,推理时间跟访存量呈线性关系,而对于计算密集型算子,推理时间跟计算量呈线性关系。
总结:计算量并不能单独用来评估模型的推理时间,还必须结合硬件特性(算力&带宽),以及访存量来进行综合评估。