模型的推理速度

1. 模型大小的四种描述

模型的推理速度_第1张图片

2. 计算量、访存量与推理速度的关系

2.1 计算密度

从上面可以看出计算量和访存量都能影响模型的推理速度,那么进一步定义计算密度为计算量除以访存量,如下:

模型的推理速度_第2张图片

计算密度用于反映一个程序是计算更为密集,还是访存更为密集。

  • 计算密集型程序:Compute bound
  • 访存密集型程序:Memory bound

2.2 Roofline 模型

一种用于评估程序在硬件上能达到的性能上界的数学模型。

横轴表示计算密度,在2.1我们讲述每一个模型都有一个计算密度,也就是说横轴表示的是模型。纵轴表示的是计算速度。

这个数学模型表示,在这块硬件上跑某一个模型(给出一个计算密度)所能达到的最佳的计算速度。

模型的推理速度_第3张图片

可以看出来这个是一个分段函数:

  • 对于访存型密集程序:计算速度 = 计算密度 × 带宽,即与硬件的带宽有非常大的关系。
  • 对于计算型密集程序,计算速度 = 峰值计算速度,即与硬件的算力(峰值计算速度)有很大关系。

2.3 推理速度

在2.2的部分给出了计算速度的计算方式,知道了计算速度就可以计算出来推理速度,如下

模型的推理速度_第4张图片

对于访存密集的计算公式是:

计算量/计算速度 = 计算量 / (计算密度 * 带宽) = 计算量/(计算量 * 带宽 /访存量) = 访存量/带宽

这里我们没有像上面那样区分程序,而是变为算子,因为一个模型中可能既有访存密集型的算子,也有计算密集的算子,因此推理速度也没有像上面的公式一样严格区分,而是比较复杂的。

  • 访存密集型算子:Concat、Eltwise Add、ReLU、MaxPooling……
  • 计算密集型算子:Conv、DeConv、FC、MatMul、LSTM……

你可能感兴趣的:(深度学习,模型推理,推理)