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

2021-01-11 澎湃新聞

機器之心報導

機器之心編輯部

剛剛,Facebook 通過 PyTorch 官方博客宣布:PyTorch 1.6 正式發布!新版本增加了一個 amp 子模塊,支持本地自動混合精度訓練。Facebook 還表示,微軟已擴大了對 PyTorch 社區的參與,現在擁有 PyTorch 在 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 的並行執行:

[BETA] 內存分析器

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

該 API 的用法如下所示:

分布式訓練 & RPC

[BETA] 用於 RPC 的 TENSORPIPE 後端

PyTorch 1.6 為 RPC 模塊引入了一個新的後端,它利用了 TensorPipe 庫(一個針對機器學習的 tensor-aware 點對點通信 primitive,旨在補充 PyTorch 中分布式訓練的現有 primitive)。TensorPipe 的成對和異步特性使其能夠應用於數據並行之外的新的網絡範式:客戶端 - 伺服器方法以及和模型和 pipeline 並行訓練。

[BETA] DDP+RPC

PyTorch Distributed 支持兩種強大的範式:用於對模型進行完全同步數據並行訓練的 DDP 和支持分布式模型並行的 RPC 框架。在此之前,這兩個特性是獨立工作的,用戶不能混用它們來嘗試混合併行範式。

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

[BETA] RPC - 異步用戶函數

RPC 異步用戶函數( Asynchronous User Function)支持執行用戶定義函數時在伺服器端生成和恢復的能力。在此特性之前,當被調用方處理請求時,一個 RPC 線程將一直等待,直到用戶函數返回。

前端 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/

https://tech.sina.com.cn/roll/2020-07-29/doc-iivhvpwx8021377.shtml

Amazon SageMaker 是一項完全託管的服務,可以幫助開發人員和數據科學家快速構建、訓練和部署機器學習 模型。SageMaker完全消除了機器學習過程中每個步驟的繁重工作,讓開發高質量模型變得更加輕鬆。

現在,企業開發者可以免費領取1000元服務抵扣券,輕鬆上手Amazon SageMaker,快速體驗5個人工智慧應用實例。

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

閱讀原文

相關焦點

  • 更快的計算,更高的內存效率:PyTorch混合精度模型AMP介紹
    這篇文章是關於利用Tensor Cores和自動混合精度來更快地訓練深度學習網絡的。什麼是Tensor Cores?根據NVIDIA網站的介紹:NVIDIA Turing和Volta GPU由Tensor Cores提供支持。Tensor Cores是一項革命性技術,可提供開創性的AI性能。
  • PyTorch 1.7發布,支持CUDA 11、Windows分布式訓練
    該版本增添了很多新特性,如支持 CUDA 11、Windows 分布式訓練、增加了支持快速傅立葉變換(FFT)的新型 API 等。PyTorch 1.7 版本包含很多新的 API,如支持 NumPy 兼容的 FFT 操作、性能分析工具,以及對基於分布式數據並行(DDP)和基於遠程過程調用(RPC)的分布式訓練的重要更新。
  • 《PyTorch中文手冊》來了
    PyTorch 深度學習:60 分鐘快速入門 (官方)張量Autograd: 自動求導神經網絡訓練一個分類器選讀:數據並行處理 (它主要由 Facebook 的人工智慧研究小組開發。Uber 的 "Pyro" 也是使用的這個庫。
  • PyTorch 0.2發布:更多NumPy特性,高階梯度、分布式訓練等
    PyTorch的GitHub新版發布說明中介紹了0.2版的以下新特性:NumPy風格的Tensor BroadcastingBroadcasting是NumPy在算數運算中處理不同形狀數組的一種方式,在特定條件下,比較小的數組會通過比較大的數組進行「廣播」,來獲得相應的形狀。
  • PyTorch 1.6、TensorFlow 2.3、Pandas 1.1 同日發布!都有哪些新...
    作者 | 肖智清7月29日,PyTorch 1.6、TenorFlow 2.3、Pandas 1.1恰巧同時發布。這三個庫都是定期滾動更新,大約每個季度更新一次小版本。在AI內捲化達到「灰飛煙滅」的今日,僅僅會對PyTorch或TensorFlow進行調用已經不具有競爭力。
  • 大家心心念念的PyTorch Windows官方支持來了
    五個小時前,PyTorch 官方 GitHub 發布 0.4.0 版本,大家心心念念的 Windows 支持終於來了。GitHub 發布地址:https://github.com/pytorch/pytorch/releasesPyTorch 官網:http://pytorch.org/
  • TensorFlow 2.4來了:上線對分布式訓練和混合精度的新功能支持
    TensorFlow 2.4 的更新包括對於分布式訓練和混合精度的新功能支持,對 NumPy API 子集的試驗性支持以及一些用於監測性能瓶頸的新工具。Keras 更新混合精度在 TensorFlow 2.4 中,Keras 混合精度 API 已經脫離試驗階段,成為穩定的 API。
  • PyTorch 0.4:完全改變API,官方支持Windows
    分布式訓練易於使用的Launcher utilityNCCL2後端C ++擴展Windows支持ONNX改進RNN支持性能改進Bug修復主要核心變化以下是用戶每天使用的最重要的核心功能的更新遷移指南:http://pytorch.org/2018/04/22/0_4_0-migration-guide.html本部分的內容(主要核心變更)包含在遷移指南中。
  • PyTorch框架歷史和特性更迭與安裝過程
    PyTorch Hub的開發也是1.0版本的亮點之一,通過PyTorch Hub,用戶可以獲得一系列預訓練的深度學習模型,主要包括計算機視覺、自然語言處理、生成式模型和音頻模型等,這些預訓練模型的出現能有效地加快用戶開發新型的深度學習模型,方便用戶構建基線模型和復現深度學習模型的效果。
  • PyTorch上也有Keras了,訓練模型告別Debug,只需專注數據和邏輯
    在這張圖中,灰色部分代表Lightning能自動完成的部分,而藍色的部分則能夠根據使用者的需求,被定義成任意底層模型,可以是你自己的新模型,也可以是預訓練模型,fast.ai架構等等。舉幾個例子好了。比如說,梯度下降。
  • 福利,PyTorch中文版官方教程來了
    機器之心整理參與:一鳴PyTorch 中文版官方教程來了。PyTorch 是近年來較為火爆的深度學習框架,然而其中文版官方教程久久不來。教程作者來自 pytorchchina.com。教程網站:http://pytorch123.com教程裡有什麼教程根據 PyTorch 官方版本目錄,完整地還原了所有的內容。
  • 代碼詳解:用Pytorch訓練快速神經網絡的9個技巧
    7. 16位混合精度訓練。8. 轉至多GPU(模型複製)。9. 轉至多GPU節點(8+GPUs)。10. 有關模型加速的思考和技巧Pytorch-Lightning文中討論的各種優化,都可以在名為Pytorch-Lightning 的Pytorch圖書館中找到。
  • PyTorch 1.0 穩定版來啦
    在 10 月的 PyTorch 開發者大會上發布的是最新預覽版,具有面向產品的特徵、支持幾大主流雲平臺等功能。研究人員和工程師現在可以輕鬆地充分利用開源深度學習框架的新特性,如用於在 eager 執行模式和 graph 執行模式之間無縫轉換的混合前端、改進的分布式訓練、用於高性能研究的純 C++ 前端以及與雲平臺的深度集成。
  • 重磅| Torch7團隊開源PyTorch:Python優先的深度學習框架
    Python 軟體包(如 numpy、scipy 和 Cython)來擴展 PyTorch。但使用 PyTorch,通過一種我們稱之為「Reverse-mode auto-differentiation(反向模式自動微分)」的技術,你可以零延遲或零成本地任意改變你的網絡的行為。我們靈感來自關於這一主題的許多研究論文以及當前和過去的研究成果,比如 autograd、autograd、Chainer 等。
  • PyTorch更新!谷歌幫助開發,正式支持TensorBoard | 5大開源項目
    不僅宣布支持TensorFlow的可視化工具TensorBoard,還正式向工業界邁進,為生產環境改進了PyTorch處理分布式訓練的方式。而且,根據Facebook介紹,開發這一版本的過程中谷歌還幫了不少忙。
  • 基於複數神經網絡首發量子機器學習開發工具 「量槳」,飛槳布局...
    同時,隨著企業應用需求越來越強烈,飛槳升級產品架構,推出飛槳企業版,包含零門檻AI開發平臺EasyDL和全功能AI開發平臺BML,助力各個企業進行AI創新。(圖:飛槳核心框架架構全景)為了滿足時代與政策雙重作用下猛增的「智能化」快速轉型需求,飛槳此次全平臺全新發布和升級35項技術能力。
  • 基於PyTorch的「Keras」:除了核心邏輯通通都封裝
    William Falcon 正是這樣想的,他將 PyTorch 開發中的各種通用配置全都包裝起來,我們只需要寫核心邏輯就行。通過 PyTorch Lightning,PyTorch 就類似於 Keras,它能以更高級的形式快速搭建模型。
  • Pytorch中的分布式神經網絡訓練
    經常,在訓練這些網絡時,深度學習從業人員需要使用多個GPU來有效地訓練它們。 在本文中,我將向您介紹如何使用PyTorch在GPU集群上設置分布式神經網絡訓練。通常,分布式訓練會在有一下兩種情況。在GPU之間拆分模型:如果模型太大而無法容納在單個GPU的內存中,則需要在不同GPU之間拆分模型的各個部分。跨GPU進行批量拆分數據。
  • 用Java實現目標檢測|PyTorch
    很多論文都選擇使用PyTorch去實現也證明了它在訓練方面的效率以及易用性。在PyTorch領域,儘管部署一個模型有很多選擇,可為Java開發人員準備的選項卻屈指可數。在過去,用戶可以用PyTorch C++ 寫JNI (Java Native Interface) 來實現這個過程。最近,PyTorch 1.4 也發布了試驗性的Java 前端。
  • 保護隱私快速訓練,Facebook開源Opacus,用差分隱私訓練PyTorch
    那麼,如何方便地使用差分隱私來訓練機器學習模型呢?近日,Facebook 開源了 Opacus 庫,支持以這種方式訓練 PyTorch 模型。近日,Facebook 開源了一個新型庫 Opacus,它支持使用差分隱私來訓練 PyTorch 模型,擴展性優於目前的 SOTA 方法。