前言
本文依托论文《Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving》来讲解kimi的后端服务架构Mooncake,并按照自己的思路来梳理论文中的一些关键信息。
背景
服务端面临的问题
随着大模型技术越来越强,很多应用都是以Maas(Model as a Service)的方式对外提供服务,服务端的能力受模型的能力约束。对于C端应用来说,期望的服务端优化目标一般时最大化有效吞吐量,以保证大量用户的正常体验。这种优化进行的同时一般也要满足SLO(服务等级目标)。在大模型应用的背景下,这里的目标通常是首次生成令牌的时间(TTFT)和令牌之间的时间(TBT)。一般优化的目标期望在这些点之间进行trade off。
常见的解决方案
对于最大化吞吐量的目标而言,目前的优化方式一般是:
-
尽可能多地重复使用 KVCache,以减少所需的计算资源(比如之前文章中提到的PageAttention,RAGCache等)。
-
最大化每个批次中的令牌数量,以提高模型浮点运算利用率(MFU)。
虽然这两种方式一般可以提高吞吐量,但在SLO上可