随着深度学习模型的发展,模型越来越大,网络参数越来越多,对算力的要求也越来越高。但在端侧和云端部署时,其算力相对有限,因此如何缩小模型成为一个问题。
一、基础参数
- FLOPs,浮点运算次数(Floating-point Operations),可以认为是计算量,用于衡量模型的时间复杂度。
- FLOPS,每秒执行的浮点运算次数(Floating-point Operations Per Second),可以理解为计算速度,用于衡量模型速度的指标。
- MACs,乘-加操作次数(Multiply-accumulate Operations),MACs 大约是 FLOPs 的一半,因为一次卷积操作包含一次浮点加法和一次浮点乘法操作。
- Params,模型含有多少参数直接决定了模型的大小,也影响推断时对内存的占用量,单位通常以 M(兆)
个表示,参数通常用 float32(4 字节)表示,因此模型大小是参数数量的 4 倍左右。
例如,10M Params = 10M x 4 byte = 40 MB
- MAC,内存访问代价(Memory Access Cost),指的是输入单个样本,模型 / 卷积层完成一次前向传播所发生的内存交换总量,即模型的空间复杂度,单位是 byte。
- Bandwidth,内存带宽(Memory Bandwidth)表示将数据从 RAM 移动到处理单元(xPU)的速度,比计算速度更有代表性,它取决于内存和处理单元间的数据传输速度。
二、CNN 模型小型化工作
这些工作慢慢看
三、Transformer 模型小型化工作