如何實(shí)現(xiàn)2000萬QPS?Meta揭秘背后的AI平臺MultiRay:日均處理8000億次請求!
想要性能強(qiáng),模型除了「大」,還是「大」。
無論是自然語言處理、計(jì)算機(jī)視覺或是其他領(lǐng)域的研究,當(dāng)下的深度學(xué)習(xí)研究范式通常采用非常大的模型架構(gòu),對海量的數(shù)據(jù)進(jìn)行訓(xùn)練,然后將其用于一個(gè)特定的任務(wù)上,從而取得更佳的結(jié)果。
這種范式的好處是可以提升任務(wù)的性能指標(biāo),但由于其昂貴的訓(xùn)練成本,如果有大量的問題需要解決,那相應(yīng)地就需要訓(xùn)練多個(gè)模型,運(yùn)行成本也將急劇上升,甚至?xí)_(dá)到無法實(shí)現(xiàn)的程度。

這也意味著在實(shí)踐中,論文中提出的sota大模型只有很少一部分能夠在生產(chǎn)環(huán)境中使用,真實(shí)世界的模型往往更小更簡單。
為了提高人工智能系統(tǒng)的運(yùn)行效率,META提出了一個(gè)人工智能平臺MultiRay,可以運(yùn)行大規(guī)模sota人工智能模型。

MultiRay上部署多個(gè)模型后,通過對相同的輸入計(jì)算得到的embedding進(jìn)行重用,即只計(jì)算一次,共享了大部分處理成本,所以分?jǐn)偟矫總€(gè)模型上的計(jì)算成本就很小,從而可以優(yōu)化所有AI任務(wù)執(zhí)行的總成本。
并且開發(fā)者也會(huì)更加容易地引入AI加速器,因?yàn)檎麄€(gè)公司的計(jì)算集中在一個(gè)單一的模型中,可以在公司級別的計(jì)算能力和存儲(chǔ)之間進(jìn)行權(quán)衡。
MultiRay 的通用模型經(jīng)過訓(xùn)練后,能夠在廣泛的任務(wù)和領(lǐng)域中表現(xiàn)良好。這種萬能的模型比之前使用的小得多的針對每個(gè)任務(wù)的專門模型提供了更好的質(zhì)量。
通過使用 MultiRay,Meta 團(tuán)隊(duì)可以更快地改進(jìn)和迭代機(jī)器學(xué)習(xí)(ML)模型應(yīng)用于大量實(shí)際場景中,比如為帖子生成主題標(biāo)簽、仇恨語音檢測等。與其他團(tuán)隊(duì)從頭開始構(gòu)建大型端到端模型相比,這些任務(wù)也可以以更高的效率和更少的人力完成。
有網(wǎng)友對MultiRay編了一個(gè)地獄笑話:「實(shí)在是太高效了,所以Meta選擇開除一萬名員工?!?/p>

相關(guān)論文
MultiRay是Meta宏偉的人工智能藍(lán)圖中的一部分,劍指AI領(lǐng)域的多項(xiàng)難題。

論文鏈接:https://proceedings.mlsys.org/paper/2022/file/ed3d2c21991e3bef5e069713af9fa6ca-Paper.pdf
《無監(jiān)督的大規(guī)??缯Z言表征學(xué)習(xí)》中,研究人員首次證明,在不犧牲每種語言性能的情況下,可以進(jìn)行多語言建模。

論文鏈接:https://arxiv.org/abs/1911.02116
《從預(yù)訓(xùn)練語言模型的通用文本embedding中進(jìn)行可擴(kuò)展推理》中,研究人員演示了一種自然語言處理任務(wù)的解決方案,使用大規(guī)模的預(yù)訓(xùn)練的模型對同一文本執(zhí)行多個(gè)任務(wù),而計(jì)算成本可以下降很多。

論文鏈接:https://arxiv.org/abs/2004.14287
《多尺度視覺Transformer》和《帶掩碼的自編碼器作為時(shí)空learners》中,展示了MultiRay技術(shù)在視頻相關(guān)任務(wù)中的應(yīng)用研究。

論文鏈接:https://arxiv.org/pdf/2104.11227.pdf

論文鏈接:https://arxiv.org/pdf/2205.09113.pdf
多模態(tài)、多任務(wù)
MultiRay的第一個(gè)模型 TextRay 自2020年起投入生產(chǎn),支持文本理解應(yīng)用程序,如檢測不真實(shí)內(nèi)容和改善用戶的搜索體驗(yàn)。
但在現(xiàn)實(shí)世界中的應(yīng)用場景下,僅能處理文本數(shù)據(jù)是遠(yuǎn)遠(yuǎn)不夠的。
比如Facebook的推送中可能同時(shí)包含文本、圖像和視頻。為了理解一篇文章,模型需要分別分析其中的每一個(gè)字、每一張圖,并在其他元素的上下文中進(jìn)行分析。

但是這樣做就意味著將幾個(gè)已經(jīng)計(jì)算密集型的模型組合成一個(gè)更大、更密集的模型,隨之而來的就是計(jì)算量和功耗的增加,讓更強(qiáng)大的機(jī)器學(xué)習(xí)模型無法有效投入到產(chǎn)品和服務(wù)中。
PostRay是MultiRay的第二個(gè)模型,可以將文本和圖像理解集成到同一個(gè)模型中,比如跨Facebook和Instagram的帖子通常同時(shí)包含文本和圖像數(shù)據(jù),就可以使用PostRay。

通過使用PostRay,開發(fā)團(tuán)隊(duì)無需重復(fù)開發(fā)文本和圖像理解的模型,PostRay已經(jīng)用于Reels分類。
PostRay模型由于同時(shí)包含多個(gè)領(lǐng)域的尖端研究,因此訓(xùn)練、部署和維護(hù)起來更加復(fù)雜。通過使用 MultiRay,研究人員只需要執(zhí)行一次,即可完成這些任務(wù),整個(gè)公司都會(huì)從中受益。
一個(gè)集中的系統(tǒng)服務(wù)于一個(gè)萬能的模型,使開發(fā)者能夠直接與最前沿的研究團(tuán)隊(duì)合作,并在他們的研究成果發(fā)表后不久就將其投入生產(chǎn)。
MultiRay工作原理
MultiRay的主要目標(biāo)是使 Meta的大規(guī)模基礎(chǔ)模型的訪問更加廉價(jià),通過將模型集中執(zhí)行在像GPU這樣的加速器上,并使用緩存盡可能地節(jié)省重復(fù)計(jì)算的成本來實(shí)現(xiàn)的。
目前,MultiRay在Meta 中支持超過125個(gè)用例,每秒支持多達(dá)2000萬個(gè)查詢(QPS) ,同時(shí)每天服務(wù)8000億次查詢。
什么是embedding
大規(guī)模基礎(chǔ)模型的輸出表示為高維向量空間中的一個(gè)點(diǎn),這個(gè)點(diǎn)可以用來表征輸入,也稱為embedding

embedding是原始輸入的一個(gè)更加機(jī)器學(xué)習(xí)友好的版本,與處理原始輸入(如文本和圖像)不同,任務(wù)特定的模型可以使用 MultiRay 中的embedding表征,這樣處理起來要簡單得多。
MultiRay 中部署的基礎(chǔ)模型被優(yōu)化為適用于各種任務(wù),包括相似性和分類,這種通用性使得模型輸出的embedding相當(dāng)大(幾千字節(jié)) ,用以便傳遞更多的信息。
集中模型開發(fā)——分?jǐn)偠鄠€(gè)團(tuán)隊(duì)的開銷
大型模型和延遲限制要求在像 GPU 這樣的加速器上執(zhí)行。
GPU等專用加速硬件在Meta中的需求量很大,但即使有足夠的GPU,最先進(jìn)的模型也還是需要消耗大量的能量來訓(xùn)練和托管。MultiRay 的客戶團(tuán)隊(duì)分?jǐn)偭擞?xùn)練和托管這些大型模型的費(fèi)用,因?yàn)橄嗤挠布吞幚砜梢远啻问褂谩?/p>
集中模型比每個(gè)團(tuán)隊(duì)單獨(dú)托管的東西要大得多,質(zhì)量也要高得多,在這種情況下,一加一實(shí)現(xiàn)了大于二。

并且集中模型也帶來了更簡單的開發(fā)和操作。
通常公司內(nèi)部的多個(gè)團(tuán)隊(duì)只會(huì)負(fù)責(zé)他們自己的模型、基礎(chǔ)設(shè)施和模型維護(hù)。而隨著模型規(guī)模的增長,對每個(gè)團(tuán)隊(duì)進(jìn)行培訓(xùn)和服務(wù)的操作負(fù)擔(dān)越來越重,使得將復(fù)雜的優(yōu)化技術(shù)應(yīng)用到跨越多個(gè)團(tuán)隊(duì)的模型變得更加困難。
MultiRay使用幾個(gè)大規(guī)模的集中模型,可以讓單個(gè)團(tuán)隊(duì)處理大部分操作和優(yōu)化??蛻舳藞F(tuán)隊(duì)擁有更小的、特定于任務(wù)的模型,這些模型更容易管理。這使得許多沒有足夠資源來訓(xùn)練、部署和管理尖端人工智能的團(tuán)隊(duì)能夠使用這項(xiàng)技術(shù)。
提升GPU效率:交叉請求一批數(shù)據(jù)
加速器硬件在并行處理聚合的一組(批, batch)請求時(shí)效率最高。將請求合理地分配到batch中能夠增加服務(wù)的吞吐量,而不會(huì)造成不必要的延遲。但batch結(jié)構(gòu)增加了內(nèi)部客戶的復(fù)雜性,理想的batch可以隨著新的硬件或模型而改變。
為了簡化用戶的負(fù)擔(dān),MultiRay的外部API一次只針對一個(gè)請求,然后在內(nèi)部使用交叉請求批邏輯(cross-request batch logic)將跨客戶端的許多并發(fā)請求聚合到一個(gè)批中。
用戶可以編寫邏輯來調(diào)整batch size,以便為模型和硬件創(chuàng)建理想大小的批。這種批處理設(shè)置對于發(fā)送請求的客戶機(jī)來說是完全隱藏的,可以隨硬件性能進(jìn)行動(dòng)態(tài)調(diào)整,比如遷移到新一代 GPU 加速器硬件時(shí)使用了更大的批處理大小。
緩存: 權(quán)衡計(jì)算和存儲(chǔ)
MultiRay 利用緩存盡可能地節(jié)省重新計(jì)算的成本,使用多層緩存實(shí)現(xiàn)最小成本和低延遲,每一層都會(huì)帶來更高的命中率,但以較低的速度為代價(jià)。
這些層從每個(gè) MultiRay 服務(wù)器的 RAM 中的一個(gè)快速但較小的主機(jī)本地緩存開始,最后以一個(gè)較慢但較大的全局分布式閃存緩存結(jié)束。
MultiRay模型很大,并且它們會(huì)生成高維度的embedding來保持通用性。對于文本理解來說,這些embedding要比輸入本身大得多。

從高速緩存中embedding所需的電量比重新計(jì)算所需的電量要少,但不可能是零。由于可用的緩存存儲(chǔ)空間是有限的,因此也不可能在緩存中長時(shí)間緩存結(jié)果。
MultiRay會(huì)測量客戶端之間的請求模式,以確定最佳緩存設(shè)置(大小、生存時(shí)間、更新策略) ,從而降低服務(wù)的總成本。
比如說使用這些測量數(shù)據(jù)來模擬各種緩存生命周期設(shè)置所需的能量,在GPU加速器上重新計(jì)算請求的成本與從緩存服務(wù)請求的成本之間進(jìn)行權(quán)衡。這個(gè)反饋循環(huán)可以在客戶端行為不斷變化的情況下提高 MultiRay 的效率。
沒有免費(fèi)的午餐
這種集中式的服務(wù)也帶來了許多挑戰(zhàn)。其中一些難題比如客戶端管理、quotas和成本歸屬等,被認(rèn)為是數(shù)據(jù)庫等大型系統(tǒng)已經(jīng)解決的問題,但需要將算法適應(yīng)于人工智能領(lǐng)域。
此外,只有在集中模型被廣泛使用的情況下,才能分擔(dān)更高質(zhì)量、更昂貴的 MultiRay 模型的費(fèi)用,這也就要求模型在許多用例中提供最先進(jìn)的質(zhì)量。
這個(gè)不斷變化的目標(biāo)意味著MultiRay需要在模型更新(版本控制,升級到新版本,廢棄舊版本)和創(chuàng)新新的模型架構(gòu)和訓(xùn)練流程上投入大量資金,以減少從研究到生產(chǎn)時(shí)間,從而讓MultiRay的用戶使用上最新的技術(shù)。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由財(cái)神資訊-領(lǐng)先的體育資訊互動(dòng)媒體轉(zhuǎn)載發(fā)布,如需刪除請聯(lián)系。