【问题标题】:Timing Neural Network Inference Standards时序神经网络推理标准
【发布时间】:2021-09-17 11:41:23
【问题描述】:

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

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

我的问题如下:

  • 标准的时间是批量大小为 1,还是该硬件的最佳批量大小?
  • 我是只对神经网络推理进行计时,还是对将数据移动到 GPU 以及推理之前的数据转换进行计时?
  • 多少次迭代才是合理的时间以获得良好的平均推理时间?

任何建议将不胜感激。谢谢。

【问题讨论】:

    标签: machine-learning deep-learning neural-network pytorch


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

    2. 你应该同时计时。如果您要比较模型,数据加载和转换不应影响您的决定,但在生产环境中很重要。所以报告这两个数字,在某些情况下,扩大数据加载或模型可能比另一个更容易。

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

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

    【讨论】:

      猜你喜欢
      • 2019-11-22
      • 1970-01-01
      • 2017-07-25
      • 2011-01-22
      • 2017-08-31
      • 2011-01-19
      • 1970-01-01
      • 2019-05-10
      • 2017-12-21
      相关资源
      最近更新 更多