Mooncake:面向大规模语言模型服务的分布式缓存架构
Mooncake 项目地址: https://gitcode.com/gh_mirrors/mo/Mooncake
项目介绍
Mooncake 是一个基于键-值(KV)缓存的分布式架构,专为大规模语言模型(LLM)服务设计。它由Moonshot AI提供,为Kimi服务提供支持,Kimi是一种领先的LLM服务。Mooncake 通过其独特的架构,将预填充和解码集群分离,充分利用GPU集群中未被充分利用的CPU、DRAM和SSD资源,实现了一个高效的分布式缓存系统。
项目技术分析
Mooncake 的核心是一个KVCache-centric调度器,它负责在保证满足延迟相关的服务水平目标(SLOs)的同时,最大化整体有效吞吐量。与传统的假设所有请求都将被处理的研究不同,Mooncake 面临着高度过载场景的挑战。为了应对这些挑战,Mooncake 开发了一种基于预测的早期拒绝策略。实验表明,Mooncake 在长上下文场景中表现出色。与基线方法相比,Mooncake 在某些模拟场景下可以实现高达525%的吞吐量增加,同时遵守SLOs。在实际工作负载下,Mooncake 的创新架构使得Kimi能够处理更多的请求。
Mooncake 的架构包括以下几个关键组件:
- Transfer Engine:支持通过TCP、RDMA、基于NVIDIA GPUDirect的RDMA以及NVMe over Fabric(NVMe-of)协议进行快速、可靠且灵活的数据传输。
- P2P Store:基于Transfer Engine,支持在集群节点之间共享临时对象(例如检查点文件)。
- Mooncake Store:基于Transfer Engine,为LLM推理提供分布式池化KVCache存储引擎。
项目及技术应用场景
Mooncake 的设计目标是优化大规模语言模型服务,特别是在处理长上下文和高负载场景时。以下是几个具体的应用场景:
- 大规模语言模型推理:Mooncake Store 通过提供分布式KVCache,使得LLM推理过程更加高效,特别是在处理大型模型和复杂数据时。
- 数据共享与同步:P2P Store 支持在集群节点之间快速高效地共享数据,例如在模型训练过程中进行检查点同步。
- 高性能数据传输:Transfer Engine 提供了一种高效的数据传输方式,适合需要大量数据传输的场景,如大规模模型预加载。
项目特点
Mooncake 的特点体现在以下几个方面:
- 高度可扩展性:通过KVCache-centric架构,Mooncake 可以在高度过载的场景中提供高效的资源利用和吞吐量。
- 灵活的数据传输:Transfer Engine 支持多种协议,可以根据不同的网络环境和硬件条件选择最合适的数据传输方式。
- 优化的性能:通过使用RDMA等高级传输技术,Mooncake 在数据传输性能上具有显著优势,可以实现更高的带宽利用率和更低的延迟。
- 易于集成:Mooncake 的设计考虑了与其他系统的兼容性,可以轻松集成到现有的LLM服务中。
以下是Mooncake的性能示例:
Mooncake Transfer Engine 在4×200 Gbps和8×400 Gbps RoCE网络中,可以实现高达87 GB/s和190 GB/s的带宽,分别是TCP协议的2.4倍和4.6倍。
此外,Mooncake Store 和P2P Store 在数据传输和共享方面也表现出色,可以充分利用硬件带宽。
总结来说,Mooncake 通过其独特的架构和高度优化的数据传输机制,为大规模语言模型服务提供了一个高效、灵活且易于集成的解决方案。对于需要处理大量数据和高性能推理的服务提供商来说,Mooncake 是一个值得考虑的开源项目。