2020 PyTorch全球開發(fā)者日:Pytorch 2021 將走向何方?

極市導(dǎo)讀
?PyTorch 開發(fā)者日在11月12日結(jié)束,本文總結(jié)了該場(chǎng)活動(dòng)的一些最值得關(guān)注的部分,主要內(nèi)容包括Pytorch目前的挑戰(zhàn)、發(fā)展方向以及技術(shù)細(xì)節(jié)方面的核心框架等。>>加入極市CV技術(shù)交流群,走在計(jì)算機(jī)視覺的最前沿
作者利益相關(guān):Facebook員工,業(yè)余PyTorch開源貢獻(xiàn)者。

PyTorch Dev Day 2020(https://pytorchdeveloperday.fbreg.com/schedule)在11/12號(hào)舉辦。盡管沒有現(xiàn)場(chǎng)參與,我還是把全場(chǎng)視頻看了一遍,這里會(huì)根據(jù)個(gè)人的理解盡可能總結(jié)個(gè)人認(rèn)為最有價(jià)值、值得關(guān)注的部分,和大家分享。
第一部分:KeyNote
這部分對(duì)于高屋建瓴地了解PyTorch Leadership的想法很關(guān)鍵,畢竟他們的決定對(duì)整個(gè)PyTorch的發(fā)展方向而言舉足輕重?;旧峡梢苑纸鉃槿缦聨c(diǎn):
#1 - PyTorch目前所處的形勢(shì)
首先,PyTorch應(yīng)該大概率是目前最好用的深度學(xué)習(xí)框架(不是第一也是之一)
1.6K貢獻(xiàn)者, 4.5萬下游項(xiàng)目 70% NIPS2019論文引用 PyTorch不再是一個(gè)僅適用于研究不適合生產(chǎn)環(huán)境的框架:
眾多公司在生產(chǎn)環(huán)境采用PyTorch(比如Uber) 在Facebook內(nèi)部有750+個(gè)生產(chǎn)環(huán)境部署的模型用的是PyTorch 目前PyTorch團(tuán)隊(duì)最新開拓的的三個(gè)技術(shù)領(lǐng)域分別是
Composability以提高PyTorch的可拓展性 分布式RPC原語以支持分布式訓(xùn)練 兼容Google的XLA以在TPU上運(yùn)行PyTorch

非常高的adoption rate和增長(zhǎng)勢(shì)頭
#2 - PyTorch從哪來,要到哪去
PyTorch一開始是主要給Research Community用的框架,但是由于各方面的需求逐步轉(zhuǎn)化成當(dāng)前這樣一個(gè)生產(chǎn)環(huán)境兼容,并擁有自己不可忽視的生態(tài)圈的產(chǎn)品。以下原則貫徹過去,且將指導(dǎo)未來:
Community Co-Development: 開源、社區(qū)共贏,而不是閉門造車 Cutting Edge Research:緊跟研究前沿,保證易用性 Production Grade:生產(chǎn)環(huán)境不能落下 Interoperable Ecosystem:跟其他系統(tǒng)兼容整合,壯大整個(gè)生態(tài)圈

堅(jiān)持基本路線一百年不動(dòng)搖
#3 - PyTorch 前路會(huì)遇到哪些挑戰(zhàn)
易用性:用戶量/模型數(shù)量迅速增長(zhǎng),新的Operator不斷出現(xiàn)(95%都不是簡(jiǎn)單的卷積操作),這意味著PyTorch必須繼續(xù)在易用性上投入才能更好應(yīng)對(duì)人/代碼復(fù)雜度提升。
Facebook AI Research 正在研究一種新的前端"語言" Tensor Statement,可以讓Operator的實(shí)現(xiàn)變得更加簡(jiǎn)單 計(jì)算資源:模型/用戶的數(shù)量增加意味著計(jì)算資源消耗的大量增加,提高程序效率迫在眉睫。因此:
PyTorch團(tuán)隊(duì)利用TorchScript來優(yōu)化模型,提高運(yùn)行效率 FAIR 甚至還利用強(qiáng)化學(xué)習(xí)來提到模型優(yōu)化器本身的性能,進(jìn)一步提高優(yōu)化后的模型的執(zhí)行效率 雨后春筍般涌現(xiàn)的Accelerator: 一個(gè)深度學(xué)習(xí)框架如果不能適配涌現(xiàn)的新硬件,則會(huì)很容易失去市場(chǎng)競(jìng)爭(zhēng)力,因此必須大力發(fā)展AI Compiler

極高的增長(zhǎng)……對(duì)計(jì)算資源、存儲(chǔ)、網(wǎng)絡(luò)傳輸帶寬的scale up都是挑戰(zhàn)
第二部分:技術(shù)細(xì)節(jié)介紹
每個(gè)Track我都會(huì)摘一些個(gè)人覺得比較有亮點(diǎn)/有趣的工作,想要全面了解的話請(qǐng)移步官網(wǎng)。
#1 - Core 核心框架
Distributed RPC:這是一套框架/原語,使得開發(fā)分布式訓(xùn)練變得更加快速、直觀。
比如說,利用rpc.remote就可以在本地創(chuàng)建一個(gè)在另外一臺(tái)機(jī)器上面的Tensor的引用,對(duì)其操作就如同操作一個(gè)本地Tensor一樣方便 Profiling & Visualization: 講述了如何對(duì)PyTorch代碼進(jìn)行profiling,如何追蹤并可視化訓(xùn)練過程。
個(gè)人看法:這在我看來表示PyTorch向一個(gè)成熟的開源軟件又邁進(jìn)一步 在開發(fā)和線上部署的時(shí)候,很多工程師的時(shí)間其實(shí)花在了性能調(diào)優(yōu),打日志調(diào)試/定位問題上面,而profiling/visualization相關(guān)的工具鏈的發(fā)展對(duì)這個(gè)大有幫助 PyTorch on Windows: 微軟負(fù)責(zé)PyTorch的經(jīng)理舉的數(shù)字很有意思:如果我們考慮全球所有的開發(fā)者的話(而不是我們常說的互聯(lián)網(wǎng)/機(jī)器學(xué)習(xí)開發(fā)者),大部分開發(fā)者使用的還是Windows平臺(tái)。
這就意味著,盡管現(xiàn)在大部分PyTorch的用戶還是在Linux/Mac平臺(tái)開發(fā),PyTorch在Windows上的運(yùn)行還是存在一些坑,但是PyTorch到后面的用戶增長(zhǎng)很可能會(huì)來自于這些Windows平臺(tái)開發(fā)者 PyTorch Mobile: PyTorch在移動(dòng)平臺(tái)端的支持得到進(jìn)一步提升,而且可以用一行代碼把一個(gè)模型轉(zhuǎn)換為針對(duì)移動(dòng)平臺(tái)優(yōu)化的格式
這項(xiàng)Effort也得到了Android的合作與支持,看來提升移動(dòng)端性能是行業(yè)共同的需求 這也很符合前面提到的Production Grade原則

利用Tensorboard對(duì)模型調(diào)試、理解的一個(gè)例子:以可視化的方式幫助分析超參數(shù)對(duì)模型的影響
#2 - Research 科研領(lǐng)域
Torch for R & Hasktorch: 眾所周知PyTorch的前身是Torch(現(xiàn)在的內(nèi)核依然是C++的LibTorch)。這塊講的是怎么在R和Haskell里面實(shí)現(xiàn)類似PyTorch的API(但是用的同一套內(nèi)核),從而讓這些語言的用戶不需要切換到Python也可以享受到PyTorch一般的爽感
這個(gè)感覺可能跟 @王益 大神參與的golang + Torch類似? 但個(gè)人判斷:Python的勢(shì)頭是止不住的。目前大部分的研究+生產(chǎn)環(huán)境生態(tài)系統(tǒng)都是圍繞著Python來打造。就算橫空出世了另外一門語言的Binding可以跟Python一樣好用(不太可能做到比Python的版本還好用),跑起來更快,但是想要在用戶群體和生態(tài)上追趕基本不可能 Model Interpretability: 介紹了一個(gè)專門做模型可解釋性的Library,叫Captum (Captum · Model Interpretability for PyTorch)
前兩年在組內(nèi)做Planning的時(shí)候其實(shí)想過做一個(gè)類似的東西,沒想到現(xiàn)在已經(jīng)出來了這么成熟的產(chǎn)品,支持了包括LIME在內(nèi)的各種算法 個(gè)人看法:可以預(yù)見它很可能會(huì)成為模型可解釋性方面的頭號(hào)產(chǎn)品。很多諸如MLFlow的機(jī)器學(xué)習(xí)模型管理平臺(tái)都在搶著把它整合進(jìn)自己的工具鏈,其搶手程度可見一斑 DeepSpeed: 微軟發(fā)布的基于PyTorch的深度學(xué)習(xí)庫(kù)
這個(gè)目測(cè)是目前唯一一個(gè)能訓(xùn)練參數(shù)量達(dá)1T(=一萬億)的庫(kù)。鑒于這個(gè)庫(kù)是在太牛逼,之后我會(huì)專門寫一篇文章講解,這里略過細(xì)節(jié)

DeepSpeed 霸氣1T參數(shù)。而且還有很多別的牛逼的功能(看右邊的全家桶)
#3 - Production Ecosystem 生產(chǎn)環(huán)境相關(guān)的生態(tài)
MLFlow: Databrick (Spark創(chuàng)始人開的公司) 做的機(jī)器學(xué)習(xí)管理平臺(tái),從而可以更好、更工程化地管理/開發(fā)機(jī)器學(xué)習(xí)項(xiàng)目。
MLFlow一開始出來的時(shí)候,我關(guān)注了一下,當(dāng)時(shí)支持的主要還是sklearn等比較基礎(chǔ)的機(jī)器學(xué)習(xí)庫(kù)?,F(xiàn)在看來已經(jīng)開始官方地支持PyTorch模型的訓(xùn)練和追蹤、可視化等,這對(duì)于PyTorch進(jìn)一步工程化、平民化有很重要的意義 PyTorch + XLA: 講的是如何把PyTorch模型轉(zhuǎn)變成XLA可支持的格式,從而可以在TPU上跑
這就是前面提到的Interoperable原則的一個(gè)很好的體現(xiàn)。XLA這個(gè)其實(shí)是Google搞出來,讓機(jī)器學(xué)習(xí)模型可以更好適配不同硬件的東西。Facebook把自己的PyTorch弄成跟XLA兼容,一定程度上可以借XLA之手可以更容易地適配不同的硬件,自己可以少費(fèi)點(diǎn)功夫,最后大家雙贏

ML Flow的一個(gè)示意圖,用于追蹤模型訓(xùn)練的參數(shù),結(jié)果比較,相關(guān)的文件/asset等
#4 - Privacy 用戶隱私相關(guān)
Differential Privacy: 現(xiàn)在只需幾行代碼改動(dòng)便可以使得一個(gè)PyTorch模型的訓(xùn)練符合Differential Privacy的要求
這塊應(yīng)該是最近比較熱門的方向——我的理解是,如何讓機(jī)器學(xué)習(xí)模型學(xué)習(xí)數(shù)據(jù)集整體的特性,同時(shí)無法得知單獨(dú)數(shù)據(jù)點(diǎn)的細(xì)節(jié)(因?yàn)檫@樣單個(gè)用戶的隱私可能就會(huì)被泄漏),如果理解有誤的話還有望指正 個(gè)人看法:PyTorch內(nèi)置Differential Privacy的支持應(yīng)該對(duì)于大公司內(nèi)部做ML Infra,以及做機(jī)器學(xué)習(xí)平臺(tái)的公司來說利好——簡(jiǎn)單的修改即可以說自己符合Differential Privacy,產(chǎn)品賣的好,面對(duì)政客/媒體底氣更足了 OpenMined: 一個(gè)可以讓數(shù)據(jù)科學(xué)家在不直接獲取私有數(shù)據(jù)的前提下,訓(xùn)練模型或者查詢聚合過的數(shù)據(jù)(比如說,醫(yī)院不開放他們的病人數(shù)據(jù),但我可以通過這個(gè)平臺(tái)用我的算法和醫(yī)院的數(shù)據(jù)訓(xùn)練模型給醫(yī)院用,同時(shí)我自己得知不了任何病人的隱私)
個(gè)人看法:這是個(gè)很有意思的想法(跟前段時(shí)間火的用區(qū)塊鏈解決隱私問題感覺還有那么一丟丟聯(lián)系),但是看現(xiàn)在的發(fā)展程度還處于比較早期階段,怎么落地,怎么證明商業(yè)價(jià)值,還有比較多需要探索的地方,可以長(zhǎng)期關(guān)注一下

OpenMined的Leader舉的例子,以證明他的觀點(diǎn):機(jī)器學(xué)習(xí)的眾多飛躍里,有很多來自于數(shù)據(jù)量的提升,而不是算法的提升。因此,他認(rèn)為隱私安全的數(shù)據(jù)共享,可以提高機(jī)器學(xué)習(xí)的數(shù)據(jù)集數(shù)量和大小,從而繼續(xù)推動(dòng)機(jī)器學(xué)習(xí)的飛躍。
第三部分:總結(jié)
以下純屬個(gè)人看法/預(yù)測(cè):
對(duì)于PyTorch以及核心團(tuán)隊(duì)來說,易用性是立身之本,永遠(yuǎn)不可能放棄,它也很有可能在"最好用的深度學(xué)習(xí)框架“榜單長(zhǎng)期稱霸。因此PyTorch用戶基本不用擔(dān)心他會(huì)變得難用,感覺research community就放心大膽用吧
PyTorch接下來最大的挑戰(zhàn)和機(jī)會(huì),就是在生產(chǎn)環(huán)境中證明自己,尤其是服務(wù)器端Inference。這塊是一個(gè)剛開始大力投入且還有很多可以深挖的技術(shù)領(lǐng)域,著名大神們會(huì)介入,也會(huì)出現(xiàn)新的大神
對(duì)于在考慮生產(chǎn)環(huán)境用PyTorch的工程師團(tuán)隊(duì)來說,我的建議是
選取一些有意義(但又不至于至關(guān)重要以至于不容許任何失敗)的Use Case開始試水 及早和PyTorch團(tuán)隊(duì)建立聯(lián)系,提供反饋。我的猜想是PyTorch團(tuán)隊(duì)有極大的動(dòng)力來和用戶深度合作來改進(jìn)PyTorch在生產(chǎn)環(huán)境的技能以及修Bug。作為Early Adopter可以獲得更多的支持以及建立自己公司在這個(gè)技術(shù)領(lǐng)域的口碑,對(duì)于未來的招聘會(huì)有幫助 接下來將會(huì)是PyTorch Ecosystem的高速發(fā)展期。配套設(shè)置的需求會(huì)增多,也會(huì)有越來越多的類似于Captum [見上文] 這樣基于PyTorch而開發(fā)的輔助工具/輪子出現(xiàn),對(duì)于有興趣的開源程序猿來說是個(gè)機(jī)會(huì)
對(duì)于做機(jī)器學(xué)習(xí)平臺(tái)型產(chǎn)品的公司來說,暫時(shí)還不是All-in-PyTorch的時(shí)候,但是一定對(duì)PyTorch的支持不能懈怠
最后多說兩句:我個(gè)人對(duì)PyTorch還是非??春玫?,甚至有點(diǎn)想把它跟Apache Hive類比起來:后者可以讓人寫SQL來執(zhí)行MapReduce,對(duì)于開發(fā)生產(chǎn)力提升是個(gè)極大的飛躍;性能可能不一定有手寫的MR代碼好,但是通過引擎不停優(yōu)化也不影響在生產(chǎn)環(huán)境的廣泛應(yīng)用。PyTorch以易用性/開發(fā)生產(chǎn)力為第一位,同時(shí)不斷優(yōu)化底層性能,因此我認(rèn)為它最終也會(huì)被極為廣泛的采用。
推薦閱讀

