雜亂大全10-(Python系列)計算PyTorch或TensorFlow預測(辨識)執行時間

  • 主題:雜亂大全10-(Python系列)計算PyTorch或TensorFlow預測(辨識)執行時間
  • 前言:接續前篇的調用time
tags: 六角學院

本篇重點:

  1. 調用time()來計算PyTorch或TensorFlow預測(辨識)執行時間

此兩種框架調用時間有Asynchronous的不同

如果執行時會異步進行,
需要等待前面任務作完,
再紀錄時間
避免時間計算上有錯誤!

PyTorch版-須同步

等待cuda執行完,再紀錄時間
使用torch.cuda.synchronize()

1
2
3
4
5
6
torch.cuda.synchronize()
start = time.perf_counter()
my_model.predict(images_test)
torch.cuda.synchronize()
end = time.perf_counter()
print("pred_time:",end-start)

TensorFlow版-不須同步

1
2
3
4
start = time.perf_counter()
result=my_model.predict(images_test)
end = time.perf_counter()
print("pred_time:",end-start)

可使用多次預測,查看預測時間的List

1
2
3
4
5
6
7
pred_time_list=[]
for i in range(10):
start = time.perf_counter()
result=my_model.predict(images_test)
end = time.perf_counter()
pred_time_list.appebd( end-start )
print(pred_time_list)

小結語:

兩者框架在預測(辨識)時,需參考異步問題,避免計算的時間有誤

  • 提醒:首次的預測(辨識)通常都會比較慢,因須載入資料

後續:

將介紹一些基礎的Python實作


參考連結

[資料1]
https://discuss.pytorch.org/t/doing-qr-decomposition-on-gpu-is-much-slower-than-on-cpu/21213/6
[資料2]
https://discuss.pytorch.org/t/is-there-any-code-torch-backends-cudnn-benchmark-torch-cuda-synchronize-similar-in-tensorflow/51484/2