掘力計(jì)劃第21期 - 螞蟻Ray: 大模型時(shí)代的AI計(jì)算基礎(chǔ)設(shè)施
8月12日,在掘力計(jì)劃系列活動(dòng)第21場(chǎng)《解析大語(yǔ)言模型的訓(xùn)練和應(yīng)用》分享中,螞蟻(計(jì)算智能技術(shù)部)Ray團(tuán)隊(duì)開源負(fù)責(zé)人,Ray開源社區(qū)Committer宋顧楊應(yīng)邀作了題為《Ray: 大模型時(shí)代的AI計(jì)算基礎(chǔ)設(shè)施》的技術(shù)分享。
宋顧楊的分享主題:《Ray: 大模型時(shí)代的AI計(jì)算基礎(chǔ)設(shè)施》。Ray 這個(gè)分布式計(jì)算引擎框架,可能很多人都沒有聽說(shuō)過(guò) Ray 這個(gè)框架,主要是原因作為一個(gè)基礎(chǔ)設(shè)施,Ray 往往不以產(chǎn)品的形態(tài)出現(xiàn),而是作為產(chǎn)品的支撐。
如果來(lái)說(shuō)一些基于 Ray 來(lái)支撐的一些產(chǎn)品,大家肯定就耳熟能詳了,比如:OpenAI,OpenAI 在今年揭露了一些他們的 GPT 系列產(chǎn)品底層訓(xùn)練所使用到的分布式計(jì)算框架,其中 Ray 框架就被他們重點(diǎn)指出了其所發(fā)揮的作用。
1. Ray 的演進(jìn)
Ray 從誕生之初,其實(shí)是作為一款強(qiáng)化學(xué)習(xí)方面的框架被創(chuàng)造出來(lái),隨著時(shí)代的不斷變化,Ray 也被加入了更多的功能,其定位也在慢慢發(fā)生改變,先來(lái)看一下 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)了超過(guò) 26% 的代碼,所以 Ray 框架其實(shí)在螞蟻的各個(gè)場(chǎng)景內(nèi)都有涉及,并且螞蟻集團(tuán)也為其發(fā)展也貢獻(xiàn)了不小的力量:
到目前為止,Ray 的定位就是一款面向 AI 的新一代 AI 計(jì)算框架,同時(shí)也是一款通用分布式計(jì)算框架。
Ray 在計(jì)算系統(tǒng)中解決的核心問(wèn)題可以用一張圖來(lái)概括:
對(duì)于任何一個(gè)分布式系統(tǒng)研發(fā)團(tuán)隊(duì)來(lái)講,他們會(huì)面臨一些很重復(fù)的問(wèn)題,就是上圖右邊的這些問(wèn)題,這些問(wèn)題會(huì)耗費(fèi)整個(gè)研發(fā)團(tuán)隊(duì)很多不必要的經(jīng)歷,Ray 來(lái)解決的就是這么一個(gè)問(wèn)題,讓研發(fā)團(tuán)隊(duì)更專注于自身的業(yè)務(wù)系統(tǒng)上而非通用問(wèn)題上。
2. Ray 核心能力
通過(guò)上面分享人給的例子圖,可以看出 Ray 對(duì)于整個(gè)計(jì)算任務(wù)有很強(qiáng)的優(yōu)化,無(wú)論是從效率還是功能上,都遠(yuǎn)遠(yuǎn)超過(guò)傳統(tǒng)的云原生計(jì)算方式。
Ray 能有這么大的提高,離不開它的一些核心設(shè)計(jì)點(diǎn):
- 不綁定計(jì)算模式:把單機(jī)編程中的基本概念分布式化。
- 無(wú)狀態(tài)計(jì)算單元:通過(guò)簡(jiǎn)單的注解就可以讓一個(gè)本地方法放到遠(yuǎn)程機(jī)器上執(zhí)行。
- 有狀態(tài)的計(jì)算單元:輕松將一個(gè)本地類部署到遠(yuǎn)程機(jī)器上,類serverless。
- 分布式 Object:多節(jié)點(diǎn)之前 Object 傳輸,自動(dòng)垃圾回收。
- 多語(yǔ)言和跨語(yǔ)言:Ray 支持 Java、Python、C++,并且可以做跨語(yǔ)言調(diào)用。
- 資源調(diào)度:注解聲明式任務(wù)需要分配的資源,比如 CPU,是否同一節(jié)點(diǎn)。
- 自動(dòng)故障恢復(fù):Ray 所有組件都具有自動(dòng)恢復(fù)功能,用戶無(wú)需關(guān)心其底層細(xì)節(jié),聲明其實(shí)現(xiàn)即可。
- 運(yùn)行時(shí)環(huán)境依賴:針對(duì)不同的任務(wù)可以直接聲明不同的運(yùn)行環(huán)境,比如需要一個(gè)帶 tensorflow 的 python 環(huán)境。
- 運(yùn)維:完善的運(yùn)維與監(jiān)控功能與可視化頁(yè)面。
雖然實(shí)現(xiàn)了這么多強(qiáng)大的功能,Ray 的架構(gòu)卻是非常的簡(jiǎn)潔高效:
具體想要了解具體 Ray 的架構(gòu)協(xié)作方式可以參考他們的官方文檔,在這里就不多做闡述了。
3. Ray 的開源生態(tài)與案例
上圖就是 Ray 支持的 AI 生態(tài)的全景圖,幾乎涵蓋了市面上所有主流框架,也就是說(shuō),在 Ray 里面可以很方便的上面這些框架做集成。
通過(guò)這些框架集成,Ray 也可以將整個(gè)AI pipeline執(zhí)行過(guò)程串聯(lián)成以下四個(gè)大步驟:
Data -> train -> tune -> serve,這四步涵蓋了所有分布式訓(xùn)練的主要功能:
- 數(shù)據(jù)預(yù)處理。
- 深度學(xué)習(xí)。
- 深度調(diào)優(yōu)。
- 在線推理。
在 Ray 中,你可以通過(guò)短短百行代碼完成以上所有步驟。
在開源大模型訓(xùn)練方面,也有許多大型項(xiàng)目在使用 Ray:
在企業(yè)級(jí)應(yīng)用方面,大家最耳熟能詳?shù)膽?yīng)該就是 ChatGPT-4了:
除了 OpenAI 之外,還有許多來(lái)自全球各地的公司在深度使用 Ray:
最后,如果大家對(duì) Ray 這個(gè)框架感興趣,可以去其官網(wǎng)了解關(guān)于它的更多內(nèi)容~