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