PyTorch中神经网络推理时间的波动

时间:2019-12-08 18:32:50

标签: python neural-network pytorch

我有一个神经网络,我想通过在CPU上运行来测试其推理时间。重要的是要尽可能准确地测量时间。

我使用以下代码来获取网络的推理时间:

with torch.no_grad():
    for image, _ in testloader:
        start = time.time()
        net(image)
        total_time = time.time() - start

问题是,即使我通过网络传递相同的图像(尽管在这种情况下,“图像”实际上是一批图像)并且重复执行多次,但推理时间也会随着最小和最大时间达到30毫秒甚至更长。

另外,在运行测试之前,我已确保操作系统尽可能减少对进程的干扰-关闭所有应用程序。

我想了解这种波动的确切来源。据我了解,如果同一图像通过网络传递,则无论我进行了多少次测试(至少从理论上来讲),都应该花费相同的时间对其进行分类。

那是什么原因导致这些波动的呢?有办法消除它们吗?

1 个答案:

答案 0 :(得分:0)

如果您运行标准焊炬模型,则焊炬将创建执行图并执行一些缓存;这使得首次运行的时间比其他运行时间更长。我还注意到在某些情况下迭代期间gc行为的细微差别。

通过将模型转换为TorchScript模型,可以(部分)避免这些问题。

此外,您还应该检查数据加载器并修复任何随机性。