PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交微軟

磐創AI發表於2020-08-06




  磐創AI分享  

轉自 | 機器之心

【導讀】Facebook 透過 PyTorch 官方部落格宣佈:PyTorch 1.6 正式釋出!新版本增加了一個 amp 子模組,支援本地自動混合精度訓練。Facebook 還表示,微軟已擴大了對 PyTorch 社群的參與,現在擁有 PyTorch 在 Windows 上的開發和維護所有權。


PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交微軟


相比於以往的 PyTorch 版本,本次即將釋出的 PyTorch 1.6 有哪些吸引人的地方呢?

總的來說,PyTorch 1.6 版本包括許多新的 API、用於效能改進和效能分析的工具,以及對基於分散式資料並行(DDP)和遠端過程呼叫(RPC)的分散式訓練的重大更新。一些亮點包括:

  • 在英偉達的幫助下增加了對自動混合精度(AMP)訓練的本地支援,並且具有穩定的功能;

  • 增加了對 TensorPipe 的本地支援;

  • 在前端 API 增加了對複雜張量的支援;

  • 提供張量級記憶體消耗資訊的新分析工具;

  • 分散式資料並行(DDP)訓練和遠端過程呼叫(RPC)包的大量改進和新功能。


PyTorch 官方部落格表示,從此版本開始,PyTorch 的特性將分為 Stable(穩定版)、Beta(測試版)和 Prototype(原型版)。需要注意的是,Prototype 特性不包含在二進位制包中,但可以透過使用 Nightly 從原始碼構建或透過編譯器標誌(compiler flag)來使用。

此外,Facebook 還宣佈,他們將把 Windows 版 PyTorch 的開發維護權移交給微軟。

在 Windows 系統上執行 PyTorch 一直都是一種不愉快的體驗,顯然微軟也看到了這一點。他們在 Pytorch 的部落格中表示:

「在 PyTorch 1.6 中,我們為核心 PyTorch 及其域庫提供了與 Linux 相同的測試覆蓋率,同時將教程測試自動化,以此來改進 Windows 的核心質量。在 PyTorch 社群的幫助下,我們將測試覆蓋範圍新增到三個域庫中:TorchVision、TorchText 和 TorchAudio。在 PyTorch 的後續版本中,我們將繼續改進。根據收到的社群反饋,下一步的改進方向應該會聚焦於分散式訓練支援和更好的 pip 安裝體驗。」

除了本地 Windows 體驗,在今年的 Build 2020 大會上,微軟還宣佈了一個為 WSL 提供 GPU 計算支援的計劃,PyTorch 將在其中起到不小的作用。現階段,WSL2 已獲得對 GPU 的初始支援,其中就包含對 PyTorch 的支援,WSL 使用者可以直接執行本地 PyTorch 程式,進行機器學習,不需要傳統的虛擬機器或雙引導設定。

效能與分析


[STABLE] 自動混合精度(AMP)訓練

AMP 使使用者可以輕鬆啟用自動混合精度訓練,從而在 Tensor Core GPU 上實現更高的效能並節省多達 50%的記憶體。使用本地支援的 torch.cuda.amp API,AMP 為混合精度提供了方便的方法,其中某些運算使用 torch.float32 (float)。其他運算使用 torch.float16(half)。有些運算,如線性層和卷積,在 float16 中要快得多。而另一些運算,比如縮減,通常需要 float32 的動態範圍。混合精度嘗試將每個運算與其相應的資料型別相匹配。

[BETA] FORK/JOIN 並行

新版本增加了對語言級構造的支援,以及對 TorchScript 程式碼中粗粒度並行的執行時的支援。這種支援對於一些情況非常有用,比如在整合中並行執行模型,或者並行執行迴圈網路的雙向元件,它還允許為任務級並行釋放並行架構(例如多核 CPU)的計算能力。

TorchScript 程式的並行執行是透過 torch.jit.fork 和 torch.jit.wait 兩個 primitive 實現的。下面的例子展示了 foo 的並行執行:

PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交微軟


[BETA] 記憶體分析器

「torch.autograd.profiler」API 現在包含一個可以讓你檢查 CPU 和 GPU 模型內不同運算元的張量記憶體開銷的記憶體分析器。

該 API 的用法如下所示:

PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交微軟


分散式訓練 & RPC



[BETA] 用於 RPC 的 TENSORPIPE 後端

PyTorch 1.6 為 RPC 模組引入了一個新的後端,它利用了 TensorPipe 庫(一個針對機器學習的 tensor-aware 點對點通訊 primitive,旨在補充 PyTorch 中分散式訓練的現有 primitive)。TensorPipe 的成對和非同步特性使其能夠應用於資料並行之外的新的網路正規化:客戶端 - 伺服器方法以及和模型和 pipeline 並行訓練。

PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交微軟


[BETA] DDP+RPC

PyTorch Distributed 支援兩種強大的正規化:用於對模型進行完全同步資料並行訓練的 DDP 和支援分散式模型並行的 RPC 框架。在此之前,這兩個特性是獨立工作的,使用者不能混用它們來嘗試混合並行正規化。

從 PyTorch 1.6 開始,該框架允許 DDP 和 RPC 無縫協作,這樣使用者就可以結合這兩種技術來實現資料並行和模型並行。

PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交微軟


[BETA] RPC - 非同步使用者函式

RPC 非同步使用者函式( Asynchronous User Function)支援執行使用者定義函式時在伺服器端生成和恢復的能力。在此特性之前,當被呼叫方處理請求時,一個 RPC 執行緒將一直等待,直到使用者函式返回。

PyTorch 1.6來了:新增自動混合精度訓練、Windows版開發維護權移交微軟


前端 API 更新


[BETA] 複數

Pythorch1.6 版本提供了對複雜張量的 beta 級支援。包括 torch.complex64 和 torch.complex128 dtypes。

複數在數學和工程中經常出現,特別是在訊號處理中,復值神經網路是一個活躍的研究領域。復張量的 beta 版將支援通用的 PyTorch 和復張量功能,以及 Torchaudio、ESPne 等所需的功能。

更新的域庫


TORCHVISION 0.7

torchvision 0.7 引入了兩個新的預訓練語義分割模型,即 FCN ResNet50 和 DeepLabV3 ResNet50,它們都在 COCO 上進行了訓練,並且使用的記憶體佔用空間小於 ResNet101。此外還引入了 AMP(自動混合精度),該功能可為不同的 GPU 運算自動選擇浮點精度,從而在保持精度的同時提高效能。

TORCHAUDIO 0.6

torchaudio 現在正式支援 Windows,微軟負責 Windows 版本。此版本還引入了一個新模組(包含 wav2letter)、若干新功能(contrast, cvm, dcshift, overdrive, vad, phaser, flanger, biquad)、新資料集(GTZAN,CMU)和一個新的可選 sox 後端,支援 TorchScript。

參考連結:https://pytorch.org/blog/pytorch-1.6-released/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555081/viewspace-2709625/,如需轉載,請註明出處,否則將追究法律責任。

相關文章