Pytorch訓練加速技巧小結

1.有時我們會發現,使用Pytorch的模型,訓着訓着,越來慢了或者outofmemory,這時我們該怎麼解決呢?

    主要是因爲,模型可能在不斷的產生臨時變量這個時候,我們可以設置程序每隔多少次進行一次清除操作:torch.cuda.empty_cache()

 

2.在數據讀取速度不變的情況下,怎樣進一步提高模型的訓練速度呢?

    PyTorch 會默認使用 cuDNN 加速並且cuDNN 裏面是有很多加速算法,有些加速算法是針對大矩陣,有些加速算法是針對小矩陣 torch.backends.cudnn.benchmark=False,會導致,模型所選擇的cuDNN裏面的加速算法只是一個通用的,並不是最優。當 torch.backends.cudnn.benchmark=True的時候,模型就會爲每一步選擇一個最優cuDNN 加速算法,所以第一步的訓練速度是慢於常規,但後面都是快於常規。

    但使用這個是有一個前提,模型結構在訓練過程中是不變化的,傳入數據批次和大小數也是不變的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章