我需要為一個專案測量神經網路的推理時間。我希望我提交的結果能夠與學術論文中測量的標準做法相一致。
我設法弄清楚的是,我們首先要在計時之前用一些推理來預熱 GPU,而且我需要使用 torch 提供的計時功能(而不是 Python 的 time.time())。
我的問題如下:
- 是用1的批處理量計時,還是用該硬體的最佳批處理量計時?
- 我是否只對神經網路推理進行計時,還是也對將資料移至 GPU 以及推理前的資料轉換進行計時?
- 為了獲得良好的平均推理時間,對多少次迭代進行計時是合理的?
如果有任何建議,我們將不勝感激。謝謝。
uj5u.com熱心網友回復:
如果你關心的是推理時間,那么批量大小應該是首先要優化的東西。在NN中,并非所有的操作都會受到批處理規模變化的影響(你可能不會因為并行化而發生變化,或者如果所有的內核都很忙,就會發生線性變化)。如果你需要在不同的模型之間進行比較,我會對每個模型進行優化。如果你不想這樣做,那么我會使用訓練時的批量大小。我認為在生產中,你不太可能有一個1的批處理量,除非它不適合在記憶體中。
你應該對兩者進行計時。如果你正在比較模型,資料加載和轉換不應該影響你的決定,但在生產環境中,它會很重要。因此,報告這兩個數字,在某些環境中,擴大資料加載或模型的規模可能比另一個更容易。
我會說100左右。這只是一個經驗法則。你希望你的數字在統計學上有意義。你也可以在平均數之外報告
std,或者甚至繪制分布圖(百分位數或直方圖或其他)
當為您的資料和模型權重使用half浮點型別時,您還可以比較性能損失與推理時間的增益。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/316560.html
標籤:
