久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

阿里巴巴 AI 系統(tǒng)建設(shè)的思考

 新用戶0175WbuX 2022-01-27

  最近人工智能得到了爆發(fā)式的發(fā)展,,這個(gè)背后的主要的原因,就是因?yàn)榛ヂ?lián)網(wǎng)的發(fā)展速度之快,,使得我們能夠快速的堆積數(shù)據(jù),,同時(shí)加上硬件的快速發(fā)展,以及神經(jīng)網(wǎng)絡(luò)訓(xùn)練方式的革新,,使得我們有能力能夠訓(xùn)練比較深的神經(jīng)網(wǎng)絡(luò),,產(chǎn)出了能夠具有突破人類“智能”的模型,并且廣泛落地到了實(shí)際應(yīng)用中,。

  在這個(gè)趨勢下,,算法以及背后的工程體系更加的收攏,促成了 TensorFlow,,PyTorch 等深度學(xué)習(xí)框架的誕生和流行,,從而使得進(jìn)行深度學(xué)習(xí)應(yīng)用開發(fā)的門檻進(jìn)一步的下降,原有人工智能的算法結(jié)構(gòu)創(chuàng)新,,變得并不是那么高不可攀,,如何能夠?qū)?AI 的工程化做到更大普惠化,成為人工智能研發(fā)的關(guān)鍵,。

  同時(shí)隨著 Transformer 以及 Bert 等訓(xùn)練方式的創(chuàng)新,,大規(guī)模預(yù)訓(xùn)練模型以及從大模型進(jìn)行場景化蒸餾進(jìn),而產(chǎn)生垂直場景的 AI 應(yīng)用,,已經(jīng)漸漸成為人工智能研究標(biāo)準(zhǔn)流程,,那么 AI 的工程如何能夠有效支撐超大規(guī)模預(yù)訓(xùn)練,成為另外一個(gè)關(guān)鍵,。

  因?yàn)榇笠?guī)模預(yù)訓(xùn)練模型需要耗費(fèi)大量算力資源,,AI 工程需要通過云化方式來提高算力的共享,利用云良好的彈性,,共享性和互通性來降低研發(fā)成本,,阿里巴巴機(jī)器學(xué)習(xí)平臺(tái) PAI 就是在這樣的需求理解上,構(gòu)建自己 AI 系統(tǒng)的建設(shè),,提高 AI 工程化的能力和效率,。

  我覺得做深度學(xué)習(xí)框架其實(shí)有兩個(gè)派別的人,一派是做分布式系統(tǒng)的人來做的,,另外一派是做算法的人來做的,。不同的人的背景不同,所以做這個(gè)事情的角度也會(huì)不同,,從而產(chǎn)生不同門派,。TensorFlow 屬于系統(tǒng)派,,而 PyTorch 屬于算法派。像我們這種做系統(tǒng),,特別是做過超大規(guī)模分布式系統(tǒng)的人,,往往最擔(dān)心的就是,當(dāng)你要對一個(gè)已部署在成千上萬臺(tái)的計(jì)算集群上的平臺(tái)軟件,,需要做重大重構(gòu)的時(shí)候,,如何保證重構(gòu)和遷移能夠更靈活順暢的進(jìn)行。

  這個(gè)中間的困難沒有做過這個(gè)事情的人可能不會(huì)太有體感,,這么大一個(gè)平臺(tái),,公司財(cái)力不可能讓你去通過鏡像一個(gè)個(gè)集群的方式來完成任務(wù)的遷移,并且越大公司的平臺(tái)上用戶數(shù)眾多,,業(yè)務(wù)都會(huì)耦合在一起去完成公司的使命,,基本上你不可能有時(shí)間點(diǎn)可以讓全公司的業(yè)務(wù)團(tuán)隊(duì)都放下他們自己手頭的優(yōu)先級(jí),來配合你做這種遷移,,哪怕你工程能力非常強(qiáng),,也不敢百分百的確保這種遷移中間不會(huì)出現(xiàn)任何意外,而對于很復(fù)雜的系統(tǒng)來說,,要做到這一點(diǎn)基本上就更難了,。

  所以我們做系統(tǒng)的,往往會(huì)在系統(tǒng)設(shè)計(jì)階段就有所考慮,,把系統(tǒng)設(shè)計(jì)得更加具有可擴(kuò)展性,,從而盡最大可能去避免出現(xiàn)這種大的重構(gòu)和推倒重來。當(dāng)我們在面對需要構(gòu)建一個(gè)深度學(xué)習(xí)框架的時(shí)候,,我們第一時(shí)間就在設(shè)想這個(gè)框架需要能夠(從規(guī)模上)很好支持分布式,能夠很好的擴(kuò)展到任意大的深度模型的框架,,我們希望構(gòu)建一個(gè)系統(tǒng),,(從模態(tài)上)能夠像人腦一樣能夠把視覺,語音,,語言等多種模型能夠一同訓(xùn)練,。其實(shí)這個(gè)就是 TensorFlow 這樣系統(tǒng)構(gòu)造的時(shí)候的原始想法,把整個(gè)計(jì)算構(gòu)成一個(gè) Tensor 的 Flow 圖,。

  因?yàn)榉植际奖旧砭秃軓?fù)雜,,需要處理各種節(jié)點(diǎn)相互的數(shù)據(jù)和執(zhí)行中的各種依賴關(guān)系。這些事情由人來寫代碼,,太繁瑣且容易出錯(cuò),,所以自然地,我們就會(huì)設(shè)想由系統(tǒng)來負(fù)責(zé)這種依賴關(guān)系,。這也就是為什么我們希望整個(gè)分布式執(zhí)行的計(jì)劃是一個(gè)靜態(tài)圖,,然后系統(tǒng)再根據(jù)用戶指定的或者系統(tǒng)智能的決定的 placement 進(jìn)行分圖,,并在這些分圖中添加合適的 Send-Recv 的 OP,從而構(gòu)成一個(gè)分布式的執(zhí)行計(jì)劃,。

  但是這樣的設(shè)計(jì)理念也會(huì)帶來一些困擾,,我們在模型訓(xùn)練時(shí)候,有時(shí)候有些類似控制圖的部分,,在這種設(shè)計(jì)理念下,,我們必須要把這些控制流圖的代碼也 OP 化,然后把這些 OP 也整體串聯(lián)在 Tensor 的 Flow 執(zhí)行圖中,。大家有興趣了解細(xì)節(jié)的話也可以看看論文《Dynamic Control Flow in Large-Scale Machine Learning, Eurosys2018》,,不過這種方式會(huì)使得一些習(xí)慣單機(jī)開發(fā)的研究人員覺得比較晦澀。

  同時(shí)也是因?yàn)榉植际降脑?,我們做系統(tǒng)的很自然會(huì)把模型的開發(fā)過程分成構(gòu)圖和執(zhí)行兩個(gè)階段,。構(gòu)圖的時(shí)候只是生成一個(gè)邏輯執(zhí)行計(jì)劃,然后通過顯式方式的提交(或者 execute)過程進(jìn)行執(zhí)行,。

  這種方式讓研究人員覺得不能一邊寫代碼一邊就能夠馬上看到代碼片段的結(jié)果,,所以這也造成很多人詬病 TensorFlow 的模式不太容易調(diào)試自己模型程序的原因,其實(shí)這也對分布式帶來負(fù)擔(dān),。

  但是 TensorFlow 也有很多優(yōu)勢,,因?yàn)?TensorFlow 是靜態(tài)圖的方式,(帶來好處之一就是)其可以做到訓(xùn)推一體,,正在訓(xùn)練出來的模型能夠?qū)С瞿P蛨D,,并且在這個(gè)圖上進(jìn)行系統(tǒng)化的推理優(yōu)化,從而能夠非常方便部署到線上,。這個(gè)系統(tǒng)性的方法,,對于工程化也是另外一個(gè)優(yōu)勢。

  框架的另外一派是算法派,,特別是感知類模型(圖像,,語音,語言類)訓(xùn)練,,因?yàn)檫@類訓(xùn)練一般都是同步訓(xùn)練,,然后“分布式訓(xùn)練”也不像系統(tǒng)派那樣設(shè)想是任意異構(gòu)的分布式執(zhí)行圖(即每個(gè)分布式節(jié)點(diǎn)的執(zhí)行邏輯可以不同),而只是需要數(shù)據(jù)并行,,這樣我們就可以利用 MPI 的 AllReduce 的通訊源語來進(jìn)行梯度的匯集計(jì)算,。

  算法同學(xué)需要一種豐富的可擴(kuò)展的在 GPU 上能夠很好運(yùn)行的,并且能夠很好進(jìn)行自動(dòng)梯度的算子庫,,并且因?yàn)槊嫦蚴菙?shù)據(jù)并行的場景,,這樣的話在神經(jīng)網(wǎng)絡(luò)部分其實(shí)都是單機(jī)程序,從而可以利用任何 python 的語法糖去構(gòu)建任何的動(dòng)態(tài)的訓(xùn)練控制邏輯(大家也把這種稱作動(dòng)態(tài)圖),,對于算法研究人員來講,,這種方式寫代碼比較隨性也方便調(diào)試,,所以在研究界 PyTorch 得到大量的關(guān)注和使用。

  剛才說過 TensorFlow 從設(shè)計(jì)之初就在考慮可以超大的模型分布式訓(xùn)練的場景,,但是沒有預(yù)想到硬件的發(fā)展也非常迅速,,顯存越來越大以及訓(xùn)練技術(shù)的發(fā)展,還有非常精細(xì)化優(yōu)化顯存的工作,,比如 DeepSpeed 等,,把 optimizer 所需要的顯存 sharding 化掉,使得除了超大規(guī)模稀疏模型訓(xùn)練外,,感知類的 SOTA 模型一直可以利用數(shù)據(jù)并行的方式來進(jìn)行訓(xùn)練,。從而使得 TensorFlow 這種設(shè)計(jì)理念看上去有 overdesign 的嫌疑。

  并且就算超大規(guī)模稀疏模型訓(xùn)練,,因?yàn)?TensorFlow 整體化的設(shè)計(jì)理念,,不把 Parameter Server 作為游離在 Flow 圖之外,使得他在超大規(guī)模場景下的(限制了它)scalability 上出現(xiàn)了問題,,從而催生一堆自建 PS+深度學(xué)習(xí)框架的(稀疏)模型訓(xùn)練框架,。

  好在隨著 Transformer 的出現(xiàn),我們終于有方法能夠回歸到最初那個(gè)夢想,,使得我們可以把多種數(shù)據(jù)(圖像的,,文字的)合在一起訓(xùn)練多模態(tài)的模型,因?yàn)?a title="古玩">古玩問題規(guī)模的增大,,必然需要更多參數(shù)的模型來支持,,所以我們迅速將模型大小從幾十億增加到萬億規(guī)模,這個(gè)時(shí)候就必然需要能夠支持很好模型的并行框架,,這也是為什么最近這個(gè)領(lǐng)域重新變得火熱,,比如類似 OneFlow,MindSpore,,PaddlePaddle,,Mesh Tensorflow,GShard,,以及我們阿里的 Whale 框架。

  其實(shí)從設(shè)計(jì)理念來看,,模型并行正是回歸到原來 TensorFlow 一開始設(shè)計(jì)時(shí)候的設(shè)想,,只是那個(gè)時(shí)候因?yàn)槟P筒⑿械男枨蟛粔颍瑳]有必要提供比較好高層自動(dòng)分布式的抽象,,寫模型的人還是可以自己精細(xì)化去構(gòu)造每個(gè)計(jì)算節(jié)點(diǎn)的子圖,,整體上 TensorFlow 的框架只是負(fù)責(zé)把這些子圖能夠自動(dòng)通過 Send-Recv 進(jìn)行連接,并且在 Runtime 能夠合法的進(jìn)行計(jì)算,。

  而現(xiàn)在,,因?yàn)樾枨笤龆?,算法迭代需求的增多,迫切需要一種高層次的自動(dòng)分布式框架,,從而使得算法同學(xué)能夠去快速簡單構(gòu)造一個(gè)邏輯圖的方式,,去構(gòu)造自己神經(jīng)網(wǎng)絡(luò),而由系統(tǒng)層來進(jìn)行復(fù)雜模型并行的構(gòu)成,。

  所以其實(shí)可以看到 TensorFlow 的設(shè)計(jì)理念正好就是為這個(gè)考慮的,,利用靜態(tài)圖,我們可以邏輯性去描述一個(gè)網(wǎng)絡(luò)訓(xùn)練,,然后在執(zhí)行時(shí)候在進(jìn)行系統(tǒng)化的分圖和分布式訓(xùn)練,。所以說自動(dòng)分布式的需求并沒有超越原來設(shè)計(jì)的基本范疇,也是因?yàn)檫@樣,,我們采取和谷歌 GShard 類似技術(shù)路線去提供自動(dòng)分布式的能力,。正是站在原有框架基礎(chǔ)上去做增量。

  不同于 GShard 更加關(guān)注于谷歌 TPU 集群,,我們關(guān)注于異構(gòu)的 GPU 集群,,這里所說異構(gòu)是因?yàn)槲覀儾蝗绻雀柽@么有錢,構(gòu)建非常大的同構(gòu)化 TPU 集群,,我們集群中有不同年代的 GPU 和 CPU,,這些 GPU 各自算力和顯存都大小不一。

  也正是因?yàn)檫@樣,,其實(shí)給我們系統(tǒng)提出更大挑戰(zhàn),,我們在進(jìn)行自動(dòng)分布式時(shí)候需要在 cost model 上考慮好這些差異點(diǎn)。這樣才能做到比較優(yōu)化的分布式訓(xùn)練,。這也是我們自動(dòng)分布式框架 Whale 一種差異性和核心能力之一,。

  其實(shí)系統(tǒng)派的框架和算法派的框架也在進(jìn)行一定的融合,TensorFlow 提出了 Eager 模式,,通過 TF.Func 在 Eager 模式下可能單步執(zhí)行計(jì)算,,得到 Tensor 來提高可調(diào)式性;而 Pytorch 通過 Trace 或者 Parse 的方式轉(zhuǎn)化為 TorchScript 的圖描述,,從而能夠更好支持訓(xùn)練到推理的工程化,。

  但是這種動(dòng)靜結(jié)合其實(shí)只是在一定層次的,比如如果考慮分布式,,Trace 的方式去得到 TorchScript 就不足夠,。需要進(jìn)一步去限制構(gòu)圖能夠使用的 API,這也是像 NVIDIA 的 Megatron 以及微軟 DeepSpeed,,在 PyTorch 上去支持分布式所帶來的一些約束,,感興趣的可以讀讀 OneFlow 的 Blog,《Dynamic Control Flow in Large-Scale Machine Learning》

  所以我們認(rèn)為現(xiàn)在深度學(xué)習(xí)框架中兩個(gè)主要流行的框架 TensorFlow 和 Pytorch,,是有其設(shè)計(jì)理念原因的,。我們做 Whale 正是在這種理解的基礎(chǔ)上進(jìn)行路線選擇,,并且認(rèn)為應(yīng)該站在已有的 TensorFlow 工作基礎(chǔ)上去做增量的東西。而不是再去造一個(gè)別人做過的輪子,。

  我們認(rèn)為當(dāng)前深度學(xué)習(xí)已經(jīng)進(jìn)入到超大規(guī)模預(yù)訓(xùn)練模型時(shí)代,,在這個(gè)時(shí)代下,如何加速預(yù)訓(xùn)練模型的迭代,,從而掌握人工智能上游的預(yù)訓(xùn)練模型的研發(fā)就成為關(guān)鍵,。因?yàn)檫@些模型訓(xùn)練都需要比較復(fù)雜的模型并行方式來進(jìn)行訓(xùn)練,所以如何能夠降低甚至是對于算法同學(xué)能夠隱含分布式訓(xùn)練的復(fù)雜,,使得算法同學(xué)僅僅需要關(guān)注建模代碼構(gòu)建,,而由框架來自動(dòng)進(jìn)行分布式從而加速模型結(jié)構(gòu)迭代。

  不同于 Megatron 優(yōu)化一個(gè)定制的模型分布式訓(xùn)練,,Whale 可能在特定模型上,,d 訓(xùn)練的自動(dòng)分布式做不到最優(yōu),但是我們可以支持模型的快速的迭代,,從而推動(dòng)算法和系統(tǒng)協(xié)同優(yōu)化,,而在這個(gè)層面上就能夠和算法同學(xué)一起快速找到一個(gè)更加合適分布式的模型結(jié)構(gòu),而這個(gè)層面得到的訓(xùn)練加速比可能是一個(gè)量級(jí)的提升,,這也是 Whale 能夠快速幾個(gè)月時(shí)間,,把阿里巴巴的多模態(tài)預(yù)訓(xùn)練模型從幾億快速提升到千億參數(shù)規(guī)模,并且利用算法和系統(tǒng)的協(xié)同優(yōu)化,,利用 480 張卡就能訓(xùn)練出比肩 NV3072 卡訓(xùn)練出來的模型的核心原因,。

  以下是阿里自研分布式訓(xùn)練框架 Whale 整體的架構(gòu)圖:

  阿里巴巴 AI 系統(tǒng)建設(shè)的思考

  Whale 會(huì)將已有的靜態(tài)圖結(jié)構(gòu)轉(zhuǎn)化成 IR 描述的邏輯執(zhí)行計(jì)劃,然后系統(tǒng)會(huì)根據(jù)自動(dòng)規(guī)劃出來的并行策略,,對于執(zhí)行計(jì)劃進(jìn)行切圖,,并且把系統(tǒng)資源進(jìn)行相應(yīng)的劃分,然后把切圖的結(jié)果和資源進(jìn)行相應(yīng)的綁定,,從而生成最終的執(zhí)行計(jì)劃,。

  就如同我們說的 Whale 設(shè)計(jì)的一大目標(biāo)就是希望是個(gè) scaleup 的解決方案,可以讓用戶寫的單機(jī)單卡模型程序,,能夠自動(dòng)擴(kuò)展到分布式訓(xùn)練上,從而完成比較自然的程序的 scaleup 的過程,。這樣就能極大加快模型開發(fā)迭代速度,,從而研究者可以先在單機(jī)上去聚焦模型本身的特性,比如收斂性,,模型效果,模型研究方向是不是對頭等等,。

  到了需要把模型規(guī)模擴(kuò)大的時(shí)候,,算法工程師只是需要擴(kuò)大 Tensor 的 Shape,,或者擴(kuò)大模型結(jié)構(gòu)的堆疊,系統(tǒng)就會(huì)根據(jù)模型結(jié)構(gòu)的特點(diǎn),,結(jié)合數(shù)據(jù)并行,,流失線并行,算子切分,,混合并行,,顯存優(yōu)化等方法,通過 Cost Model 選擇一個(gè)合理的分布式訓(xùn)練的方案來自動(dòng)分布式化,,取得一個(gè)不錯(cuò)的訓(xùn)練加速比,。

  當(dāng)然我們系統(tǒng)工程師都知道這個(gè)自動(dòng)化其實(shí)是非常難的,因?yàn)橐紤]不同切圖情況,,顯存消耗,,數(shù)據(jù) IO 的范式,計(jì)算的瓶頸都是各自不同的,,有時(shí)候分布式專家相比系統(tǒng),,在一些關(guān)鍵點(diǎn),能夠進(jìn)行更好的指導(dǎo),,所以 Whale 把進(jìn)行分布式策略探索中,,如何描述切圖的 subgroup,如何描述資源組成的 virtual device 以及進(jìn)行各種并行策略,,進(jìn)行了用戶層的暴露,,然后用戶可以在原有構(gòu)建模型的過程中,可以通過 python 的 with 字句進(jìn)行這些 annotation 和靜態(tài)圖的節(jié)點(diǎn)進(jìn)行綁定,,從而來指導(dǎo)系統(tǒng),,達(dá)到更好的更可控的分布式優(yōu)化結(jié)果。隨著系統(tǒng)自動(dòng)優(yōu)化的成熟,,我們可以期待這種 annotation 將會(huì)越來越少,。

  同時(shí)因?yàn)榇笠?guī)模分布式訓(xùn)練對于資源消耗非常大,所以我們自然會(huì)在一個(gè)共享的大集群上運(yùn)行訓(xùn)練,,這樣集群時(shí)時(shí)刻刻都會(huì)在不同的任務(wù)在上面去跑,,用戶得到的資源其實(shí)是一個(gè)動(dòng)態(tài)的,并且考慮到硬件發(fā)展很快,,比如 NVIDIA 的硬件基本上是半年一代,,我們購買的硬件在數(shù)據(jù)中心平均使用時(shí)長是 3 年,這樣就必然造成我們集群是多種 GPU 卡型共存的集群,,加上有多種任務(wù)在集群中跑,,必然造成資源有時(shí)候會(huì)有碎片的出現(xiàn)(即便調(diào)度器會(huì)極力去避免),這個(gè)時(shí)候我們是沒有辦法事先知道集群資源的情況,而系統(tǒng)自動(dòng)優(yōu)化能夠更好適應(yīng)資源實(shí)際情況,,生成一個(gè)更加優(yōu)化的分布式訓(xùn)練方案,。

  更進(jìn)一步,如果我們希望調(diào)度器能夠提供更大可能性,,我們可以把不同任務(wù)裝箱在一起,,去共享 GPU 等計(jì)算資源,我們其實(shí)會(huì)把自動(dòng)分布式和調(diào)度以及編譯結(jié)合在一起,。調(diào)度器可以給出不同的資源調(diào)度的計(jì)劃,,資源的上限限制,然后自動(dòng)分布式通過這些約束結(jié)合編譯器來生成不同執(zhí)行計(jì)劃,,最后在全局上選擇一個(gè)優(yōu)的執(zhí)行計(jì)劃,。從而能夠達(dá)成全局最優(yōu)而不是局部最優(yōu)。當(dāng)然現(xiàn)在離這個(gè)最終目標(biāo)還有不少的工作需要去做,。

  總結(jié)下,,我們認(rèn)為未來 AI 的模型發(fā)展方向會(huì)從單機(jī)訓(xùn)練向大規(guī)模分布式訓(xùn)練發(fā)展,通過大規(guī)模預(yù)訓(xùn)練模型+小樣本的蒸餾的模型開發(fā)流程將會(huì)成為主流,。

  在這個(gè)潮流下,,我們需要有個(gè)更好的(自動(dòng))分布式框架能夠讓算法開發(fā)人員繼續(xù)能夠聚焦在模型結(jié)構(gòu)的設(shè)計(jì)上,而由系統(tǒng)上進(jìn)行有效自動(dòng)分布式,,這個(gè)易用性比并行化一個(gè)固定模型結(jié)構(gòu)將會(huì)更加重要,,從而推動(dòng)算法的快速迭代。并且因?yàn)榇笠?guī)模分布式訓(xùn)練對于資源渴求,,我們需要依托云的彈性構(gòu)建一個(gè)共享的大的集群來激發(fā)算法的研究,。

  正是根據(jù)這些思考,阿里巴巴機(jī)器學(xué)習(xí)平臺(tái) PAI 會(huì)持續(xù)進(jìn)行 AI 工程化建設(shè),,通過調(diào)度和分布式編程范式的規(guī)?;ㄔO(shè),數(shù)據(jù)和算力的云原生化建設(shè),,以及上層算法開發(fā)和服務(wù)標(biāo)準(zhǔn)化和普適化建設(shè),,從而使得算法能夠關(guān)注他們要做什么,由系統(tǒng)來優(yōu)化如何高效,、低成本來執(zhí)行模型訓(xùn)練和推理,。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多