首頁 > 科技

PyTorch 1.9釋出,支援新API,可在邊緣裝置中執行

2021-06-16 22:50:26

機器之心報道

編輯:陳萍

PyTorch 團隊釋出了 PyTorch 1.9 版本。該版本整合了 1.8 版本釋出以來的 3,400 多次 commit,398 名貢獻者參與更新。提供了包括支援科學計算、前端 API、大規模分散式訓練等主要改進和新特性。

近年來,深度學習框架 PyTorch 憑藉著其對初學者的友好性和靈活性,發展迅猛。不久之前,PyTorch 官方部落格釋出 1.8 版本,此版本由 1.7 釋出以來的 3000 多個 commit 組成,重要更新內容包括在編譯、程式碼優化和科學計算前端 API 方面的優化和改進,以及通過 pytorch.org 提供的二進位制檔案來支援 AMD ROCm。

現在 PyTorch 官方宣佈 PyTorch 1.9 釋出了!

完整文件地址:https://pytorch.org/blog/pytorch-1.9-released/GitHub 地址:https://github.com/pytorch/pytorch/releases

自 PyTorch 1.8 版本釋出以來,本次新版本的釋出包含了 3,400 多個 commit,398 名貢獻者參與更新。本次新版的更新,主要包含以下亮點:

支援科學計算方面的重大改進,現已支援 torch.linalg、torch.special 以及 Complex Autograd;使用 Mobile Interpreter 對裝置上的二進位制大小進行重大改進;通過 TorchElastic 向 PyTorch Core 上游提供對彈性容錯訓練的本地支援;PyTorch RPC 框架的更新,以支援 GPU 的大規模分散式訓練;為模型推理部署優化效能和封裝的新 API;支援 PyTorch Profiler 中的分散式訓練、GPU 利用率和 SM efficiency。

(注:從 PyTorch 1.6 版本開始,PyTorch 特性分為 Stable(穩定版)、Beta(測試版)和 Prototype(原型版)。

此外,除了 PyTorch 1.9 的釋出,該團隊還發布了 PyTorch 庫的主要更新。

PyTorch 庫更新地址:https://pytorch.org/blog/pytorch-1.9-new-library-releases/

PyTorch 1.9 新特性

前端 API

torch.linalg:在 PyTorch 1.9 中, torch.linalg 模組正在向穩定版本靠近。線性代數對深度學習和科學計算至關重要,torch.linalg 模組擴展了 PyTorch 對線性代數的支援,實現了 NumPy 的線性代數模組(現在支援 accelerators 和 autograd)中的每一個函數等等。

為了幫助偵錯和編寫程式,PyTorch 1.9 包含了 torch.use_determinstic_algorithms option。啟用此設定後,如果可能,操作的行為將是確定性的;如果操作的行為不可確定,則拋出運行時錯誤。以下是幾個例子:

PyTorch Mobile

PyTorch 團隊正在釋出 Mobile Interpreter,一個 PyTorch 運行時的簡化版本,beta 版。Interpreter 將在邊緣裝置中執行 PyTorch 程式,減少二進位制大小的佔用。

TorchVision 庫:從 PyTorch 1.9 開始,使用者可以在 iOS/Android 應用程式上使用 TorchVision 庫。Torchvision 庫包含了 C++ 的 Torchvision 操作,需要與 iOS 的主 PyTorch 庫連結在一起,對於 Android,可以將其作為一個 gradle 依賴新增。這允許使用 TorchVision 預先構建的 MaskRCNN 操作符進行物件檢測和分割。

PyTorch 團隊正在釋出一個基於 PyTorch Video 庫的新視訊應用程式和一個基於最新 torchaudio、wave2vec 模型的更新語音識別應用程式。這兩個版本都可以在 iOS 和 Android 上使用。此外,研究團隊還更新了 7 個計算機視覺和 3 個自然語言處理演示應用程式,包括 HuggingFace DistilBERT 和 DeiT Vision transformer 模型,以及 PyTorch Mobile v1.9。隨著這兩個應用程式的加入,現在提供了一整套演示應用程式,包括影象、文字、音訊和視訊。

分散式訓練

TorchElastic 現在是 PyTorch 核心的一部分。可以讓 PyTorch 分散式訓練具備彈性伸縮與自動容錯的能力。

當分散式訓練中某個 worker 發生異常錯誤 (如機器宕機)、高優先順序任務搶佔資源等情況時,支援 worker 重啟或轉移而不需要停止訓練。可以先運行在最小資源集合下,當有更多空閒資源時,可以動態擴容 worker 數運行在更多的資源上以便提升訓練效率;當部分資源因某些原因要釋放時,也可以動態縮容 worker 數釋放佔用的部分資源。

彈性 (Elastic): 可以先運行在最小資源集合下,當有更多空閒資源時,可以動態擴容 worker 數運行在更多的資源上以便提升訓練效率;當部分資源因某些原因要釋放時,也可以動態縮容 worker 數釋放佔用的部分資源。

效能優化以及工具

Freezing API:模組凍結是將模組參數和屬性值作為常量內聯到 TorchScript 內部表示中的過程。這允許進一步優化和專門化程式,包括 TorchScript 優化,optimize_for_mobile API 、ONNX 和其他工具都使用它。

在模型部署時推薦 Freezing。這是訓練、調優或偵錯 PyTorch 模型所必需的。它支援在非凍結圖形上語義無效的圖形融合,例如 fusing Conv-BN。

PyToch 1.9 對 torch.profiler API 的支援擴展到更多版本,包括 Windows 和 Mac,而不是以前的 torch.autograd.profiler API。新 API 支援現有的 profiler 功能,與 CUPTI 庫(僅限 Linux)整合,跟蹤裝置 CUDA 核心,並支援長期運行作業,例如:

推理模式 API 可以顯著提高推理工作負載的速度,同時保持安全並確保永遠不會計算出不正確的梯度。

瞭解更多內容,請參考官方文件。


IT145.com E-mail:sddin#qq.com