Transformers 是一個強大的架構,但模型因其採用的自注意力機制,雖然能夠有效地處理序列數據並捕獲長距離依賴關係,但同時也容易導致在訓練過程中出現OOM(Out of Memory,內存不足)或者達到GPU的運行時限制。
主要是因爲
- 參數數量龐大:Transformer模型通常包含大量的參數,尤其是在模型層面進行擴展時(例如,增加層數或頭數)。這些參數需要大量的內存來存儲權重和梯度。
- 自注意力計算:自注意力機制需要對輸入序列的每個元素與其他所有元素計算其相互關係,導致計算複雜度和內存需求隨着輸入長度的增加而顯著增加。對於非常長的序列,這一點尤其突出。
- 激活和中間狀態存儲:在訓練過程中,需要存儲前向傳播中的中間激活狀態,以便於反向傳播時使用。這增加了額外的內存負擔。
爲了解決這些問題,我們今天來總結以下一些常用的加速策略