每個(gè) GPU 最多可以支持 7 個(gè)模型、10 個(gè)模型所需 GPU 數(shù)量從 1192 個(gè)減至 213 個(gè)、最終節(jié)約高達(dá) 82% 的 GPU 資源——這便是由北京大學(xué)團(tuán)隊(duì)和阿里巴巴團(tuán)隊(duì)提出的名為 Aegaeon 的多模型服務(wù)系統(tǒng)實(shí)現(xiàn)的效果。相關(guān)論文發(fā)表于由美國計(jì)算機(jī)協(xié)會主辦的國際頂會 2025 年操作系統(tǒng)原理研討會(SOSP,Symposium on Operating Systems Principles)上,阿里云 CTO 周靖人也是相關(guān)論文的作者之一。
![]()
圖 | 相關(guān)論文(來源:https://dl.acm.org/doi/pdf/10.1145/373)
Aegaeon 能在 token 粒度上執(zhí)行模型自動(dòng)擴(kuò)縮容,從而能夠?qū)崿F(xiàn)有效的 GPU 池化(一種通過虛擬化技術(shù)將物理 GPU 資源動(dòng)態(tài)分配給多個(gè)模型使用的管理方法)。它以每個(gè) token 為基礎(chǔ)來調(diào)度多模型請求,并能做出自動(dòng)擴(kuò)縮容決策,從而可以實(shí)現(xiàn)服務(wù)質(zhì)量的最大化。它通過組件重用、顯式內(nèi)存管理和細(xì)粒度鍵值(KV,Key-Value)緩存同步,將自動(dòng)擴(kuò)縮容開銷降低了 97%。
實(shí)驗(yàn)表明,與現(xiàn)有解決方案相比,Aegaeon 能維持高出 2 倍–2.5 的請求到達(dá)率,并能實(shí)現(xiàn)高出 1.5 倍–9 倍的有效吞吐量。目前,Aegaeon 已經(jīng)在阿里云 Model Studio 進(jìn)行 Beta 版部署并已服務(wù)于 10 個(gè)模型。
下圖是 Aegaeon 的架構(gòu)圖,展示了它服務(wù)于多個(gè)模型的過程。具體來說,Aegaeon 先是通過代理層分發(fā)這些模型,代理層通過共享內(nèi)存機(jī)制與底層服務(wù)實(shí)例同步請求元數(shù)據(jù),以便確保負(fù)載均衡和容錯(cuò)。Aegaeon 可以將不同模型的請求分發(fā)到同一個(gè)實(shí)例,一旦請求被發(fā)送到某個(gè)實(shí)例,Aegaeon 會在 token 級調(diào)度器的指導(dǎo)之下調(diào)度它們的執(zhí)行。
![]()
圖 | Aegaeon 的架構(gòu)圖(來源:https://dl.acm.org/doi/pdf/10.)
![]()
解決 token 級調(diào)度難題,實(shí)現(xiàn)自動(dòng)擴(kuò)縮容成本優(yōu)化
除了實(shí)現(xiàn)上述能力之外,Aegaeon 還解決了以下兩個(gè)技術(shù)問題:
一方面,Aegaeon 解決了 token 級調(diào)度的挑戰(zhàn)。
在 token 級別執(zhí)行自動(dòng)擴(kuò)縮容的時(shí)候,需要一定的調(diào)度策略來處理 token 級執(zhí)行時(shí)間和自動(dòng)擴(kuò)縮容延遲之間復(fù)雜的相互作用,同時(shí)還要滿足服務(wù)等級目標(biāo)(SLO,Service-Level Objective)要求,因此很難實(shí)現(xiàn)這一問題的最優(yōu)解,與此同時(shí)此前人們使用的啟發(fā)式方法很難實(shí)現(xiàn)多方面的平衡。
為此,本次研究人員提出了一個(gè) token 級調(diào)度器,從而能夠以聯(lián)合的方式調(diào)度請求處理和自動(dòng)擴(kuò)縮容決策。鑒于首個(gè) token 和后續(xù) token 的執(zhí)行時(shí)間和 SLO 的差異比較大,因此研究人員采用了預(yù)填充與解碼階段解耦的架構(gòu),并對二者進(jìn)行獨(dú)立的調(diào)度和服務(wù)。針對預(yù)填充階段,他們打造了一個(gè)分組先到先服務(wù)調(diào)度器,以便將每個(gè)請求的首個(gè) token 時(shí)間實(shí)現(xiàn)最小化。
另一方面,Aegaeon 實(shí)現(xiàn)了自動(dòng)擴(kuò)縮容成本優(yōu)化。
盡管自動(dòng)擴(kuò)縮容已經(jīng)得到廣泛研究,但是在本次研究人員的調(diào)查中他們發(fā)現(xiàn),此前已有的解決方案都無法支持 token 級的自動(dòng)擴(kuò)縮容,因?yàn)檫@涉及到 KV 緩存換出、顯存碎片整理、引擎重新初始化、KV 緩存換入等一系列超出既有考慮的關(guān)鍵過程。如果不對此進(jìn)行優(yōu)化,這一序列可能要耗時(shí)數(shù)十秒左右,從而讓 token 級方案變得不切實(shí)際。
而 Aegaeon 通過一系列深度優(yōu)化實(shí)現(xiàn)了高效的 token 級自動(dòng)擴(kuò)縮容。
具體來說:
其一,研究人員針對推理引擎的初始化步驟進(jìn)行了全面研究,借此識別并利用了引擎重新初始化中組件重用的機(jī)會;
其二,研究人員針對 GPU 和主機(jī)內(nèi)存進(jìn)行了顯式內(nèi)存管理,借此消除了碎片和顯存碎片整理開銷;
其三,研究人員實(shí)現(xiàn)了一種用于傳輸 KV 緩存的細(xì)粒度同步機(jī)制,實(shí)現(xiàn)了更好的執(zhí)行重疊和解耦。
![]()
實(shí)現(xiàn)內(nèi)存零碎片,奠定 GPU 池化基石
達(dá)成內(nèi)存零碎片,是 Aegaeon 實(shí)現(xiàn) GPU 池化的基礎(chǔ)。這得益于它的以下特質(zhì):
其一,Aegaeon 擁有自管理的顯存緩沖區(qū)。
為了減少顯存碎片,研究人員在 GPU 上為模型權(quán)重和 KV 緩存完全使用資管理的分配。啟動(dòng)的時(shí)候,Aegaeon 在一次分配中請求所有權(quán)重和 KV 緩存所需的顯存作為一個(gè)自管理緩沖區(qū),留下大約 10% 的空閑內(nèi)存供張量庫管理使用。
這一緩沖區(qū)使用指針遞增的分配方式運(yùn)行,即通過遞增指針進(jìn)行連續(xù)分配,并且可以通過簡單地重置這一指針立即完成釋放。
在每次的模型擴(kuò)容期間,Aegaeon 使用自定義包裝器類針對相關(guān)的 Python 類進(jìn)行猴子補(bǔ)丁 Monkey Patch,這些包裝器類由自管理緩沖區(qū)進(jìn)行分配和支持,這樣一來讓 Aegaeon 能夠繞過張量庫的分配機(jī)制,省去了調(diào)用顯存碎片整理的需要。
其二,Aegaeon 能夠?qū)崿F(xiàn)快速的模型加載。
它能通過將模型檢查點(diǎn)中的原始張量塊緩存在一個(gè)名為“模型緩存”的共享主機(jī)內(nèi)存區(qū)域來實(shí)現(xiàn)更快的模型加載。此外,每個(gè) GPU 關(guān)聯(lián)一個(gè)專用的“暫存緩沖區(qū)”,以用于在設(shè)備和主機(jī)之間暫存內(nèi)存拷貝。
假如擴(kuò)容模型已經(jīng)緩存在主機(jī)內(nèi)存之中,Aegaeon 可以通過暫存緩沖區(qū)以多線程的、分塊的、流水線的方式,直接將權(quán)重從模型緩存復(fù)制到 GPU,從而實(shí)現(xiàn)與此前最優(yōu)解決方案相當(dāng)?shù)募虞d時(shí)間。
![]()
(來源:https://dl.acm.org/doi/pdf/10.1145/3731569.3764815)
其三,Aegaeon 也實(shí)現(xiàn)了統(tǒng)一 KV 緩存。
為了解決存儲幾種不同形狀的 KV 緩存時(shí)的內(nèi)存碎片問題,Aegaeon 借鑒了經(jīng)典的內(nèi)存管理技術(shù),采用 Slab 分配來為每個(gè)可能的形狀構(gòu)建統(tǒng)一的 KV 緩存。每個(gè) KV 緩存區(qū)域被劃分為固定大小的塊。每個(gè) Slab 被分配給一個(gè)形狀來作為這一特定形狀的 KV 緩存塊池,這樣一來就能在真實(shí)工作負(fù)載中實(shí)現(xiàn)高效的緩存內(nèi)存利用率。
Slab 分配好比是一個(gè)高效的“文具管理員”,它同時(shí)管理著許多盒子,每個(gè)盒子只裝一種特定尺寸的便簽紙,當(dāng)需要某種便簽紙的時(shí)候,它可以直接從對應(yīng)的盒子里取一張,用完之后再放回原來的盒子里。
![]()
讓 AI 模型服務(wù)從“專線”走向“高速公路”
從本次論文可知,這一成果要解決的痛點(diǎn)是:在 Hugging Face 等模型市場上擁有種類繁多的模型,這些模型的特性和用戶量各不相同。使用專用 GPU 實(shí)例來服務(wù)并發(fā)推理工作負(fù)載中那些偶發(fā)和不可預(yù)測的請求,會導(dǎo)致大量的資源浪費(fèi)。雖然現(xiàn)有的多模型服務(wù)解決方案采用 GPU 池化和無服務(wù)器計(jì)算來提高資源效率,但其有效性僅限于每個(gè) GPU,最多支持兩到三個(gè)模型,這對于充分利用 GPU 資源來說是遠(yuǎn)遠(yuǎn)不夠的。
在 AI 模型爆炸式增長的今天,各大模型平臺同時(shí)運(yùn)行著成百上千個(gè)模型,傳統(tǒng)部署方式導(dǎo)致 GPU 資源利用率極低,每個(gè) GPU 往往只能服務(wù) 2-3 個(gè)模型,大量的算力被閑置。而本次研究團(tuán)隊(duì)通過 Aegaeon 實(shí)現(xiàn)的 token 級自動(dòng)擴(kuò)縮容技術(shù),通過將調(diào)度粒度細(xì)化到每個(gè)生成單元,在配合全棧優(yōu)化,讓單個(gè) GPU 可以智能地同時(shí)服務(wù)多個(gè)模型。
這一技術(shù)不僅大幅提升了資源利用效率,更為未來“模型超市”的設(shè)想奠定了基礎(chǔ)。也許未來人們只需輕點(diǎn)鼠標(biāo),就能在云端瞬間調(diào)用最適合的 AI 模型,無需擔(dān)心背后的資源調(diào)度難度。
參考資料:
相關(guān)論文 https://dl.acm.org/doi/10.1145/3731569.3764815
運(yùn)營/排版:何晨龍
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.