PyTorch1.7發(fā)布:支持CUDA11、Windows分布式訓(xùn)練
木易 發(fā)自 凹非寺
自從7月份CUDA 11發(fā)布以來(lái),就陸陸續(xù)續(xù)聽(tīng)到了網(wǎng)友類(lèi)似的吐槽:
這正說(shuō)著,10月27日,PyTorch團(tuán)隊(duì)發(fā)布了PyTorch 1.7,終于能支持CUDA 11了,可喜可賀(狗頭)。
除此之外,這次1.7的版本,也帶來(lái)了許多功能的更新和穩(wěn)定。
在更新上,有了許多新的應(yīng)用編程接口,如支持與NumPy兼容的快速傅立葉變換的操作及性能分析工具。
此外,分布式數(shù)據(jù)并行(DDP)和基于遠(yuǎn)程過(guò)程調(diào)用(RPC)的分布式訓(xùn)練也有了重大的更新,在Windows平臺(tái)上的分布式訓(xùn)練提供支持。
最后,一些功能也穩(wěn)定了下來(lái),包括torchvision中的本機(jī)圖像IO,torchaudio中的語(yǔ)音識(shí)別、文字轉(zhuǎn)語(yǔ)音等許多功能。
自從PyTorch 1.6開(kāi)始,PyTorch的功能便分為穩(wěn)定版(stable),測(cè)試版(Beta)和原型版(prototype)。
那么,這次PyTorch 1.7又具體從哪些方面帶來(lái)了新的功能,這些功能又進(jìn)展到哪一版本呢?
接下來(lái)讓我們來(lái)快速盤(pán)點(diǎn)一下。
前端API
前端API共有3項(xiàng)更新,都是處于測(cè)試版狀態(tài)。
NUMPY兼容的TORCH.FFT模塊 [BETA]
PyTorch 1.7版本增加了一個(gè)新的torch.fft模塊,該模塊使用與NumPy相同的API來(lái)實(shí)現(xiàn)與FFT相關(guān)的功能。
對(duì)變壓器神經(jīng)網(wǎng)絡(luò)模塊的C++支持 [BETA]
1.7版本更新后,開(kāi)發(fā)人員可以從C++前端直接使用nn.transformer模塊抽象。
TORCH.SET_DETERMINISTIC [BETA]
PyTorch 1.7增加了torch.set_determinative(bool)函數(shù),該函數(shù)可以指導(dǎo)PyTorch操作者在可用時(shí)選擇確定性算法,并在操作可能導(dǎo)致不確定性行為時(shí)引發(fā)運(yùn)行時(shí)錯(cuò)誤。
性能&分析
堆棧跟蹤添加至探查器 [BETA]
探查器可以幫助操作者追蹤操作符的名稱及輸入等信息,而在1.7版本更新后,他們還可以追蹤操作符在代碼中的位置。
分布式訓(xùn)練&RPC
分布式訓(xùn)練和RPC有著最多的更新數(shù)目——7項(xiàng),這其中有1項(xiàng)穩(wěn)定版、5項(xiàng)測(cè)試版及1項(xiàng)原型版。
Torchelastic捆綁進(jìn)PYTORCH DOCKER鏡像 [STABLE]
Torchelastic提供了當(dāng)前torch.distributed.launch命令行界面的嚴(yán)格超集,并增加了容錯(cuò)和彈性功能。
通過(guò)將Torchelastic捆綁在與PyTorch相同的docker鏡像中,用戶可以立即開(kāi)始試用TorchElastic而不必單獨(dú)安裝。
支持DDP中不均勻的數(shù)據(jù)集輸入 [BETA]
PyTorch 1.7引入了一個(gè)新的上下文管理器,該管理器將與使用torch.nn.parallel.DistributedDataParallel訓(xùn)練的模型結(jié)合使用,以便能夠在不同的過(guò)程中使用不均勻的數(shù)據(jù)集大小進(jìn)行訓(xùn)練。
NCCL可靠性-異步錯(cuò)誤/超時(shí)處理 [BETA]
過(guò)去由于集合體擁擠,NCCL訓(xùn)練可能會(huì)死機(jī)。如果檢測(cè)到潛在的死機(jī),此功能將中止卡住的集合體,并拋離異常或崩潰的程序。
TORCHSCRIPT RPC_REMOTE & RPC_SYNC [BETA]
PyTorch 1.7將功能將擴(kuò)展到其余兩個(gè)核心RPC API,完成針對(duì)TorchScript支持的主要RPC API,它允許用戶使用TorchScript中的現(xiàn)有python RPC API。
分布式優(yōu)化器的TORCHSCRIPT支持 [BETA]
在PyTorch 1.7中,啟用分布式優(yōu)化器中的TorchScript支持來(lái)刪除GIL,并使在多線程應(yīng)用程序中運(yùn)行優(yōu)化器成為可能。新的分布式優(yōu)化器與以前有完全相同的接口,但是它自動(dòng)將每個(gè)工作器中的優(yōu)化器轉(zhuǎn)換成TorchScript,使每個(gè)GIL空閑。
增強(qiáng)基于RPC的分析 [BETA]
PyTorch 1.6首次引入了對(duì)將PyTorch分析器與RPC框架結(jié)合使用的支持。在PyTorch 1.7中,進(jìn)行了以下增強(qiáng):
實(shí)現(xiàn)了對(duì)通過(guò)RPC分析TorchScript函數(shù)的更好支持
在與RPC配合使用的探查器功能方面實(shí)現(xiàn)了均等
在服務(wù)器端增加了對(duì)異步RPC函數(shù)的支持
分布式訓(xùn)練的WINDOWS支持 [PROTOTYPE]
PyTorch 1.7為Windows平臺(tái)上的分布式數(shù)據(jù)并行和集合通信帶來(lái)了原型支持。
移動(dòng)支持
PyTorch Mobile通過(guò)Cocoapods和JCenter中提供的二進(jìn)制軟件包同時(shí)支持iOS和Android。
提高性能的PYTORCH移動(dòng)緩存分配器 [BETA]
為了減少性能損失,PyTorch 1.7為CPU提供了一個(gè)簡(jiǎn)單的緩存分配器。分配器根據(jù)張量大小緩存分配,目前只能通過(guò)PyTorch C++ API獲得。
視覺(jué)工具包torchvision
變換現(xiàn)在支持張量輸入、批量計(jì)算、圖形處理器和TORCHSCRIPT [STABLE]
PyTorch 1.7 實(shí)現(xiàn)了以下新功能:
支持圖形處理器加速
批量轉(zhuǎn)換,如視頻所需
變換多波段torch張量圖像(多于3-4個(gè)通道)
torchscript將與用戶部署的模型一起轉(zhuǎn)換
JPEG和PNG格式的本機(jī)圖像IO [STABLE]
torchvision 0.8.0引入了針對(duì)JPEG和PNG格式的本機(jī)圖像讀取和寫(xiě)入操作。
RETINANET檢測(cè)模型 [STABLE]
該版本為RetinaNet增加了預(yù)處理模型。
新的視頻讀取API [BETA]
這個(gè)版本引入了一個(gè)新的視頻閱讀抽象,它提供了對(duì)視頻迭代的更細(xì)粒度的控制。
它支持圖像和音頻,并實(shí)現(xiàn)了一個(gè)迭代器接口,因此它可以與其他python庫(kù)之間互操作。
音頻工具包torchaudio
在此版本中,torchaudio擴(kuò)展了對(duì)模型和端到端應(yīng)用程序的支持,增加了wav2letter訓(xùn)練管道、端到端文本到語(yǔ)音和源分離管道。
語(yǔ)音識(shí)別 [STABLE]
在wav2letter模型的基礎(chǔ)上,新版本現(xiàn)在添加了一個(gè)帶有LibriSpeech數(shù)據(jù)集的wav2letter訓(xùn)練管道示例。
文字轉(zhuǎn)語(yǔ)音 [STABLE]
新版本添加了一個(gè)基于WaveRNN模型的聲碼器,此外還提供了一個(gè)WaveRNN訓(xùn)練管道的例子。
聲源分離 [STABLE]
在論文“Conv-TasNet: Surpassing Ideal Time-Frequency Magnitude Masking for Speech Separation”的基礎(chǔ)上,增加了ConvTasNet模型,支持聲源分離。
網(wǎng)友討論:PyTorch更直觀易懂、更新比TF快
對(duì)于PyTorch的更新,在reddit引起了網(wǎng)友其與Tensorflow的討論。
從網(wǎng)友的討論來(lái)看,直觀、易懂似乎是PyTorch勝過(guò)Tensorflow的一大優(yōu)勢(shì)。
然而,也有網(wǎng)友指出了PyTorch的不足:PyTorch在邊緣計(jì)算并沒(méi)有Tensorflow成熟。
最后,還有網(wǎng)友發(fā)出了靈魂拷問(wèn):
PyTorch更新它的官方支持好像比TF更快?穩(wěn)定性和更新率,你們更喜歡其中哪一種呢?
- 免責(zé)聲明
- 本文所包含的觀點(diǎn)僅代表作者個(gè)人看法,不代表新火種的觀點(diǎn)。在新火種上獲取的所有信息均不應(yīng)被視為投資建議。新火種對(duì)本文可能提及或鏈接的任何項(xiàng)目不表示認(rèn)可。 交易和投資涉及高風(fēng)險(xiǎn),讀者在采取與本文內(nèi)容相關(guān)的任何行動(dòng)之前,請(qǐng)務(wù)必進(jìn)行充分的盡職調(diào)查。最終的決策應(yīng)該基于您自己的獨(dú)立判斷。新火種不對(duì)因依賴本文觀點(diǎn)而產(chǎn)生的任何金錢(qián)損失負(fù)任何責(zé)任。