月之暗面和清華KVCache.ai團隊的最新論文,首次揭秘了Kimi背后的推理架構!
要知道Kimi是國產大模型的當紅炸子雞,火到可以說從來沒缺過流量,甚至還經常出現(xiàn)過載。
而隨著論文的發(fā)布,這潑天的流量到底如何被Kimi接住的問題,也有了答案。
Kimi背后的推理架構名叫Mooncake(月餅),主要特點是采取了分離式的設計方案。
而且,Mooncake在設計之時就考慮了可能出現(xiàn)的大流量場景,并針對這種情況專門研發(fā)。
在模擬場景下,Mooncake最高能帶來525%的吞吐量增長,實際場景中也能多處理75%請求。
另據(jù)月之暗面工程副總裁許欣然的一篇知乎文章介紹,Kimi有80%以上的流量,都是由該系統(tǒng)承接。
從KV緩存出發(fā),建造分布式系統(tǒng)
整個Mooncake系統(tǒng)設計的核心,是圍繞著KV緩存展開的。
(KV緩存用于存儲鍵-值對(Key-Value Pairs),主要優(yōu)勢在于可以簡單高效地訪問和檢索數(shù)據(jù),在大模型當中可以提高推理速度并減少計算資源消耗。)
之所以這樣做,是因為團隊預計KV緩存的容量會長期保持高位,因此圍繞KV緩存進行優(yōu)化十分必要。
從結構上看,Mooncake由全局調度器(Conductor)、Prefill節(jié)點集群、Decoding節(jié)點集群和分布式KVCache池幾部分組成,另外還有RDMA通信組件(Messenger)。
其中全局調度器是用戶請求到達系統(tǒng)后的第一站,它負責接收請求并根據(jù)KV緩存分布和負載情況,將請求調度到Prefill和Decoding節(jié)點。
調度器在調度時需要綜合考慮KV緩存的復用長度、負載均衡等因素,實現(xiàn)KV緩存復用的最大化。
具體到Mooncake,它采用了一種啟發(fā)式的自動熱點遷移策略,可以在不需要精確預測未來訪問的情況下自動復制熱點KV緩存塊。
同時,這種動態(tài)復制熱點KV緩存塊的方式,也是實現(xiàn)均衡負載的一種重要途徑。
實驗結果表明,與隨機調度和負載均衡調度相比,Mooncake的調度策略可以顯著降低TTFT(Time To First Token,首個Token延遲),提高系統(tǒng)性能。
完成調度之后,任務會分別交由Prefill和Decoding節(jié)點進行運算。
Prefill節(jié)點接收到調度器轉發(fā)過來的請求后,會從KV緩存池中讀取緩存,執(zhí)行預計算并生成新的KV緩存。
對于長上下文請求,Mooncake還會分塊流水并行的方式,使用多個節(jié)點并行處理來降低延遲。
而Decoding節(jié)點除了接收調度器發(fā)來的請求外,還會收到Prefill階段生成的KV緩存,節(jié)點會對這些緩存執(zhí)行解碼并生成最終結果。
這當中,大容量、高性能的KV緩存存儲由緩存池提供;RDMA通信組件則憑借其高帶寬、低延遲的優(yōu)勢,負責在不同節(jié)點之間的KV緩存?zhèn)鬏敗?/p>
除了采取以KV緩存為中心的工作流程外,Mooncake還有另一個重要特點——分離式的架構。
采取分離式架構的重要因素之一,是在于Prefill和Decoding兩個階段的計算特性差異很大。
具體來說,它們分別要對TTFT和TBT(Time Between Tokens,Token間延遲)負責。
這就導致了兩者在計算復雜度、內存訪問方式、并行粒度和對延遲的敏感度上都存在差異:
所以,月之暗面團隊對GPU集群也進行了相應的拆分,以便將它們分別部署在不同節(jié)點集群上,實現(xiàn)資源隔離和專門優(yōu)化。
另外,Mooncake中的KV緩存池也是分布式的,同時充分利用了GPU集群中空閑的CPU、DRAM和SSD資源,實現(xiàn)了大容量、高帶寬的KV緩存存儲和傳輸,同時也減少了閑置資源的浪費。
提前預測負載,及時拒絕超量請求
不過,即使Mooncake采用了高效的分離架構,但實際環(huán)境中的超大流量,對系統(tǒng)仍然是一個考驗。
對此,作者也提出了新的應對策略。
在過載場景下,調度的關鍵是決定是否接受新的請求。
由于Mooncake采用的是分離式架構,可以采取早期拒絕策略,在Prefill階段就根據(jù)Decoding節(jié)點的負載情況,提前拒絕請求。
Mooncake使用TTFT和TBT的SLO(Service Level Objective,服務等級目標)滿足情況作為負載的度量指標。
具體的SLO要求是TTFT的90分位值(P90)不超過單個請求在空載條件下處理時間的10倍,TBT的P90值不超過5倍。
這種早期拒絕策略可以顯著減少無效的Prefill計算,提高資源利用率,但同時也帶來了新的問題——Prefill和Decoding節(jié)點負載的波動,導致資源利用率下降、影響系統(tǒng)性能。
這是由于早期拒絕策略中,系統(tǒng)做出請求拒絕的決策時存在滯后性,如下圖所示:
在階段1,Prefill節(jié)點和Decoding節(jié)點的負載都較低,此時調度器會持續(xù)接受新的請求,直到Prefill節(jié)點的負載達到上限。
進入階段2后,Rrefill節(jié)點處理的請求開始進入Decoding節(jié)點,導致其負載快速上升。當Decoding節(jié)點的負載超過閾值后調度器開始拒絕新的請求,但此時Prefill節(jié)點的負載仍然很高。
到了階段3,由于調度器拒絕新請求,Prefill節(jié)點的負載開始下降。但此前積壓的請求正在Decoding階段處理,節(jié)點的負載仍然很高。
最后是階段4,Decoding節(jié)點的負載開始下降,因為前面的請求都處理完成,而新的請求又被拒絕了。這時調度器再次開始接受新請求,Prefill節(jié)點的負載又開始上升。
之后,這個過程會周期性地重復,導致Prefill和Decoding節(jié)點的負載出現(xiàn)反相位的波動。
針對這一問題,月之暗面團隊對這種簡單的早期拒絕策略進行了修正,提出了基于預測的早期拒絕策略,從而降低節(jié)點負載的波動。
這種策略的核心思想是對一段時間后的Decoding節(jié)點負載進行預測,并基于預測結果決定是否拒絕請求。
預測可以在請求級別和系統(tǒng)級別兩個層面進行,請求級別的預測比較困難,因為要預測單個請求的執(zhí)行時間;系統(tǒng)級別的預測相對容易一些,只需要預測整體的負載情況。
Mooncake采用的是一種簡化的系統(tǒng)級別預測方法,假設每個請求的執(zhí)行時間服從某個固定分布,據(jù)此預測未來一段時間內的負載情況。
實驗結果表明,這種基于預測的早期拒絕策略,可以有效緩解負載波動問題。
最終,端到端性能評估結果表明,Mooncake的架構設計和優(yōu)化策略,有效提高了推理服務性能,尤其在長上下文和真實場景下優(yōu)勢更加顯著。
在ArXiv Summarization和L-Eval數(shù)據(jù)集上,Mooncake的吞吐量比baseline方法vLLM分別提高了20%和40%。
在模擬數(shù)據(jù)集上,Mooncake的吞吐量最高可達525%,在真實數(shù)據(jù)集上也可以比vLLM多處理約75%的請求。
過載場景下的性能評估結果則顯示,使用基于預測的早期拒絕策略時,拒絕的請求數(shù)量從baseline的4183個減少到了3589個,說明系統(tǒng)的請求處理能力得到了提高。
針對未來的發(fā)展,論文的另一位作者、清華大學計算機系助理教授章明星表示,從目前的趨勢來看,大模型服務的負載會愈發(fā)的復雜和多元化,調度會越來越復雜,也會越來越重要。
而對于月之暗面的發(fā)展方向,則是由許欣然做了解答——分布式策略的實施,也意味著未來月之暗面的整個系統(tǒng),將往“算力/$”和“帶寬/$”兩個方向獨立發(fā)展,從而對硬件優(yōu)化更加友好。
文章內容僅供閱讀,不構成投資建議,請謹慎對待。投資者據(jù)此操作,風險自擔。
近日,德國柏林國際電子消費品展覽會(IFA2024)隆重舉辦。憑借在核心技術、產品設計及應用方面的創(chuàng)新變革,全球領先的智能終端企業(yè)TCL實業(yè)成功斬獲兩項“IFA全球產品設計創(chuàng)新大獎”金獎,有力證明了其在全球市場的強大影響力。
近日,中國家電及消費電子博覽會(AWE 2024)隆重開幕。全球領先的智能終端企業(yè)TCL實業(yè)攜多款創(chuàng)新技術和新品亮相,以敢為精神勇闖技術無人區(qū),斬獲四項AWE 2024艾普蘭大獎。
“以前都要去窗口辦,一套流程下來都要半個月了,現(xiàn)在方便多了!”打開“重慶公積金”微信小程序,按照提示流程提交相關材料,僅幾秒鐘,重慶市民曾某的賬戶就打進了21600元。
由世界人工智能大會組委會、上海市經信委、徐匯區(qū)政府、臨港新片區(qū)管委會共同指導,由上海市人工智能行業(yè)協(xié)會聯(lián)合上海人工智能實驗室、上海臨港經濟發(fā)展(集團)有限公司、開放原子開源基金會主辦的“2024全球開發(fā)者先鋒大會”,將于2024年3月23日至24日舉辦。