时序神经网络推理标准

Timing Neural Network Inference Standards

我需要测量项目的神经网络推理时间。我希望我的结果与学术论文中衡量这一点的标准做法保持一致。

我设法弄清楚的是,我们首先想在计时之前用一些推理来预热 GPU,我需要使用 torch 提供的计时功能(而不是 Python 的time.time()).

我的问题如下:

如有任何建议,我们将不胜感激。谢谢。

  1. 如果您关心推理时间,批量大小应该是首先要优化的东西。并非 NN 中的所有操作都会以相同的方式受到批量大小变化的影响(由于并行化,或者如果所有内核都忙,则线性变化可能不会发生变化)。如果您需要在模型之间进行比较,我会针对每个模型进行优化。如果您不想这样做,那么我会使用训练时间批量大小。我认为在生产中你的批量大小不太可能为 1,除非它不适合内存。

  2. 你应该为两者计时。如果您正在比较模型,数据加载和转换应该不会影响您的决定,但在生产环境中它 很重要。因此,报告这两个数字,在某些设置中,扩大数据加载或模型可能比另一个更容易。

  3. 我会说大约 100。这只是一个经验法则。您希望您的数字具有统计意义。除了平均值之外,您还可以报告 std,甚至绘制分布图(百分位数或直方图或其他)

您还可以比较使用 half 浮点类型作为数据和模型权重时的性能损失与推理时间增益。