《Mooncake: A KVCache-centric Disaggregated Architecture for LLM Serving》阅读笔记

简介: mooncake技术架构解读

最近昇腾提供的大EP PD分离推理解决方案非常火,很多开发者都开始使用了。正好这两天也看了一篇PD分离的经典论文,就是Kimi采用的PD分离架构:Mooncake。

背景

传统的大模型推理方式存在一个问题,就是一个batch内的所有请求输出长度很可能不同,导致有的输入已经完成推理了,但是必须要等最后一个请求完成推理后,这个batch推理才算完成,才会进行下一个batch的计算,这就造成了计算资源浪费。为了解决这个问题,就有了continus batching特性,当一个batch内的某个请求完成推理后,就立即把下一个请求提上来补上,这样就能使得宽度为batch-size的“管道”中持续有请求在推理。但是这样又引入了新的问题:新请求的全量计算和旧请求的增量计算放在一起计算的时候,由于全量计算的输入token远大于增量推理的输入token(一般为1),所以在组batch的时候会形成空泡,造成计算资源浪费。

于是,PD分离被提出来了。P指的是prefill,即首token推理,D指的是decode,即增量推理;分离指的是prefill计算和decode计算放在不同的计算资源上进行,而不是在相同的芯片上,P算完了D接着算。干湿分离,最大的好处就是让prefill计算和decode计算互不干扰,解决P和D的根本矛盾:P是计算密集型的行为,而D是存储密集型的行为。当然,PD分离也会带来一个问题,就是P产生的kvcache需要通过网络传输到D节点,这个过程需要跨卡甚至跨机!

MoonCake架构

mooncake-archi.png

上图是MoonCake的架构图,非常形象,一盒月饼。上面2块是prefill节点,下面2块是decode节点。当然,正式系统不一定是2/2的配置,还可能是其他数量的配置,不同数量配比对应的性能也不同。每块“月饼”的灰色部分是GPU和显存,黄色部分是CPU和内存、硬盘存储,“月饼”之间通过RDMA(Remote Direct Memory Access)传输。左侧是调度系统,主要负责给新来的请求选择合适的P节点和D节点。右侧是P节点和D节点的优化目标。

对于P节点来说,目标是最大化cache reuse,P节点会使用prefix cache特性,简单来说就是用新请求的输入去匹配旧请求的输入,如果能匹配上,就用之前请求算出来的kvcache,避免重复计算。如果cache reuse越高,就越能减少计算量、提升效率。当然,P节点的限制包含TTFT(time to first token)、最低MFU(Model FLOPs Utilization)以及内存限制。对于D节点来说,目标是优化吞吐量,也就是每秒能处理的请求个数。限制是TBT(time between tokens)和显存限制。

需要注意的是,整个架构的kvcache transfer engine是一个distributed kvcache pool,也就是各个节点的内存池信息是互通的,有助于kvcache的共享传输。

当然,对于我们在背景中提到的网络传输问题,论文也给出了答案,认为只要这个公式满足,kvcache的传输成本就不会成为阻碍:B/G > 2ds/[gqa×(apd +bd^2)]。其中B是kvcache的传输带宽,G是芯片算力,d代表模型的隐藏层维度,a、b、s是常量,p是序列长度,gqa是q头数量除以kv头数量。根据这个公式,d越大,所需带宽越小,并且论文通过实验证明,只有B达到100 Gbps,就有正收益。

调度算法

schedule_algo.PNG

上图是PD分离推理系统处理推理请求的调度算法。

算法输入:P节点实例池、D节点实例池、请求R、cache block size(在这里不用关注)

算法输出:选择的P实例和D实例。

算法思路是先选择P节点,把所有P节点遍历一遍,预估选择每个P节点计算的总耗时,耗时包括3个部分:kvcache传输时间、任务排队时间、做计算的时间。选择耗时最短的P节点作为输出,再根据负载情况选择D节点。

算法详细步骤如下:

step1:计算请求R的prefix hash值,然后根据每个P节点的prefix hash池信息,找到一个前缀匹配最优的节点,记为“best instance”,对应的prefix匹配长度记为”best len";

step2:遍历每个P节点,假设在该节点的prefix_len和best_len满足这个关系:best_len/prefix_len>kvcache_balancing_threshold,说明这个节点的prefix_len太短了,重新做prefix计算的成本会比从最佳节点拷贝kvcache过来的成本高,所以在这种情况下,需要估算T_transfer;如果prefix_len长度还可以,不满足best_len/prefix_len>kvcache_balancing_threshold,那么就不需要从最佳节点拷贝kvcache过来,直接在这个节点进行计算即可,这种情况T_transfer=0;

step3:使用经验模型估算每个P节点的排队时间和prefill计算时间;

step4:计算每个节点的总耗时,在遍历过程中,如果发现更短的总耗时,就更新TTFT和实例;

step5:完成P节点遍历,选择TTFT最短的P实例,根据负载情况选择D节点。

step6:如果TTFT或者TBT不满足SLO,拒绝请求;

step7:进行kvcache拷贝传输。

整个算法过程非常简单,但论文中也说了,真正难的、在工程上有挑战的是经验模型EstimateKVCacheTransferTime、EstimatePreffllQueueTime和EstimatePreffllExecutionTime的构建。

实验结果

来看一下论文的几组实验结论:

1,和vllm框架相比,PD分离框架的TPOT更短;

2,和vllm框架相比,PD分离框架的TTFT更短、prefix cache命中率更高;

3,P和D节点数量配比会影响PD系统的吞吐。

详细的内容可以参考论文。

目录
打赏
0
35
37
0
30
分享
相关文章
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
近期,Mooncake 项目与 SGLang、vLLM 等主流大模型推理框架实现合作和适配,这些开源大模型推理框架可以通过使用 Mooncake 发布的 whl 包,支持 pip安装,docker 镜像部署等,实现了 PD 分离框架,极大提升了模型推理效率。
Mooncake 最新进展:SGLang 和 LMCache 基于 Mooncake 实现高效 PD 分离框架
Mooncake 的架构设计兼具高性能和灵活性,为未来的扩展性和生态建设奠定了坚实基础。
Kubernetes 驱动的 IaC,Crossplane 快速入门
Crossplane 是一个开源的 Kubernetes 扩展工具,允许用户通过声明式配置直接在 Kubernetes 中管理云资源。对于阿里云开发者,借助 Crossplane 和官方提供的 provider-upjet-alibabacloud,可以像管理 Pod 一样轻松操作 ECS 实例、VPC 和 OSS Bucket 等资源。本文介绍了 Crossplane 的核心概念,并通过快速入门指南演示了如何安装 Crossplane、配置阿里云认证并创建第一个 VPC 资源。
236 38
日志采集效能跃迁:iLogtail 到 LoongCollector 的全面升级
LoongCollector 在日志场景中实现了全面的重磅升级,从功能、性能、稳定性等各个方面均进行了深度优化和提升,本文我们将对 LoongCollector 的升级进行详细介绍。
335 86
LangChain脚本如何调度及提效?
本文介绍了通过任务调度系统SchedulerX管理LangChain脚本的方法。LangChain是开源的大模型开发框架,支持快速构建AI应用,而SchedulerX可托管AI任务,提供脚本版本管理、定时调度、资源优化等功能。文章重点讲解了脚本管理和调度、Prompt管理、资源利用率提升、限流控制、失败重试、依赖编排及企业级可观测性等内容。同时展望了AI任务调度的未来需求,如模型Failover、Tokens限流等,并提供了相关参考链接。
218 28
LangChain脚本如何调度及提效?
浅入浅出——生成式 AI
团队做 AI 助理,而我之前除了使用一些 AI 类产品,并没有大模型相关的积累。故先补齐一些基本概念,避免和团队同学沟通起来一头雾水。这篇文章是学习李宏毅老师《生成式 AI 导论》的学习笔记。
269 27
浅入浅出——生成式 AI
破茧成蝶:阿里云应用服务器让传统 J2EE 应用无缝升级 AI 原生时代
本文详细介绍了阿里云应用服务器如何助力传统J2EE应用实现智能化升级。文章分为三部分:第一部分阐述了传统J2EE应用在智能化转型中的痛点,如协议鸿沟、资源冲突和观测失明;第二部分展示了阿里云应用服务器的解决方案,包括兼容传统EJB容器与微服务架构、支持大模型即插即用及全景可观测性;第三部分则通过具体步骤说明如何基于EDAS开启J2EE应用的智能化进程,确保十年代码无需重写,轻松实现智能化跃迁。
309 40
生成式AI如何重塑设计思维与品牌创新?从工具到认知革命的跃迁
生成式人工智能(GAI)正在深刻改变创意领域,从设计民主化到品牌创新的三重进化路径,它不仅重构了创作方式,还推动了个人能力模型的迭代。文章探讨了GAI如何通过语义—视觉转换打破传统思维框架,催生动态品牌系统,并促进生态共创。面对变革,创作者需掌握Prompt Engineering等技能,培养跨模态思维与系统设计能力。获取GAI认证则能帮助建立完整认知框架,适应增强型思维模式。这场技术革命并非终点,而是人类创造力新纪元的起点。
登顶TPC-C|云原生数据库PolarDB技术揭秘:单机性能优化篇
阿里云PolarDB云原生数据库在TPC-C基准测试中,以20.55亿tpmC的成绩打破性能与性价比世界纪录。此外,国产轻量版PolarDB已上线,提供更具性价比的选择。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问