1. 程式人生 > 實用技巧 >batchsize大小對訓練速度的影響

batchsize大小對訓練速度的影響

1.batchsize越大 是不是訓練越快?

GPU :一塊2080Ti
平臺:pytorch cuda
圖片數量:2700

batchsize一個圖片處理時間GPU記憶體佔用GPU算力使用一個epoch 所用時間
10.117s2.5G20%2700 * 0.0117 = 318s
50.516s8G90%2700 * 0.516/5 = 279s

batchsize大了之後,佔用的資源多了,算力多了,但是速度沒有提升,這樣是不是太坑了
我們其實可以把 batchsize設定小點,然後把剩餘的記憶體跑其他實驗,而且再在同一張卡上跑一個新的實驗,對之前的速度也沒有影響。

結論:
1.本人實驗 batchsize越大,訓練速度提升不大


2.bachsize小點,多跑幾個實驗真香

完成每個epoch運算的所需的全部時間主要卡在:

  1. load資料的時間,
  2. 每個epoch的iter數量。
  3. 因此對於每個epoch,不管是純計算時間還是全部時間,大體上還是大batch能夠更節約時間一點,但隨著batch增大,iter次數減小,完成每個epoch的時間更取決於載入資料所需的時間,此時也不見得大batch能帶來多少的速度增益了。

2.batchsize大了,是不是結果會變好?

收集資料發現,確實是這樣的,但是也不能太大了

在這裡插入圖片描述

  1. Batch_Size 太小,演算法在 200 epoches 內不收斂。
  2. 隨著 Batch_Size 增大,處理相同資料量的速度越快。
  3. 隨著 Batch_Size 增大,達到相同精度所需要的 epoch 數量越來越多。
  4. 由於上述兩種因素的矛盾, Batch_Size增大到某個時候,達到時間上的最優。
  5. 由於最終收斂精度會陷入不同的區域性極值,因此 Batch_Size增大到某些時候,達到最終收斂精度上的最優。