<aside> 💡
增量预填充
分布式kv cache
KVCache重用
KVCache传输
</aside>


Mooncake 采用了一种分离架构,它不仅将预填充(prefill)节点与解码(decoding)节点分开,而且还将GPU集群的CPU、DRAM、SSD和RDMA资源分组,实现了一个分离的KVCache。这种分离缓存利用了未充分利用的资源,提供了充足的缓存容量和传输带宽,使得在不增加额外成本的情况下,能够高效地实现接近GPU的前缀缓存。

KVCache池在CPU内存中的存储和传输逻辑如图3所示。在CPU内存中,KVCache被存储为分页块。根据请求模式,它可以采用如最近最少使用(LRU)、最少频繁使用(LFU)等缓存逐出算法,或基于请求特征的算法。这些KVCache块在CPU和GPU之间的传输由一个称为Messenger的独立(GPUDirect) RDMA基础组件处理。此架构还使我们能够为外部用户提供上下文缓存API,以实现KVCache的更高重用。