原標題:PyTorch 1.7發布:支持CUDA 11、Windows分布式訓練 來源:量子位
關注前沿科技
木易 發自 凹非寺?
量子位 報道 | 公眾號 QbitAI
自從7月份CUDA 11發布以來,就陸陸續續聽到了網友類似的吐槽:
這正說著,10月27日,PyTorch團隊發布了PyTorch 1.7,終于能支持CUDA 11了,可喜可賀(狗頭)。
除此之外,這次1.7的版本,也帶來了許多功能的更新和穩定。
在更新上,有了許多新的應用編程接口,如支持與NumPy兼容的快速傅立葉變換的操作及性能分析工具。
此外,分布式數據并行(DDP)和基于遠程過程調用(RPC)的分布式訓練也有了重大的更新,在Windows平臺上的分布式訓練提供支持。
最后,一些功能也穩定了下來,包括torchvision中的本機圖像IO,torchaudio中的語音識別、文字轉語音等許多功能。
自從PyTorch 1.6開始,PyTorch的功能便分為穩定版(stable),測試版(Beta)和原型版(prototype)。
那么,這次PyTorch 1.7又具體從哪些方面帶來了新的功能,這些功能又進展到哪一版本呢?
接下來讓我們來快速盤點一下。
前端API
前端API共有3項更新,都是處于測試版狀態。
NUMPY兼容的TORCH.FFT模塊 [BETA]
PyTorch 1.7版本增加了一個新的torch.fft模塊,該模塊使用與NumPy相同的API來實現與FFT相關的功能。
對變壓器神經網絡模塊的C++支持 [BETA]
1.7版本更新后,開發人員可以從C++前端直接使用nn.transformer模塊抽象。
TORCH.SET_DETERMINISTIC [BETA]
PyTorch 1.7增加了torch.set_determinative(bool)函數,該函數可以指導PyTorch操作者在可用時選擇確定性算法,并在操作可能導致不確定性行為時引發運行時錯誤。
性能&分析
堆棧跟蹤添加至探查器 [BETA]
探查器可以幫助操作者追蹤操作符的名稱及輸入等信息,而在1.7版本更新后,他們還可以追蹤操作符在代碼中的位置。
分布式訓練&RPC
分布式訓練和RPC有著最多的更新數目——7項,這其中有1項穩定版、5項測試版及1項原型版。
Torchelastic捆綁進PYTORCH DOCKER鏡像 [STABLE]
Torchelastic提供了當前torch.distributed.launch命令行界面的嚴格超集,并增加了容錯和彈性功能。
通過將Torchelastic捆綁在與PyTorch相同的docker鏡像中,用戶可以立即開始試用TorchElastic而不必單獨安裝。
支持DDP中不均勻的數據集輸入 [BETA]
PyTorch 1.7引入了一個新的上下文管理器,該管理器將與使用torch.nn.parallel.DistributedDataParallel訓練的模型結合使用,以便能夠在不同的過程中使用不均勻的數據集大小進行訓練。
NCCL可靠性-異步錯誤/超時處理 [BETA]
過去由于集合體擁擠,NCCL訓練可能會死機。如果檢測到潛在的死機,此功能將中止卡住的集合體,并拋離異常或崩潰的程序。
TORCHSCRIPT RPC_REMOTE & RPC_SYNC [BETA]
PyTorch 1.7將功能將擴展到其余兩個核心RPC API,完成針對TorchScript支持的主要RPC API,它允許用戶使用TorchScript中的現有python RPC API。
分布式優化器的TORCHSCRIPT支持 [BETA]
在PyTorch 1.7中,啟用分布式優化器中的TorchScript支持來刪除GIL,并使在多線程應用程序中運行優化器成為可能。新的分布式優化器與以前有完全相同的接口,但是它自動將每個工作器中的優化器轉換成TorchScript,使每個GIL空閑。
增強基于RPC的分析 [BETA]
PyTorch 1.6首次引入了對將PyTorch分析器與RPC框架結合使用的支持。在PyTorch 1.7中,進行了以下增強:
實現了對通過RPC分析TorchScript函數的更好支持
在與RPC配合使用的探查器功能方面實現了均等
在服務器端增加了對異步RPC函數的支持
分布式訓練的WINDOWS支持 [PROTOTYPE]
PyTorch 1.7為Windows平臺上的分布式數據并行和集合通信帶來了原型支持。
移動支持
PyTorch Mobile通過Cocoapods和JCenter中提供的二進制軟件包同時支持iOS和Android。
提高性能的PYTORCH移動緩存分配器 [BETA]
為了減少性能損失,PyTorch 1.7為CPU提供了一個簡單的緩存分配器。分配器根據張量大小緩存分配,目前只能通過PyTorch C++ API獲得。
視覺工具包torchvision
變換現在支持張量輸入、批量計算、圖形處理器和TORCHSCRIPT [STABLE]
PyTorch 1.7 實現了以下新功能:
支持圖形處理器加速
批量轉換,如視頻所需
變換多波段torch張量圖像(多于3-4個通道)
torchscript將與用戶部署的模型一起轉換
JPEG和PNG格式的本機圖像IO [STABLE]
torchvision 0.8.0引入了針對JPEG和PNG格式的本機圖像讀取和寫入操作。
RETINANET檢測模型 [STABLE]
該版本為RetinaNet增加了預處理模型。
新的視頻讀取API [BETA]
這個版本引入了一個新的視頻閱讀抽象,它提供了對視頻迭代的更細粒度的控制。
它支持圖像和音頻,并實現了一個迭代器接口,因此它可以與其他python庫之間互操作。
音頻工具包torchaudio
在此版本中,torchaudio擴展了對模型和端到端應用程序的支持,增加了wav2letter訓練管道、端到端文本到語音和源分離管道。
語音識別 [STABLE]
在wav2letter模型的基礎上,新版本現在添加了一個帶有LibriSpeech數據集的wav2letter訓練管道示例。
文字轉語音 [STABLE]
新版本添加了一個基于WaveRNN模型的聲碼器,此外還提供了一個WaveRNN訓練管道的例子。
聲源分離 [STABLE]
在論文“Conv-TasNet: Surpassing Ideal Time-Frequency Magnitude Masking for Speech Separation”的基礎上,增加了ConvTasNet模型,支持聲源分離。
網友討論:PyTorch更直觀易懂、更新比TF快
對于PyTorch的更新,在reddit引起了網友其與Tensorflow的討論。
從網友的討論來看,直觀、易懂似乎是PyTorch勝過Tensorflow的一大優勢。
然而,也有網友指出了PyTorch的不足:PyTorch在邊緣計算并沒有Tensorflow成熟。
最后,還有網友發出了靈魂拷問:
PyTorch更新它的官方支持好像比TF更快?穩定性和更新率,你們更喜歡其中哪一種呢?
如果是你的話,會更喜歡哪一種呢?
參考鏈接:
https://pytorch.org/blog/pytorch-1.7-released/
https://github.com/pytorch/pytorch/releases
https://www.reddit.com/r/MachineLearning/comments/jj4sr7/d_pytorch_17_released_w_cuda_11_new_apis_for_ffts/?sort=new
(聲明:本文僅代表作者觀點,不代表新浪網立場。)