掘力計(jì)劃第21期 - Ray: 大模型時(shí)代的AI計(jì)算基礎(chǔ)設(shè)施

在最近的掘力計(jì)劃 21 期中,帶來了大家非常期待的大模型專場,邀請了四位大模型領(lǐng)域的專家來為做一些分享。
今天給大家?guī)砥渲幸晃恢髦v人——宋顧楊的分享主題:《Ray: 大模型時(shí)代的AI計(jì)算基礎(chǔ)設(shè)施》。
大家可能對于宋顧楊和他的主題比較陌生,先來介紹一下宋顧楊本人的經(jīng)歷:
螞蟻(計(jì)算智能技術(shù)部)Ray團(tuán)隊(duì)開源負(fù)責(zé)人,Ray開源社區(qū)Committer。
2017年以來主要參與和推動(dòng)了Ray在螞蟻從0到1再到萬臺(tái)服務(wù)器規(guī)模的落地。
Ray C++分布式框架的作者和Runtime Environments框架的主要開發(fā)者,也是Ray中文社區(qū)的布道師。
他這次分享的主題是 Ray 這個(gè)分布式計(jì)算引擎框架,可能很多人都沒有聽說過 Ray 這個(gè)框架,主要是原因作為一個(gè)基礎(chǔ)設(shè)施,Ray 往往不以產(chǎn)品的形態(tài)出現(xiàn),而是作為產(chǎn)品的支撐。
如果來說一些基于 Ray 來支撐的一些產(chǎn)品,大家肯定就耳熟能詳了,比如:OpenAI,OpenAI 在今年揭露了一些他們的 GPT 系列產(chǎn)品底層訓(xùn)練所使用到的分布式計(jì)算框架,其中 Ray 框架就被他們重點(diǎn)指出了其所發(fā)揮的作用。
Ray 的演進(jìn)
Ray 從誕生之初,其實(shí)是作為一款強(qiáng)化學(xué)習(xí)方面的框架被創(chuàng)造出來,隨著時(shí)代的不斷變化,Ray 也被加入了更多的功能,其定位也在慢慢發(fā)生改變,先來看一下 Ray 的發(fā)展歷程:

從誕生到現(xiàn)在,Ray 經(jīng)歷了七年的發(fā)展,從一開始的強(qiáng)化學(xué)習(xí)方向到現(xiàn)在的AI方向,Ray 的團(tuán)隊(duì)及其開源社區(qū)也做了很多的努力,其中宋顧楊所在的螞蟻集團(tuán)從 2017 年就開始采用 Ray 框架作為支撐,并為 Ray 內(nèi)核貢獻(xiàn)了超過 26% 的代碼,所以 Ray 框架其實(shí)在螞蟻的各個(gè)場景內(nèi)都有涉及,并且螞蟻集團(tuán)也為其發(fā)展也貢獻(xiàn)了不小的力量:

到目前為止,Ray 的定位就是一款面向 AI 的新一代 AI 計(jì)算框架,同時(shí)也是一款通用分布式計(jì)算框架。
Ray 在計(jì)算系統(tǒng)中解決的核心問題可以用一張圖來概括:

對于任何一個(gè)分布式系統(tǒng)研發(fā)團(tuán)隊(duì)來講,他們會(huì)面臨一些很重復(fù)的問題,就是上圖右邊的這些問題,這些問題會(huì)耗費(fèi)整個(gè)研發(fā)團(tuán)隊(duì)很多不必要的經(jīng)歷,Ray 來解決的就是這么一個(gè)問題,讓研發(fā)團(tuán)隊(duì)更專注于自身的業(yè)務(wù)系統(tǒng)上而非通用問題上。
Ray 核心能力

通過上面分享人給的例子圖,可以看出 Ray 對于整個(gè)計(jì)算任務(wù)有很強(qiáng)的優(yōu)化,無論是從效率還是功能上,都遠(yuǎn)遠(yuǎn)超過傳統(tǒng)的云原生計(jì)算方式。
Ray 能有這么大的提高,離不開它的一些核心設(shè)計(jì)點(diǎn):
不綁定計(jì)算模式:把單機(jī)編程中的基本概念分布式化。
無狀態(tài)計(jì)算單元:通過簡單的注解就可以讓一個(gè)本地方法放到遠(yuǎn)程機(jī)器上執(zhí)行。
有狀態(tài)的計(jì)算單元:輕松將一個(gè)本地類部署到遠(yuǎn)程機(jī)器上,類serverless。
分布式 Object:多節(jié)點(diǎn)之前 Object 傳輸,自動(dòng)垃圾回收。
多語言和跨語言:Ray 支持 Java、Python、C++,并且可以做跨語言調(diào)用。
資源調(diào)度:注解聲明式任務(wù)需要分配的資源,比如 CPU,是否同一節(jié)點(diǎn)。
自動(dòng)故障恢復(fù):Ray 所有組件都具有自動(dòng)恢復(fù)功能,用戶無需關(guān)心其底層細(xì)節(jié),聲明其實(shí)現(xiàn)即可。
運(yùn)行時(shí)環(huán)境依賴:針對不同的任務(wù)可以直接聲明不同的運(yùn)行環(huán)境,比如需要一個(gè)帶 tensorflow 的 python 環(huán)境。
運(yùn)維:完善的運(yùn)維與監(jiān)控功能與可視化頁面。
雖然實(shí)現(xiàn)了這么多強(qiáng)大的功能,Ray 的架構(gòu)卻是非常的簡潔高效:

具體想要了解具體 Ray 的架構(gòu)協(xié)作方式可以參考他們的官方文檔,在這里就不多做闡述了。
Ray 的開源生態(tài)與案例

上圖就是 Ray 支持的 AI 生態(tài)的全景圖,幾乎涵蓋了市面上所有主流框架,也就是說,在 Ray 里面可以很方便的上面這些框架做集成。
通過這些框架集成,Ray 也可以將整個(gè)AI pipeline執(zhí)行過程串聯(lián)成以下四個(gè)大步驟:

Data -> train -> tune -> serve,這四步涵蓋了所有分布式訓(xùn)練的主要功能:
數(shù)據(jù)預(yù)處理。
深度學(xué)習(xí)。
深度調(diào)優(yōu)。
在線推理。
在 Ray 中,你可以通過短短百行代碼完成以上所有步驟。
在開源大模型訓(xùn)練方面,也有許多大型項(xiàng)目在使用 Ray:

在企業(yè)級應(yīng)用方面,大家最耳熟能詳?shù)膽?yīng)該就是 ChatGPT-4了:

除了 OpenAI 之外,還有許多來自全球各地的公司在深度使用 Ray:

最后,如果大家對 Ray 這個(gè)框架感興趣,可以去其官網(wǎng)了解關(guān)于它的更多內(nèi)容~
關(guān)于掘力計(jì)劃
掘力計(jì)劃由稀土掘金技術(shù)社區(qū)發(fā)起,致力于打造一個(gè)高品質(zhì)的技術(shù)分享和交流的系列品牌。聚集國內(nèi)外頂尖的技術(shù)專家、開發(fā)者和實(shí)踐者,通過線下沙龍、閉門會(huì)、公開課等多種形式分享最前沿的技術(shù)動(dòng)態(tài)。