由臉書發起的開源深度學習框架PyTorch,現在釋出最新1.9版本,自1.8版本以來,由398位貢獻者發出3,400次程式碼提交完成,該框架發展迅速,這次的更新內容也是相當豐富,包括大幅改進對科學運算的支援外,還加入新的行動直譯器,來改善行動裝置上的二元檔大小,並且強化GPU大規模分散式訓練的支援。

這次更新的科學運算前端API,包括穩定版本的torch.linalg、Complex Autograd和測試版的torch.special。由於線性代數是深度學習和科學運算中,不可或缺的工具,因此官方加入了torch.linalg模組,來擴展了PyTorch對線性代數的支援,該模組實作了NumPy中線性代數的所有函式,因此對於原本就熟悉NumPy的開發者,可以快速上手。

Complex Autograd在PyTorch 1.8的時候,就以測試版本加入,現在已經進入穩定階段,自測試版以來,官方已經為98%的運算子加入Complex Autograd的支援。Complex Autograd能自動計算複雜梯度,並且最佳化實值(Real Valued)損失函式,能夠對PyTorch下游專案包括TorchAudio、ESPNet、Asteroid和FastMRI,提供更好的運算支援。還在測試階段的torch.special,則類似SciPy特殊模組,該模組包含許多科學運算和好用的函式。

行動裝置部分的改進,最大的亮點在於加入了測試版行動直譯器,這是PyTorch Runtime的輕量版本,可在邊緣裝置執行PyTorch程式,並且大幅縮減二元檔案大小。官方提到,行動直譯器是眾所期待的功能,目前在Android中使用MobileNetV2的pt格式檔案,在未壓縮前17.8 MB,壓縮後是8.6 MB,而透過使用行動直譯器,未壓縮檔案大小會是8 MB,壓縮後會落在4 MB左右。

在分散式訓練套件方面,TorchElastic終於成為PyTorch核心的一部分,TorchElastic已經在GitHub pytorch/elastic儲存庫中開源一年多,現在終於正式進入PyTorch核心。TorchElastic的核心功能便是能夠有彈性地處理縮放事件,可以說是PyTorch工作程序的執行器和協調器,並且能讓用戶使用先占式執行個體,進行分散式訓練。

除了TorchElastic,分散式訓練更新還包括在RPC(Remote Procedure Call)中提供CUDA支援,官方提到,與CPU RPC和通用RPC框架相比,CUDA RPC是一個更具效率的P2P張量通訊方法,甚至可實現CPU RPC的34倍速。CUDA RPC建立在TensorPipe上,可以根據Tensor裝置類型和通道可用性,自動替每個張量選擇通訊通道。

PyTorch 1.9加入了新的模型打包方法,開發者使用torch.package就能夠以自包含且穩定的格式,打包PyTorch模型,模型包中會包含參數等模型資料,以及模型架構程式碼。官方提到,用torch.package可以完整打包模型的相依項目,並且加入帶有Conda環境的描述檔,能簡單地重現訓練工作負載。

熱門新聞

Advertisement