機器學習框架TensorFlow釋出更新,PyTorch也緊接著推出PyTorch 1.6版本,而更新的方向也與TensorFlow方向相似,同樣也釋出了新的API改進效能,而且也提供新的效能分析工具,供用戶掌握模型運作情況。另外,這個版本讓用戶能夠混用分散式資料平行(Distributed Data Parallel,DDP),以及遠端程序呼叫(Remote Procedure Call,RPC),來改進分散式訓練的效能。

在PyTorch 1.6,由Nvidia貢獻的自動混合精度(Automatic mixed precision,AMP)訓練功能已經進入穩定階段,AMP訓練能在Tensor Core GPU上實現高效能,並節省高達50%的記憶體。

AMP API提供簡單使用混合精度的方法,官方提到,在像是線性層(Linear Layer)或是卷積操作上,float16運算較快,但像是Reduction運算又需要float32的動態範圍,而現在有了AMP功能,便可以在部分資料操作使用float16,另一部分則使用float32,混合精度功能會嘗試為每個運算,使用相符的資料類型。

與TensorFlow 2.3更新相同,PyTorch也增加了記憶體分析器,在其torch.autograd.profiler的API中加入記憶體分析器,讓用戶能夠查看CPU和GPU中,不同運算的張量記憶體消耗。

在這個版本,官方也下功夫改進分散式訓練。PyTorch的分散式功能支援兩種使用案例DDP和RPC,DDP是使模型能以全同步資料平行進行訓練,而RPC框架則是能平行化分散式模型,過去這兩個功能獨立運作,無法互相互用。

從PyTorch 1.6開始,DDP和RPC能夠無縫協作,用戶可以結合兩項技術,以實現資料平行與模型平行。官方提到,這將使用戶能夠在參數伺服器中,存放大型的嵌入表,並使用RPC框架進行嵌入查詢,而非只能儲存較小的密集參數,還要使用DDP來同步密集參數。

PyTorch 1.6的RPC模組使用了新後端,這個後端採用TensorPipe函式庫開發,以補充目前PyTorch中的分散式訓練原語,TensorPipe的配對以及非同步網路通訊,使得RPC能夠支援用戶與伺服器架構、模型和工作管線平行化訓練。

在PyTorch 1.6新功能發布的同時,官方也提到,新功能使用新的分類方法,現在新功能會被分類成穩定版、測試版以及原型。測試版是指那些已經通過驗證,證明其具有加入PyTorch框架的價值,只是API還可能會更改,或還有效能和影響範圍等問題尚待解決。

而功能原型則是新功能提案,希望能夠從使用者端獲得大量的回饋,反應良好的原型功能可被放進測試版中,反應不好的便可就此打住,不進一步開發,不過,功能原型不會被放到發布的二進位檔案中,想要嚐鮮的用戶需要自己從原始碼編譯,或使用Nightly等版本。


Advertisement

更多 iThome相關內容