如何評價 Kimi 開源的推理平臺 Mooncake?對行業有什么影響?

2月26日,Mooncake的論文獲得「計算機存儲頂會 FAST 2025」Best Paper,這也是國內連續第三年拿到FAST Best Paper。同時,Mooncake 團隊宣布和 vLLM 團隊已經合作制定了一個多階段路線圖。這次整合將為 vLLM 引入 P/D(Prefill/Decode)分解和全局 KVCache 設計。

Mooncake:

GitHub - kvcache-ai/Mooncake: Mooncake is the serving platform for Kimi, a leading LLM service provi?github.com/kvcache-ai/Mooncake

大模型訓練/推理 高性能優化

原始論文發表于 2024年,論文地址:Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving

分離式部署的動機是什么?

大模型推理分成?prefill?和?decode?兩個階段,prefill 階段是計算密集型,decode 階段是訪存密集型且受限于顯存,兩者的資源利用率不一致。decode 階段在顯存滿足的情況下應給與更多的 tokens,來提高資源利用率,分離式部署就可以很好的滿足這點需求。

通過分離式部署,prefill 和 decode 可以采取對各自有利的分布式配置、可以采取對各自有利的 GPU 架構,來利用有限的 GPU 資源最大化吞吐。

但是分離式部署,需要將 prefill 的?kv cache?傳輸到 decode,引入了通信開銷;常用的解決辦法有如下幾點:

  • prefill 階段按 chunk 或者 layer 來傳遞,計算完一個就傳遞一個
  • kv cache 量化,采樣 int 4 或者 int8,在精度達標的情況下,減少了通信量

分離式部署一般需要做什么?

  1. 針對 prefill instance,盡可能提高 kv cache 命中率,來減少重復計算
  2. prefill 按 chunk/layer 計算,【計算】和【傳遞 kv cache 給 decode 】流式并行
  3. decode 加載 kv cache,并且將請求添加到 continuous batching 進行處理

chunked pipeline parallelism

針對每個請求,都會被劃分為 chunks,同一請求的不同 chunk 在不同的節點上面進行計算,這樣多個請求就可以并行起來,從而減少 TTFT。

prefill 階段的優化目標

prefill 階段需要盡可能提高 kv cache 命中率,減少重復計算。這就會涉及到針對常用的 kv blocks 需要被拷貝到 prefill 節點,不常用的 kv blocks 需要釋放掉。在常見的分離式部署框架中,一般由 KV Router 模塊來管理。

decode 階段的優化目標

decode 階段需要集合盡可能多的 tokens 到一個 batch 來進行推理,從而提高 MFU(Model Flops Utilization),這就會涉及到顯存的問題,可能顯存會不夠用,同時還不能過多的影響 TBT(Time Between Tokens)。TBT 是用戶能比較直接感受到的一個指標,TBT 過高,用戶體驗會較差。

Mooncake 是為了解決什么?

Mooncake 主要是遇到了 GPU 資源緊張,在實際應用場景,有限的資源情況下,如果處理過載調度(overload-oriented scheduling)的問題。

Mooncake 提出了哪些方案?

Mooncake 提出了一種?early rejection?機制,通過預測將來的負載來提前拒絕某些請求,從而減少計算資源浪費。因為實際高峰場景中會遇到某個請求完成 prefill 計算后,decoding 階段并沒有資源槽來做,還不如提前結束反饋給客戶端,避免資源的進一步擁堵。

(1).?KVCache Pool

Mooncake 的 KVCache 緩存池是在 CPU 上的。上面的流程圖解釋的比較清晰,先看命中了哪些 prefix cache,然后 prefill instance 進行加載,再計算 incremental cache blocks,然后將 prefix cache blocks + incremental cache blocks 傳輸到 decode 節點上。

(2). Inference Workflow

上圖是一個完整推理的流程圖,可以發現 mooncake 使用了 prefill computation 和 kv cache load and store 并行來減少傳輸 overhead。由于 kv cache 主要以 CPU 作為中介存儲點,decode 階段也是計算和加載異步執行,邊加載邊計算。

kv cache 放在 CPU 上因為線上并發比較高,GPU 顯存有限,而 CPU 存儲空間大。實際場景 CPU 內存也是不夠用的,還需要用到硬盤,涉及到 kv cache offload 相關的進一步調度。

(3). KVCache-centric Scheduling

Mooncake 關于 KVCache 調度邏輯見上圖。

針對 prefill instance 的選擇,會考慮 prefix cache 命中長度和 KVCache blocks 重復使用的分布情況。新進來一個請求時,input tokens 會被切分成幾個 blocks,針對每個 block 計算一個 hash key,然后將這些 block keys 與每個 prefill instance cache keys 去匹配,來識別 prefix match length(prefix_len)。

調度器會根據每個請求的長度和 prefix_len 來估計 prefill 需要執行的時間(使用離線測試集制作的預測模型),然后加上預計需要的等待時間(隊列里面所有請求的 prefill 時長之和),就是這個請求的預估 TTFT。

由于大模型結構的一致性,prefill 時間還是比較好預估的,難預估的是 transfer 時間,因為 transfer 是異步的。

總結

Mooncake 這篇論文核心是為了解決 GPU 資源有限且請求文本較長的場景,提出的 early-rejection 方案可以參考一下。具體實際應用場景下的大模型推理分布式部署,還需要結合業務情況來具體優化,但是常見的優化手段,如 kv cache 量化、P 到 D 按 layer 傳輸、prefix cache 命中率提升這些都是必須的。另外包括異構場景下,P 和 D 不同的分布式配置,會引入什么問題,又會有哪些優化,論文并沒有涉及。

發布于 2025-05-12 21:46

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/97442.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/97442.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/97442.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java中不太常見的語法-總結

簡介 讀源碼時,或者看同事寫的代碼,經常看到一些不太常見的語法,這里做一個總結 不太常見的語法 成員變量的默認值 案例: public class Person2 {private String name "張三";private Integer age;public String getNa…

Easytier異地組網與移動光貓GS220-s

Easytier異地組網與Nginx反向代理_--relay-network-whitelis easytier-CSDN博客 上一篇文章介紹了Easytier實現異地組網,基于Windows應用,本篇將探討如何將Easytier寫入光貓GS220-s中,實現更方便的家庭組網。 一、Telnet移動光貓GS220-s 1…

衛星信號和無線信號的設備廠商

以下是一些與衛星信號相關的公司:中國衛通集團股份有限公司:中國航天科技集團有限公司從事衛星運營服務業的核心專業子公司,是中國唯一擁有通信衛星資源且自主可控的衛星通信運營企業。運營管理著多顆在軌民商用通信廣播衛星,覆蓋…

HyperPlonk 的硬件友好性

1. 引言 在工業界廣泛使用的 Plonk SNARK 協議高度依賴 NTT 來完成計算。HyperPlonk 是 Plonk 的一個變種,它試圖通過用 Sumcheck 替代 NTT(以及其它改進)來提升并行性。Ingonyama團隊認為: Sumcheck 在 HyperPlonk 中所謂的并行…

Visual Studio內置環境變量有哪些

在 Visual Studio 中,內置變量(也稱為宏)可以用于在項目配置中指定特定的路徑、環境變量或其他值。這些變量可以在項目的屬性頁面中使用,也可以在代碼中使用。以下是一些常用的內置變量及其用途: 常用內置變量 $(Solut…

大模型入門學習微調實戰:基于PyTorch和Hugging Face電影評價情感分析模型微調全流程(附完整代碼)手把手教你做

深入淺出:如何訓練一個屬于你的大模型? “一個強大的大模型,究竟是如何訓練出來的?” 本文將基于行業共識,為您詳細拆解大模型的完整訓練流程,并提供一個基于開源模型和數據集的實戰代碼示例,…

零、2025 年軟件設計師考試大綱

一、考試說明 1.考試目標 通過本考試的合格人員能根據軟件開發項目管理和軟件工程的要求,按照系統總體設計規格說明書進行軟件設計,編寫程序設計規格說明書等相應的文檔,組織和指導程序員編寫、調試程序,并對軟件進行優化和集成…

uniapp npm安裝形式 全局分享和按鈕分享設置

全局分享方法新建一個shareUtil.ts方法import { storageConfig } from /config/storageConfig; export default {data() {return {miniShareOptions: {title: 標題,path: /pages/tabbar/index?inviteCode,summary: 描述,imageUrl: /userPages/static/img/invitation_h_bg.png,…

【數據結構】樹和二叉樹——樹和森林

目錄樹和二叉樹樹和森林樹的存儲結構雙親表示法孩子表示法孩子兄弟表示法森林與二叉樹的轉換樹和森林的遍歷樹的先根遍歷樹的后根遍歷樹的層次遍歷森林的先序遍歷森林的中序遍歷樹的應用求樹的深度輸出樹中所有從根到葉子的路徑的算法建樹的存儲結構的算法哈夫曼樹與哈夫曼編碼…

【小寧學習日記5 PCB】電路定理

目錄 一、先搞懂:原理圖的 “構成密碼” (1)連接線:別被 “直線” 騙了! (2)結點:紅色小圓點才是 “真?連接” (3)網絡標簽:“無形的連線” …

ans1語法的一個例子nt5inf.cat

第二部分:語法第一部分:頭部語法第一部分A:0x30 類型位0x10SEQUENCE and SEQUENCE OF10語法第一部分B:83 長度3個字節,如果為1個字節,第一部分B則沒有。語法第一部分C:長度 0x09 …

三電平逆變器SVPWM控制(無解耦功能)與諧波分析

三電平逆變器的空間矢量脈寬調制(SVPWM)控制方法,重點分析在不使用解耦控制的情況下實現5%諧波含量的技術方案。我們將使用MATLAB/Simulink進行建模和仿真分析。 一、三電平逆變器基本原理 三電平逆變器相比傳統兩電平逆變器具有以下優勢: 輸出電壓波形質…

模擬實現C++中的string類型:從底層理解字符串操作

string前言核心成員變量設計構造函數與析構函數默認構造函數從C風格字符串構造填充構造拷貝構造函數迭代器范圍構造析構函數基本操作實現迭代器支持容量管理元素訪問字符串修改操作拼接操作插入與刪除字符串查找操作運算符重載總結每文推薦前言 在C中,std::string是…

pdf轉ofd之移花接木

文章目錄1.pdf轉ofd的方法1.1 spire.pdf.free1.2 ofdrw2.移花接木3.總結1.pdf轉ofd的方法 1.1 spire.pdf.free 這個是一個半開源的類庫,免費版本的在轉換的時候會有一個10的限制,所以不推薦使用,具體教程網上都有,這里只是分享有…

用【Coze】實現文案提取+創作

在AI技術飛速發展的當下,打造專屬智能應用成為不少人的向往。今天,就帶大家走進字節跳動的扣子Coze平臺,看看如何借助它搭建智能體,還會介紹AI工作流,以及詳細的Coze搭建步驟,開啟你的AI創作之旅&#xff5…

buuctf——web刷題第5頁

第五頁 目錄 [EIS 2019]EzPOP [WMCTF2020]Make PHP Great Again 2.0 [BSidesCF 2020]Hurdles [安洵杯 2019]iamthinking [GWCTF 2019]mypassword [HFCTF2020]BabyUpload [NewStarCTF 2023 公開賽道]include 0。0 [SWPU2019]Web4 [PASECA2019]honey_shop [Black Watc…

果蔬采摘機器人:自動駕駛融合視覺識別,精準定位,高效作業

在智慧農業的快速發展中,果蔬采摘機器人以其自動駕駛技術與視覺識別技術的完美融合,正逐步成為農業生產中的重要力量。這些機器人不僅實現了對果蔬的精準定位,還顯著提高了采摘效率,展現了強大的技術優勢。一、自動駕駛技術的引領…

2025年職業發展關鍵證書分析:提升專業能力的路徑選擇

在當今職場環境中,專業能力的提升已成為職業發展的重要方面。各類專業證書作為系統學習與能力驗證的方式,受到越來越多職場人士的關注。本文基于當前行業發展趨勢,分析8個在不同領域具有代表性的專業資格認證,為職場人士提供參考信…

【Qt】QCryptographicHash 設置密鑰(Key)

QCryptographicHash 本身不能設置密鑰(Key)。 它是一個用于計算非密鑰型加密哈希的函數,其設計目的和 HMAC 或加密算法完全不同。 下面我詳細解釋為什么,以及如何正確地實現你可能想要的功能。 1. QCryptographicHash 的核心功能&…

2025板材十大品牌客觀評估報告—客觀分析(三方驗證權威數據)

隨著消費者環保意識提升,板材作為家裝基礎材料的性能指標受到廣泛關注。中國林產工業協會數據顯示,2025年國內環保板材市場規模約860億元,但行業標準執行不一,消費者面臨信息不對稱問題。本報告嚴格依據可驗證的第三方數據&#x…