PyTorch重大更新再戰(zhàn)TensorFlow,AWS也來(lái)趟深度學(xué)習(xí)框架的渾水?
剛剛,F(xiàn)acebook聯(lián)合AWS 宣布了PyTorch的兩個(gè)重大更新:TorchServe和TorchElastic。而不久前Google剛公布DynamicEmbedding。兩大陣營(yíng)又開(kāi)戰(zhàn)端,F(xiàn)acebook亞馬遜各取所長(zhǎng)聯(lián)手對(duì)抗Google!
Facebook和亞馬遜推出全新PyTorch庫(kù),針對(duì)大型高性能AI模型
剛剛,F(xiàn)acebook聯(lián)合AWS 宣布了PyTorch的兩個(gè)重大更新。
第一個(gè)是TorchServe,它是 PyTorch 的一個(gè)生產(chǎn)模型服務(wù)框架,可以使開(kāi)發(fā)人員更容易地將他們的模型投入生產(chǎn)。
第二個(gè)是 TorchElastic,可以讓開(kāi)發(fā)人員更容易地在 Kubernetes 集群上構(gòu)建高容錯(cuò)訓(xùn)練作業(yè),包括 AWS 的 EC2 spot 實(shí)例和 Elastic Kubernetes Service。
但是在發(fā)布過(guò)程中,F(xiàn)acebook官方博客產(chǎn)生了一個(gè)小插曲,將文章的發(fā)布日期2020年錯(cuò)標(biāo)稱了2019年。
TorchServe劍指何方
最近幾年,F(xiàn)acebook 和 AWS都積攢了大量的機(jī)器學(xué)習(xí)工程實(shí)踐經(jīng)驗(yàn),而PyTorch在學(xué)術(shù)界和開(kāi)源社區(qū)大受追捧。
TensorFlow的一個(gè)重要優(yōu)勢(shì)在于TensorFlow Serving 和 Multi Model Server這些可快速部署到生產(chǎn)環(huán)境的模型服務(wù)器。
AWS 在 SageMaker 運(yùn)行自己的模型服務(wù)器方面經(jīng)驗(yàn)豐富,SageMaker模型服務(wù)器雖然可以處理多個(gè)框架。而PyTorch則擁有十分活躍的社區(qū),更新也頻繁。
開(kāi)發(fā)者需要一個(gè)自己的模型服務(wù)器,要能根據(jù)自己的需求方便地進(jìn)行定制化開(kāi)發(fā),而AWS也需要推廣自己的服務(wù)器,于是雙方一拍即合,在新版本的PyTorch中開(kāi)源了TorchServe。
集成Kubernetes,TorchElastic讓訓(xùn)練和部署更容易
TorchElastic可以和Kubernetes無(wú)縫集成,PyTorch 開(kāi)發(fā)人員可以在多個(gè)計(jì)算節(jié)點(diǎn)上訓(xùn)練機(jī)器學(xué)習(xí)模型,這些計(jì)算節(jié)點(diǎn)可以動(dòng)態(tài)伸縮,讓模型訓(xùn)練更加高效。
TorchElastic 的內(nèi)置容錯(cuò)能力支持?jǐn)帱c(diǎn)續(xù)傳,允許模型訓(xùn)練出錯(cuò)后繼續(xù)使用前面的結(jié)果。這個(gè)組件編寫(xiě)好了分布式 PyTorch作業(yè)的接口,開(kāi)發(fā)人員只需要簡(jiǎn)單的編寫(xiě)接口部分,就能讓模型跑在眾多分布式節(jié)點(diǎn)上,而不需要自己去管理 TorchElastic 節(jié)點(diǎn)和服務(wù)。
為什么結(jié)合Kubernetes如此重要
傳統(tǒng)的程序部署的方法是通過(guò)操作系統(tǒng)在主機(jī)上安裝程序。這樣做的缺點(diǎn)是,容易造成程序、依賴庫(kù)、環(huán)境配置的混淆。而容器部署基于操作系統(tǒng)級(jí)別的虛擬化,而非硬件虛擬化。
容器又小又快,每一個(gè)容器鏡像都可以打包裝載一個(gè)程序。Kubernetes 就是來(lái)管理容器的,所以PyTorch結(jié)合Kubernetes將大大提高模型的訓(xùn)練速度,降低部署難度,而且更好管理模型的整個(gè)生命周期。
Google推出DynamicEmbedding,將TensorFlow推向“巨量級(jí)”應(yīng)用
Google比Facebook早幾天公布了一個(gè)叫做DynamicEmbedding的產(chǎn)品,能夠?qū)ensorFlow擴(kuò)展到具有任意數(shù)量特征(如搜索查詢)的 "巨量級(jí) "應(yīng)用,還專門(mén)為此發(fā)布了一篇論文,在Google為其評(píng)估的數(shù)十個(gè)不同國(guó)家的72個(gè)重估指標(biāo)中,DynamicEmbedding驅(qū)動(dòng)的模型贏得了49個(gè)指標(biāo)。
論文地址:
https://arxiv.org/pdf/2004.08366.pdf
論文中Google稱,DynamicEmbedding能夠通過(guò)模型訓(xùn)練技術(shù)進(jìn)行自我進(jìn)化,能夠很好的處理可能會(huì)丟棄太多有價(jià)值信息的場(chǎng)景。
DynamicEmbedding擁有"不間斷地"增長(zhǎng)特性,在不到六個(gè)月的時(shí)間里,從幾千兆字節(jié)自動(dòng)增長(zhǎng)到幾百兆字節(jié),而不需要工程師不斷地進(jìn)行回調(diào)。
同時(shí)DynamicEmbedding的內(nèi)存消耗也極少。例如訓(xùn)練Seq2Seq的模型時(shí),在100個(gè)TensorFlow worker和297781個(gè)詞匯量的情況下,它只需要123GB到152GB的RAM,相比之下TensorFlow要達(dá)到同樣精度至少需要242GB的RAM。
事實(shí)上,DynamicEmbedding模型早已經(jīng)應(yīng)用在Google的智能廣告業(yè)務(wù)中,為 "海量 "搜索查詢所告知的圖片進(jìn)行注釋(使用Inception),并將句子翻譯成跨語(yǔ)言的廣告描述(使用神經(jīng)機(jī)器翻譯)。
其上開(kāi)發(fā)的AI模型在兩年的時(shí)間里取得了顯著的準(zhǔn)確率提升,截至2020年2月,Google Smart Campaign模型中的參數(shù)已經(jīng)超過(guò)1240億,在20種語(yǔ)言的點(diǎn)擊率等指標(biāo)上,其表現(xiàn)優(yōu)于非DynamicEmbedding模型
Build過(guò)程也很簡(jiǎn)單,只需要在TensorFlow的Python API中添加一組新的操作,這些操作將符號(hào)字符串作為輸入,并在運(yùn)行模型時(shí) "攔截 "上游和下游信號(hào)。
再通過(guò)一個(gè)叫做EmbeddingStore的組件,讓DynamicEmbedding和Spanner和Bigtable等外部存儲(chǔ)系統(tǒng)集成。數(shù)據(jù)可以存儲(chǔ)在本地緩存和遠(yuǎn)程可變數(shù)據(jù)庫(kù)中。
DynamicEmbedding可以從worker故障中快速恢復(fù),不需要等之前所有的數(shù)據(jù)加載完畢后才能接受新請(qǐng)求。
兩大陣營(yíng)又開(kāi)戰(zhàn)端,F(xiàn)acebook亞馬遜各取所長(zhǎng)聯(lián)手對(duì)抗Google
TensorFlow依托于Google這顆大樹(shù),占了早期紅利,在基數(shù)上暫時(shí)領(lǐng)先。
但隨著越來(lái)越多競(jìng)爭(zhēng)者的加入,TF的老大地位受到了極其嚴(yán)重的威脅,PyTorch大有取而代之的勢(shì)頭。
此前,PyTorch相對(duì)TensorFlow最大優(yōu)勢(shì)只是一個(gè)動(dòng)態(tài)圖機(jī)制,導(dǎo)致PyTorch能夠比TensorFlow調(diào)試起來(lái)更容易,開(kāi)發(fā)者不需要在編譯執(zhí)行時(shí)先生成神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),然后再執(zhí)行相應(yīng)操作,可以更加方便地將想法轉(zhuǎn)化為代碼。
而且,相比TensorFlow,PyTorch的代碼風(fēng)格是更加純正的Pythonic風(fēng)味。PyTorch的動(dòng)態(tài)圖機(jī)制,加上更純正Pythonic的代碼風(fēng)格,使得PyTorch迅速流行起來(lái)。
等到谷歌發(fā)掘勢(shì)頭不對(duì),在2017年著急的上了一個(gè)支持動(dòng)態(tài)圖的TensorFlow Fold,后來(lái)發(fā)布升級(jí)版本Eager Excuation。但TensorFlow長(zhǎng)久以來(lái)深入骨髓的靜態(tài)計(jì)算,怎么可能短期內(nèi)就能徹底改變呢?
TensorFlow 2.0不僅對(duì)開(kāi)發(fā)者來(lái)說(shuō)學(xué)習(xí)成本高,甚至不得不為Google自己?jiǎn)T工撰寫(xiě)操作指南。
用戶都是用腳投票的,不論你是Google還是Facebook,做不做惡,產(chǎn)品好用才是第一位的。而招聘網(wǎng)站上的需求,能夠最直觀的體現(xiàn)企業(yè)的態(tài)度。
數(shù)據(jù)來(lái)源:
https://towardsdatascience.com/which-deep-learning-framework-is-growing-fastest-3f77f14aa318
根據(jù)the gradient統(tǒng)計(jì)的數(shù)據(jù),PyTorch在學(xué)術(shù)界越來(lái)越受到青睞,將TensorFlow遠(yuǎn)遠(yuǎn)甩在身后。
從幾大AI頂會(huì)關(guān)鍵詞數(shù)量來(lái)看,PyTorch在過(guò)去的兩年中都是呈現(xiàn)爆炸式增長(zhǎng),而TF則是不斷在走下坡路。
數(shù)據(jù)來(lái)源:
https://thegradient.pub/state-of-ml-frameworks-2019-pytorch-dominates-research-tensorflow-dominates-industry/
從業(yè)務(wù)線來(lái)看,Google不僅有框架,也有自己的云服務(wù)。而Facebook和亞馬遜,一個(gè)框架夠尖利,但是云端欠缺;另一個(gè)剛好相反,AWS穩(wěn)居云計(jì)算第一的位置,但框架相比二者弱一些。
Google的意圖很明顯是要進(jìn)一步擴(kuò)大自己在訓(xùn)練和部署方面的優(yōu)勢(shì),而Facebook的PyTorch,此前一直在生產(chǎn)環(huán)境部署等環(huán)節(jié)落后TensorFlow,此次更新的TorchServe和TorchElastic將彌補(bǔ)之前的差距。
和AWS合作也將獲得亞馬遜大量云端客戶的青睞,畢竟自己開(kāi)發(fā)的框架在自己平臺(tái)用著更順手,當(dāng)然亞馬遜也會(huì)在PyTorch社區(qū)獲得更多支持。
說(shuō)到這里我們不得不提到另外兩個(gè)知名框架:Caffe和MXNet。雖然兩者的市場(chǎng)規(guī)模不大,但也曾是全村的希望。
如今,Caffe已經(jīng)被PyTorch取代,而一旦F/A合體,MXNet的命運(yùn)又將如何呢?歡迎大膽留言猜測(cè)!