<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kimi K3 | KVCache.AI</title>
    <link>https://kvcache.ai/tag/kimi-k3/</link>
      <atom:link href="https://kvcache.ai/tag/kimi-k3/index.xml" rel="self" type="application/rss+xml" />
    <description>Kimi K3</description>
    <generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Mon, 03 Aug 2026 00:00:00 +0000</lastBuildDate>
    <image>
      <url>https://kvcache.ai/media/logo.svg</url>
      <title>Kimi K3</title>
      <link>https://kvcache.ai/tag/kimi-k3/</link>
    </image>
    
    <item>
      <title>When Prefix Cache Meets KDA: How Mooncake Enabled Day-0 Support for Kimi K3</title>
      <link>https://kvcache.ai/blog/kimi-k3-day0-support/</link>
      <pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://kvcache.ai/blog/kimi-k3-day0-support/</guid>
      <description>&lt;p&gt;On July 27, Moonshot AI officially open-sourced its next-generation flagship model, &lt;strong&gt;Kimi K3&lt;/strong&gt;. With a total parameter count of &lt;strong&gt;2.8 trillion&lt;/strong&gt;, K3 adopts a highly sparse Mixture-of-Experts (MoE) architecture, where only 16 out of 896 experts are activated for each token. It is currently one of the largest open-weight models in the world by parameter scale.&lt;/p&gt;
&lt;p&gt;Beyond its massive parameter size, K3 also introduces comprehensive upgrades to its model architecture. It features a new linear attention mechanism, &lt;strong&gt;Kimi Delta Attention (KDA)&lt;/strong&gt;, which works together with MLA (Multi-head Latent Attention) to form a hybrid attention architecture. This design enables native support for a &lt;strong&gt;1 million-token context window&lt;/strong&gt; while balancing long-context reasoning efficiency and model performance. Meanwhile, K3 natively supports vision understanding and achieves leading performance among open models across multiple benchmarks, including coding, agent tasks, and complex reasoning.&lt;/p&gt;
&lt;p&gt;Mooncake has been part of the journey across multiple Kimi generations, providing stable and efficient infrastructure for large-scale inference through its disaggregated inference architecture. As a key partner in the K3 inference ecosystem, Mooncake, together with SGLang, vLLM, and TokenSpeed, completed Day-0 integration support on the day K3 was open-sourced, covering critical areas such as cross-instance KV Cache reuse, PD disaggregation, and EPD disaggregation. Users can deploy K3 on top of Mooncake and gain large-scale distributed inference capabilities out of the box. In scenarios such as multi-turn conversations and agentic workloads, Mooncake significantly reduces redundant computation overhead and helps fully unlock K3’s long-context capabilities.&lt;/p&gt;
&lt;p&gt;However, the impact of K3 goes far beyond simply making the model “larger.” Compared with traditional Transformers, the KDA-based hybrid attention mechanism introduced in K3 fundamentally changes the nature of caching. The system must manage not only traditional KV Cache, but also new model states such as Recurrent States. As a result, conventional designs for Prefix Cache reuse and disaggregated inference architectures must evolve accordingly.&lt;/p&gt;
&lt;p&gt;In this article, we will introduce how SGLang, vLLM, and TokenSpeed adapt to Kimi K3’s new caching semantics, and how Mooncake works together with these frameworks to provide complete distributed inference capabilities for K3.&lt;/p&gt;
&lt;h2 id=&#34;kda-a-new-attention-architecture-for-kimi-k3&#34;&gt;KDA: A New Attention Architecture for Kimi K3&lt;/h2&gt;
&lt;p&gt;For inference systems, the changes brought by Kimi K3 go far beyond simply increasing the model’s parameter scale. More importantly, K3 introduces a fundamentally new hybrid attention architecture that &lt;strong&gt;combines KDA (Kimi Delta Attention) with MLA (Multi-head Latent Attention)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In the open-sourced K3 configuration, the model contains a total of 93 decoder layers, among which &lt;strong&gt;69 layers adopt KDA and 24 layers adopt MLA&lt;/strong&gt;. These layers are generally organized in a pattern of three consecutive KDA layers followed by one MLA layer. Therefore, unlike traditional models where all layers rely on a unified attention mechanism, K3 simultaneously employs two fundamentally different approaches for representing and maintaining historical information inside the model.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;kimi-k3-arch.png&#34;
     alt=&#34;Kimi K3 hybrid KDA and MLA architecture&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://www.kimi.com/blog/kimi-k3&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://www.kimi.com/blog/kimi-k3&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;MLA follows the latent attention design: each token produces its own latent KV, so the cache still grows with context length, as in a traditional Transformer KV Cache.&lt;/p&gt;
&lt;p&gt;The fundamental change comes from &lt;strong&gt;KDA&lt;/strong&gt;. Instead of storing every historical Key and Value, it recurrently compresses history into a fixed-size state. Per-channel decay factors and Delta Correction control how new information updates this state, while a fixed-length Convolution Window preserves recent local context.&lt;/p&gt;
&lt;p&gt;Therefore, for each KDA layer, the historical information that needs to be continuously maintained is no longer a long sequence of KV pairs, but two types of states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Recurrent state:&lt;/strong&gt; the recurrently updated historical state;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Convolution window:&lt;/strong&gt; the local window containing the most recent tokens.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As new tokens arrive, both states are updated in place rather than continuously growing like traditional KV Cache. The key advantage of this design is that the amount of cache required during inference no longer scales linearly with the context length. Even with million-token contexts, the recurrent states maintained by KDA layers remain at a fixed size, significantly reducing the memory pressure of long-context inference.&lt;/p&gt;
&lt;h2 id=&#34;what-new-challenges-does-kda-introduce-for-inference-systems&#34;&gt;What New Challenges Does KDA Introduce for Inference Systems?&lt;/h2&gt;
&lt;h3 id=&#34;when-prefix-cache-meets-kda&#34;&gt;When Prefix Cache Meets KDA&lt;/h3&gt;
&lt;p&gt;KDA substantially reduces cache overhead during long-context inference, but it also fundamentally changes the semantics of caching.&lt;/p&gt;
&lt;p&gt;In a traditional Transformer, each token has its own independent Key and Value. An inference framework can use structures such as a Radix Tree to identify the longest common prefix across requests, reuse the corresponding KV Cache, and skip redundant Prefill computation. In this setting, Prefix Cache reuse is almost equivalent to KV Cache reuse: once a token prefix matches, the cache associated with that prefix can be restored directly.&lt;/p&gt;
&lt;p&gt;KDA breaks this equivalence. In Kimi K3, MLA layers still maintain token-level latent KV, while KDA layers maintain a Recurrent State produced by processing the entire prefix sequentially. As a result, two fundamentally different forms of cache coexist within the same model.&lt;/p&gt;
&lt;p&gt;More importantly, a KDA state cannot be truncated arbitrarily in the way a KV Cache can. Suppose a request has processed 10,000 tokens and the system stores a KDA state only at the 10,000-token position. If another request shares only the first 8,000 tokens, it cannot resume from that state at the 8,000-token boundary. The stored state has already incorporated information from the subsequent 2,000 tokens, and there is no way to reverse the recurrence and reconstruct the earlier state.&lt;/p&gt;
&lt;p&gt;Therefore, &lt;strong&gt;a token-level prefix match does not necessarily imply that the corresponding KDA cache can be restored&lt;/strong&gt;. To guarantee that restored execution is equivalent to uninterrupted execution, the MLA KV and the complete KDA state must both be available and aligned to the same prefix boundary. This means that a KDA-aware Prefix Cache must explicitly store checkpoints at selected prefix boundaries. Even when the MLA KV matches a longer prefix, the system must fall back to the nearest valid boundary if the corresponding KDA checkpoint is unavailable, and recompute everything after that point.&lt;/p&gt;
&lt;p&gt;For Kimi K3, Prefix Cache reuse is therefore no longer a matter of storing and restoring a segment of KV Cache. The system must jointly manage MLA KV and KDA Recurrent States, while ensuring that both can be restored consistently at the same prefix boundary.&lt;/p&gt;
&lt;p&gt;DeepSeek V4’s SWA (Sliding Window Attention) presents a similar issue, but its solution is relatively straightforward: the system can store a checkpoint at a fixed interval, such as every 128 tokens. For KDA, however, this strategy is prohibitively expensive because each checkpoint is much larger. According to the &lt;a href=&#34;https://kvcache.ai/tools/kv-cache-calculator/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;KV Cache Size Calculator&lt;/a&gt;, a single KDA checkpoint introduces approximately 0.4 GiB of fixed cache overhead. With a checkpoint interval of 128 tokens, a request with a 1-million-token context would require roughly 3 TB of storage for KDA states alone. Even with a much coarser interval of 10,000 tokens, the same request would still require approximately 40 GB of additional cache.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;kda-checkpoint-size.png&#34;
     alt=&#34;Kimi K3 KV cache and KDA checkpoint size calculation&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p&gt;Increasing the checkpoint interval, however, introduces another problem. Prefix Cache reuse can only extend to the nearest recoverable KDA checkpoint. The sparser the checkpoints are, the shorter the prefix that can actually be reused.&lt;/p&gt;
&lt;p&gt;Assume that checkpoints are stored every 10,000 tokens:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;If two 20,000-token requests share the first 15,000 tokens, the system can only reuse the prefix up to the 10,000-token checkpoint. Instead of computing only the remaining 5,000 tokens, it must recompute 10,000 tokens, effectively doubling the amount of computation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If two 910,000-token requests share the first 905,000 tokens, the cache reuse ratio still appears very high. However, because the nearest checkpoint is located at 900,000 tokens, the system must again recompute 10,000 tokens rather than the original 5,000 tokens, resulting in the same twofold increase in computation.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;These are not rare edge cases. In fact, they closely match the typical characteristics of agentic workloads: many interaction rounds, only a small number of new tokens added in each round, and often more than 95% of the context shared between consecutive turns. In such scenarios, even a decline of only a few percentage points in the effective Prefix Cache hit rate can lead to a substantial increase in the number of tokens that must be recomputed.&lt;/p&gt;
&lt;p&gt;KDA cache management therefore presents a fundamental trade-off. Denser checkpoints provide finer-grained recovery and improve the effective Prefix Cache hit rate, but they also cause cache consumption to grow rapidly. Sparser checkpoints reduce storage overhead, but require the system to recompute a longer suffix after every cache hit, weakening the performance benefits of caching.&lt;/p&gt;
&lt;p&gt;This is the core challenge that must be addressed to support efficient Prefix Cache reuse for Kimi K3.&lt;/p&gt;
&lt;h3 id=&#34;when-disaggregated-inference-meets-kda&#34;&gt;When Disaggregated Inference Meets KDA&lt;/h3&gt;
&lt;p&gt;The changes introduced by KDA affect not only Prefix Cache reuse within a single instance, but also cache management in disaggregated inference architectures. In traditional Transformers, both cross-instance cache reuse and Prefill–Decode disaggregation are built around the unified abstraction of KV Blocks. As long as the token prefixes match, the corresponding KV Cache can be reused or transferred directly. For Kimi K3, however, the cache now consists of two different types of state: MLA KV and KDA State. MLA KV can still be managed at token or block granularity, while a KDA State can only be restored from a checkpoint associated with a specific prefix boundary. As a result, cross-instance reuse is no longer simply a matter of finding the longest matching token prefix. The system must ensure that both MLA KV and KDA State are available and consistent at the same recovery point, rather than freely combining cache data from different sources.&lt;/p&gt;
&lt;p&gt;The same issue also affects Prefill–Decode disaggregation. What must be transferred between the Prefill and Decode stages is no longer just a collection of KV Blocks, but a set of heterogeneous model states, including MLA latent history and KDA Recurrent States. Designing a separate transfer protocol for each state type would not only increase system complexity, but also expose model-specific architectural details to the scheduling and communication layers. Therefore, Prefill–Decode disaggregation must evolve from &lt;strong&gt;KV Cache transfer&lt;/strong&gt; into a more general abstraction of &lt;strong&gt;model state transfer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In multimodal workloads, the disaggregated pipeline expands further into Encoder–Prefill–Decode (EPD). The system must transfer not only the MLA and KDA states produced during Prefill, but also the visual embeddings generated by the Encoder. Building a unified data plane that can efficiently move different types of model state across different execution stages therefore becomes a new challenge for disaggregated Kimi K3 inference.&lt;/p&gt;
&lt;h2 id=&#34;sglang--mooncake-a-kda-aware-radix-tree-and-cross-instance-cache-reuse&#34;&gt;SGLang × Mooncake: A KDA-Aware Radix Tree and Cross-Instance Cache Reuse&lt;/h2&gt;
&lt;p&gt;To accommodate the changes KDA introduces to Prefix Cache semantics, SGLang extends its existing Radix Tree with a KDA-aware checkpointing mechanism. The Radix Tree still matches token prefixes across requests, but a recoverable position is no longer determined solely by the longest matching token prefix. Instead, both MLA KV and KDA State must be available and consistent at the same prefix boundary.&lt;/p&gt;
&lt;p&gt;SGLang therefore maintains sparse KDA checkpoints within the Radix Tree. When a request matches an existing token prefix, the system searches the matched path for the nearest valid checkpoint, restores the corresponding MLA KV and KDA State together, and recomputes the portion not covered by that checkpoint.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;sglang-checkpoints.png&#34;
     alt=&#34;Sparse KDA checkpoints on the SGLang radix tree&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://www.lmsys.org/blog/2026-07-27-kimi-k3-day0-support/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://www.lmsys.org/blog/2026-07-27-kimi-k3-day0-support/&lt;/a&gt;
&lt;/p&gt;

&lt;h3 id=&#34;sparse-checkpoint-management-balancing-cache-cost-and-recomputation&#34;&gt;Sparse Checkpoint Management: Balancing Cache Cost and Recomputation&lt;/h3&gt;
&lt;p&gt;To address the trade-off between checkpoint storage overhead and cache hit rate described above, SGLang adopts a sparse checkpoint management strategy that maximizes the benefits of Prefix Cache reuse under a limited cache budget.&lt;/p&gt;
&lt;p&gt;First, for &lt;strong&gt;checkpoint selection&lt;/strong&gt;, SGLang does not rely on a simple fixed-interval policy. Instead, it selects higher-value checkpoint locations based on the request execution stage:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prefill stage:&lt;/strong&gt; Prefill is typically executed in chunks, so SGLang prioritizes storing checkpoints at chunk boundaries. This aligns checkpoint creation with the existing scheduling flow and avoids introducing additional synchronization overhead solely to preserve intermediate states.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decode stage:&lt;/strong&gt; Because every generated token may become part of a shared prefix for future requests, SGLang creates checkpoints at fixed intervals during Decode, balancing recovery granularity against cache overhead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Radix Tree branch points:&lt;/strong&gt; When multiple requests share a prefix or diverge at a particular position, that position is more likely to become a cache hit point for future requests. SGLang therefore prioritizes retaining checkpoints at these high-reuse-value locations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With this strategy, checkpoints are no longer distributed uniformly across all token positions. Instead, they are concentrated at prefix boundaries that are more likely to be reused.&lt;/p&gt;
&lt;p&gt;Second, for &lt;strong&gt;checkpoint budget management&lt;/strong&gt;, SGLang must limit the amount of GPU memory consumed by KDA States. Storing too many checkpoints along each Radix Tree path would quickly exhaust cache capacity, even if each individual cache hit provides substantial benefit. SGLang therefore limits the number of checkpoints retained on each path and combines this constraint with an LRU (Least Recently Used) policy to evict lower-value states:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Checkpoints that have not been accessed for a long time are reclaimed first.&lt;/li&gt;
&lt;li&gt;Checkpoints on frequently accessed paths are retained.&lt;/li&gt;
&lt;li&gt;Newly generated checkpoints replace existing states only when justified by the current cache pressure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In effect, SGLang turns checkpoint management into an access-pattern-aware cache optimization problem. More state budget is allocated to positions with higher value and a greater probability of reuse, while infrequently used states are released promptly.&lt;/p&gt;
&lt;p&gt;This sparse checkpointing mechanism avoids the excessive GPU memory overhead of fixed-interval checkpointing, while also reducing the amount of replay caused by checkpoints that are too sparse. As a result, KDA-aware Prefix Cache reuse can scale effectively to long-context and agentic workloads.&lt;/p&gt;
&lt;h3 id=&#34;compressed-checkpoint-storage-reducing-the-residency-cost-of-inactive-kda-states&#34;&gt;Compressed Checkpoint Storage: Reducing the Residency Cost of Inactive KDA States&lt;/h3&gt;
&lt;p&gt;Building on sparse checkpoint management, SGLang further reduces the storage overhead of KDA States. Not every cached checkpoint is needed for immediate computation, and retaining all states in a high-precision format for extended periods would consume a large amount of GPU memory. SGLang therefore separates the active states used by currently running requests from the cached states stored in the Radix Tree. Active states remain in a runtime state pool, while inactive checkpoints are moved to a separate cache pool and stored in a compressed format.&lt;/p&gt;
&lt;p&gt;SGLang currently also provides an optional local checkpoint compression path. It compresses inactive Recurrent States to INT8, trading some restoration accuracy for greater local cache capacity. For the KDA temporal state, which accounts for most of the storage footprint, SGLang computes quantization parameters on a per-channel basis and compresses the state to INT8. The much smaller local window state remains in its original precision. Compared with storing the complete KDA State in BF16, this approach substantially reduces the storage cost of each checkpoint, allowing more reusable prefix states to be retained under the same cache budget.&lt;/p&gt;
&lt;p&gt;When a request hits a compressed checkpoint, SGLang does not continue execution directly from the compressed representation. Instead, it first restores the checkpoint into a new active-state slot, reconstructs the corresponding local window state, and then resumes computation at normal precision. Because compression occurs only when a checkpoint is stored, and decompression only when that checkpoint is hit, the per-token KDA state update always runs at the original precision. This avoids the accumulation of errors that could otherwise result from repeated quantization and dequantization.&lt;/p&gt;
&lt;h3 id=&#34;mutable-state-sharing-safely-reusing-mutable-kda-states-in-prefix-cache&#34;&gt;Mutable State Sharing: Safely Reusing Mutable KDA States in Prefix Cache&lt;/h3&gt;
&lt;p&gt;KDA States are continuously updated during Decode, while shared states in the Prefix Cache must remain immutable. Unlike MLA KV Cache, which does not change once written, a KDA State cannot be directly shared across multiple requests, because updates from one request could affect the execution of others. To safely reuse KDA States, SGLang separates per-request execution states from shared checkpoints through three mechanisms: Copy-on-Write, Snapshot, and Donate.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Copy-on-Write: Safely restoring from a shared checkpoint.&lt;/strong&gt; When a request hits a KDA checkpoint in the Radix Tree, SGLang does not continue execution directly on the shared state. Instead, it first copies the KDA State associated with the checkpoint into a private execution slot owned by the request. Subsequent computation updates only this private state, leaving the shared checkpoint attached to the Radix Tree unchanged. This allows multiple requests to safely reuse the same Prefix Cache node while advancing their own states independently.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Snapshot: Converting runtime state into reusable state.&lt;/strong&gt; By default, a KDA State produced during request execution belongs exclusively to the current request. When the request reaches a new cacheable prefix boundary, SGLang saves the current runtime state as a new Snapshot and attaches it to the Radix Tree for future requests to restore. To prevent the Snapshot operation from racing with state updates during Forward, SGLang schedules the state copy on the Forward Stream and relies on CUDA Stream ordering to guarantee safe reads and writes. Snapshots are also written alternately into additional buffers, preventing a new Snapshot from overwriting an older state that is still referenced by the Radix Tree.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Donate: Reducing checkpoint creation overhead.&lt;/strong&gt; Copying the entire KDA State into the cache tree every time a Snapshot is created would introduce substantial data-movement overhead. SGLang therefore introduces a Donate mechanism. Once a Snapshot is complete, the system transfers ownership of the corresponding state slot directly to the Radix Tree and updates only the state index, without copying the underlying data again. With Donate, checkpoint creation becomes a lightweight metadata transfer rather than a large-scale state copy, significantly reducing the management overhead of integrating KDA States into Prefix Cache reuse.&lt;/p&gt;
&lt;h3 id=&#34;unified-memory-sharing-physical-cache-capacity-between-mla-kv-and-kda-state&#34;&gt;Unified Memory: Sharing Physical Cache Capacity Between MLA KV and KDA State&lt;/h3&gt;
&lt;p&gt;Because MLA KV and KDA State differ in allocation granularity and lifecycle, SGLang initially manages them through two separate memory pools. MLA KV Blocks and KDA State Blocks are allocated from independently reserved GPU memory pools. This design keeps the two cache types logically isolated, but requires the system to estimate their capacity ratio in advance based on the expected workload.&lt;/p&gt;
&lt;p&gt;In real-world inference workloads, however, cache demand is often difficult to predict. When short requests dominate, the KDA State Pool may be exhausted first. In long-context workloads, the MLA KV Pool may instead become the bottleneck, even while unused GPU memory remains available in the other pool. This imbalance reduces overall GPU memory utilization.&lt;/p&gt;
&lt;p&gt;To address this issue, SGLang provides an optional &lt;strong&gt;Unified Memory&lt;/strong&gt; mode that manages MLA KV Blocks and KDA State Blocks within a shared physical capacity pool. The two cache types retain their own logical structures and allocation granularities, but draw from the same underlying GPU memory capacity, allowing memory usage to shift dynamically according to the actual workload.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;sglang-unified-memory.png&#34;
     alt=&#34;SGLang unified memory for KDA state and MLA KV&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://www.lmsys.org/blog/2026-07-27-kimi-k3-day0-support/&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://www.lmsys.org/blog/2026-07-27-kimi-k3-day0-support/&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;In the implementation, Unified Memory reserves a contiguous GPU memory region. KDA State Blocks and MLA KV Blocks grow inward from opposite ends, while the space between them serves as a shared pool of free capacity. When an object is released, the system fills the resulting hole with an object from the corresponding end, keeping the available region contiguous and reducing memory fragmentation during long-running workloads.&lt;/p&gt;
&lt;p&gt;It is important to note that “unified” refers to unified management of physical capacity. It does not mean forcing MLA KV and KDA State into pages of the same size. Each cache type is still allocated and managed using the layout best suited to its own characteristics; they simply share unused capacity at the GPU memory level.&lt;/p&gt;
&lt;p&gt;This mode can be enabled explicitly with &lt;code&gt;--enable-unified-memory&lt;/code&gt;, allowing SGLang to adapt more flexibly to the cache demands of Kimi K3’s hybrid attention architecture across different request distributions.&lt;/p&gt;
&lt;h3 id=&#34;mooncake-integration-extending-kda-cache-reuse-across-instances&#34;&gt;Mooncake Integration: Extending KDA Cache Reuse Across Instances&lt;/h3&gt;
&lt;p&gt;The optimizations described above address KDA-aware Prefix Cache management within a single SGLang instance. In large-scale inference deployments, however, the capacity of a single instance’s GPU cache remains limited, and many long-context prefixes with high reuse value cannot be retained indefinitely.&lt;/p&gt;
&lt;p&gt;To further expand the scope of cache reuse, SGLang integrates Mooncake into its KDA-aware caching system. Through HiCache, cached objects can extend beyond the GPU memory of a single machine into a much larger shared cache tier. When a new request arrives, the system can query not only the local Radix Tree Cache, but also retrieve cache states produced by other inference instances from Mooncake, restore them on the current instance, and resume execution.&lt;/p&gt;
&lt;p&gt;Mooncake does not participate in the generation, update, or restoration semantics of KDA States. It therefore does not need to understand the differences between the model’s internal attention mechanisms. Its responsibility is to efficiently manage and transfer cache objects that SGLang has already determined to be valid and reusable. This separation of responsibilities allows SGLang and Mooncake to independently handle correctness and distributed scalability: SGLang determines &lt;strong&gt;which states can be reused&lt;/strong&gt;, while Mooncake determines &lt;strong&gt;how those states move across instances&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;With HiCache and Mooncake’s cross-instance caching capabilities, Kimi K3’s MLA KV and KDA States can move beyond the memory limits of a single GPU instance and be shared across a larger inference cluster. This improves cache hit rates and reduces redundant computation for long-context inference, multi-turn conversations, and agentic workloads.&lt;/p&gt;
&lt;h2 id=&#34;vllm--mooncake-hybrid-cache-management-and-cross-instance-reuse-for-kimi-k3&#34;&gt;vLLM × Mooncake: Hybrid Cache Management and Cross-Instance Reuse for Kimi K3&lt;/h2&gt;
&lt;p&gt;Unlike SGLang’s Radix Tree–based approach to state management, vLLM starts from a unified cache management framework. It incorporates both MLA KV and KDA State into the Hybrid KV Cache Manager, then combines flexible cache retention policies with Mooncake’s distributed caching capabilities to enable cross-instance reuse.&lt;/p&gt;
&lt;h3 id=&#34;hybrid-kv-cache-manager-unified-management-of-mla-kv-and-kda-state&#34;&gt;Hybrid KV Cache Manager: Unified Management of MLA KV and KDA State&lt;/h3&gt;
&lt;p&gt;As discussed earlier, MLA KV Cache and KDA State in Kimi K3 differ significantly in lifecycle, update semantics, and reuse granularity. Traditional KV Cache management mechanisms therefore cannot be applied directly.&lt;/p&gt;
&lt;p&gt;To address this, vLLM extends its existing KV Cache management framework through the Hybrid KV Cache Manager, allowing a single Scheduler to coordinate two types of cache objects with different lifecycles. Full-attention layers continue to use Paged KV Blocks for token-level KV Cache, while KDA layers additionally maintain recurrent states and convolution states. Both types of state share the same request scheduling pipeline, but follow different cache management models: MLA KV is appended at token or block granularity and remains immutable once written, whereas KDA State records recoverable execution points through cacheable recurrent-state checkpoints or state blocks, while each running request maintains its own independent active copy.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;vllm-hybrid-cache.png&#34;
     alt=&#34;vLLM hybrid cache management for MLA KV and KDA state&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://vllm.ai/blog/2026-07-27-k3&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://vllm.ai/blog/2026-07-27-k3&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;To prevent KDA State management from constraining the matching granularity of Prefix Cache reuse, vLLM decouples logical prefix matching from the physical locations where states are stored. Request matching is based on fine-grained, chained prefix hashes, which can identify a match within a physical state block rather than treating the physical KV block as the minimum matching unit. This allows the system to locate shared prefixes at a finer granularity.&lt;/p&gt;
&lt;p&gt;KDA State Blocks, meanwhile, do not need to cover every token position. They are stored only at selected prefix boundaries. When a request resumes execution from a shared prefix, vLLM first copies the corresponding KDA State into request-private storage before continuing computation. This prevents in-place updates from corrupting cached states that are shared by other requests.&lt;/p&gt;
&lt;h3 id=&#34;fine-grained-partial-hits-decoupling-prefix-cache-reuse-from-kda-block-boundaries&#34;&gt;Fine-Grained Partial Hits: Decoupling Prefix Cache Reuse from KDA Block Boundaries&lt;/h3&gt;
&lt;p&gt;In vLLM, KDA State does not allocate an independent cache entry for every token as MLA KV does. Instead, it uses larger State Blocks as the basic unit of management. Each State Block stores the recurrent state and convolution state produced after processing a contiguous range of tokens. This design reduces state allocation and management overhead, but introduces a new problem: the actual shared-prefix length between requests rarely aligns exactly with State Block boundaries.&lt;/p&gt;
&lt;p&gt;If Prefix Cache matching were restricted to KDA State Block boundaries, a valid KDA state checkpoint at a finer-grained prefix position could not be reused directly. For example, suppose a KDA State Block covers 4,096 tokens, while two requests share a prefix of 4,480 tokens. A conventional block-aligned cache could recognize only the first 4,096 tokens, forcing the subsequent request to reuse a shorter prefix than is actually available.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;vllm-fine-grained-prefix-hit.png&#34;
     alt=&#34;Fine-grained prefix matching inside a physical vLLM state block&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://vllm.ai/blog/2026-07-22-kimi-k3-preview&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://vllm.ai/blog/2026-07-22-kimi-k3-preview&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;To address this issue, vLLM introduces &lt;strong&gt;Fine-Grained Partial Hits&lt;/strong&gt;, decoupling the granularity of Prefix Matching from the physical storage granularity of KDA State. The system continues to use large KDA State Blocks for managing the underlying state, while allowing finer-grained Prefix Entries to be recorded within each State Block.&lt;/p&gt;
&lt;p&gt;Once a valid KDA State Block has been generated for a particular token boundary, that position can serve as a legal recovery point even if it falls inside a State Block that has not yet been fully populated. In the example above, vLLM can directly record a Prefix Entry at the 4,480-token position, allowing subsequent requests to recover from the longer shared prefix without creating an additional full copy of the KDA State.&lt;/p&gt;
&lt;h3 id=&#34;adaptive-checkpoint-retention-preserving-kda-states-based-on-reuse-value&#34;&gt;Adaptive Checkpoint Retention: Preserving KDA States Based on Reuse Value&lt;/h3&gt;
&lt;p&gt;The introduction of KDA State makes checkpoints a critical resource for Prefix Cache reuse. However, because each KDA State has a substantial memory footprint, storing one at every prefix position is impractical. To determine how a limited cache budget should be allocated to the positions most likely to be reused, vLLM provides two complementary KDA State retention policies: &lt;strong&gt;Interval-Based Retention&lt;/strong&gt; and &lt;strong&gt;Marconi-Style Selective Retention&lt;/strong&gt;. The former uses known structural boundaries to provide stable recovery points, while the latter dynamically identifies prefixes with genuine reuse value based on runtime access patterns.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 1: Interval-Based Retention — Storing Checkpoints at Structured Boundaries.&lt;/strong&gt;&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;vllm-interval-retention.png&#34;
     alt=&#34;vLLM interval-based KDA checkpoint retention&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://vllm.ai/blog/2026-07-27-k3&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://vllm.ai/blog/2026-07-27-k3&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;In workloads with clear contextual structure, such as multi-turn conversations and agentic tasks, certain prefix boundaries naturally have a higher probability of reuse. vLLM therefore supports storing KDA checkpoints at fixed intervals, while also retaining the state at the end of each Prompt.&lt;/p&gt;
&lt;p&gt;For example, the system can create a checkpoint every fixed number of tokens and automatically preserve the KDA State at each Prompt boundary. Compared with mechanically distributing checkpoints at uniform intervals, Prompt-end States are often more valuable for real-world workloads. In multi-turn conversations, the next request typically reuses the entire Prompt from the previous turn, so restoring from the end of that Prompt can eliminate a large amount of redundant computation.&lt;/p&gt;
&lt;p&gt;Users can configure the interval through &lt;code&gt;VLLM_PREFIX_CACHE_RETENTION_INTERVAL&lt;/code&gt;. When this value is set to &lt;code&gt;0&lt;/code&gt;, vLLM disables periodic checkpointing and retains only Prompt-end States, reducing cache overhead for workloads dominated by multi-turn conversations.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Strategy 2: Marconi-Style Selective Retention — Caching Only Truly Hot Prefixes.&lt;/strong&gt;&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;vllm-selective-retention.gif&#34;
     alt=&#34;vLLM Marconi-style selective checkpoint retention&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://vllm.ai/blog/2026-07-27-k3&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://vllm.ai/blog/2026-07-27-k3&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;A fixed-interval policy can capture predictable reuse patterns, but it cannot determine in advance whether dynamically occurring shared prefixes—such as system prompts, code repository snapshots, or tool definitions—will be reused. Saving a KDA State immediately when such a prefix first appears may allow a one-off prefix to consume a large amount of cache capacity.&lt;/p&gt;
&lt;p&gt;vLLM therefore introduces &lt;strong&gt;Marconi-Style Selective Retention&lt;/strong&gt;, built around a simple principle: &lt;strong&gt;cache on the second hit&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;When a prefix appears for the first time, the system records its access metadata but does not immediately store the corresponding KDA State. Only when a later request hits the same prefix again—demonstrating that it has actual reuse value—does vLLM create a KDA checkpoint at that position. This prevents one-off long Prompts from wasting cache budget, while automatically promoting frequently accessed hot prefixes into reusable states.&lt;/p&gt;
&lt;p&gt;Together, these two policies cover both &lt;strong&gt;predictable reuse boundaries&lt;/strong&gt; and &lt;strong&gt;hot-prefix patterns discovered at runtime&lt;/strong&gt;.&lt;/p&gt;
&lt;h3 id=&#34;mooncake-integration-extending-hybrid-cache-reuse-across-instances&#34;&gt;Mooncake Integration: Extending Hybrid Cache Reuse Across Instances&lt;/h3&gt;
&lt;p&gt;The optimizations described above address unified MLA KV and KDA State management, fine-grained prefix matching, and state restoration within a single vLLM instance. For large-scale distributed inference, vLLM further integrates Mooncake through the KV Connector, extending the Hybrid Cache from per-instance storage to cross-instance sharing.&lt;/p&gt;
&lt;p&gt;For hybrid-attention models such as Kimi K3, Mooncake no longer stores a single KV Block. Instead, it stores a collection of Hybrid Cache objects associated with the same prefix. MLA KV continues to be represented as Paged KV Blocks, while KDA State is stored as a Snapshot at the corresponding prefix position. To prevent collisions across different cache types, vLLM distinguishes objects written to Mooncake using information such as the Cache Group, Prefix Hash, and parallelism configuration. This ensures that MLA KV, KDA State, and data from different ranks remain correctly aligned.&lt;/p&gt;
&lt;p&gt;To extend the Fine-Grained Partial Hit mechanism to remote caching, vLLM stores the KDA State associated with each Fine-Grained Prefix Entry in Mooncake as well. During writes, the system preserves not only complete blocks, but also Partial States that have been validated through Scheduler Alignment, allowing remote instances to hit the same fine-grained prefix boundaries. MLA KV and KDA State are managed using consistent prefix identifiers, ensuring that both cache types always correspond to the same logical prefix during remote restoration.&lt;/p&gt;
&lt;p&gt;When a request arrives at a new inference instance, vLLM queries both the local cache and Mooncake’s remote cache. It determines the available ranges of MLA KV and KDA State from each source, then coordinates the local and remote results to select the final Hybrid Cache Boundary. If Mooncake provides a longer and complete pair of MLA and KDA states, the system loads the remote cache and supersedes the shorter local hit. If the remote cache cannot provide a longer consistent state, vLLM continues using the local cache and avoids unnecessary data transfer.&lt;/p&gt;
&lt;p&gt;By integrating Mooncake through the KV Connector, vLLM extends the lifecycle of the Hybrid Cache beyond the GPU memory of a single instance and into a distributed cache tier. vLLM is responsible for maintaining semantic consistency between MLA KV and KDA State, while Mooncake provides efficient cross-instance storage and data movement. Together, they allow Kimi K3’s long-context state to be reused not only within a single machine, but also across large-scale inference clusters, significantly reducing redundant computation in multi-turn conversations, coding agents, and other high-reuse workloads.&lt;/p&gt;
&lt;h2 id=&#34;tokenspeed--mooncake-a-unified-data-plane-from-flat-kv-to-multimodal-epd&#34;&gt;TokenSpeed × Mooncake: A Unified Data Plane from Flat KV to Multimodal EPD&lt;/h2&gt;
&lt;p&gt;Traditional Prefill–Decode (PD) disaggregation primarily addresses the transfer of KV Cache between inference nodes. After a Prefill node finishes processing the input context, it sends the resulting KV Blocks to a Decode node, which then continues generation. For next-generation models such as Kimi K3, however, the data being transferred is no longer a homogeneous collection of KV Cache blocks.&lt;/p&gt;
&lt;p&gt;Kimi K3 adopts a hybrid attention architecture that combines MLA and KDA, whose state lifecycles, update granularities, and physical layouts all differ from those of conventional KV Cache. Continuing to manage and transfer each state type using traditional KV Cache abstractions would not only increase system complexity, but also allow model-specific architectural details to leak into the scheduling, caching, and network transport layers.&lt;/p&gt;
&lt;p&gt;The challenge for next-generation disaggregated inference systems is therefore no longer simply &lt;strong&gt;how to transfer KV Cache&lt;/strong&gt;, but &lt;strong&gt;how to efficiently transfer heterogeneous model intermediate states&lt;/strong&gt;. TokenSpeed addresses this through Flat KV, which represents MLA KV and KDA State as unified, transferable data units. Combined with Mooncake’s high-performance transport capabilities, this data plane extends beyond traditional PD disaggregation to support multimodal Encoder–Prefill–Decode (EPD) disaggregation.&lt;/p&gt;
&lt;p&gt;As a result, Mooncake is no longer merely a KV transport channel between Prefill and Decode. It becomes a unified state-transfer infrastructure spanning the model’s different execution stages.&lt;/p&gt;
&lt;h3 id=&#34;flat-kv-a-unified-page-level-state-representation&#34;&gt;Flat KV: A Unified Page-Level State Representation&lt;/h3&gt;
&lt;p&gt;To address the heterogeneous physical management requirements of MLA KV and KDA State, TokenSpeed introduces &lt;strong&gt;Flat KV&lt;/strong&gt;, which brings both state types under a unified page-granularity management model. The core idea is that different model states do not need to share the same internal data layout, but they should be mappable to a common cache management unit.&lt;/p&gt;
&lt;p&gt;In Flat KV, a single page can store either the MLA latent history for 1,536 tokens or one complete KDA recurrent snapshot. In other words, both the token-growing MLA KV and the fixed-size KDA State are abstracted as page objects of the same size and managed through a unified page allocator.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;tokenspeed-flat-kv.png&#34;
     alt=&#34;TokenSpeed Flat KV page and slab layout&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p class=&#34;image-source&#34;&gt;
  Image source: &lt;a href=&#34;https://lightseek.org/blog/tokenspeed-kimi-k3.html&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;https://lightseek.org/blog/tokenspeed-kimi-k3.html&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;TokenSpeed divides Kimi K3’s 69 KDA layers into three groups of 23 layers each. These groups, together with the full-attention group, are mapped onto 24 physical slabs. Different state types share the same page address space: a given global page ID always maps to a fixed physical location, allowing MLA KV and KDA snapshots to use the same allocation, reclamation, and ownership management mechanisms.&lt;/p&gt;
&lt;p&gt;The key value of this design is that it transforms KDA State from a special-purpose model state into a page object that can be managed by existing KV Cache infrastructure:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefix Cache can manage MLA KV pages and KDA State pages through a unified interface.&lt;/li&gt;
&lt;li&gt;State operations such as Copy-on-Write can reuse the same page lifecycle management.&lt;/li&gt;
&lt;li&gt;In PD disaggregation, the system only needs to transfer pages, without designing separate transport protocols for different state types.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Flat KV therefore does more than place two data types in the same memory pool. It redefines the cache abstraction for disaggregated inference: KV Cache is no longer limited to token-level Key and Value tensors, but becomes a unified page-based representation capable of carrying heterogeneous model intermediate states.&lt;/p&gt;
&lt;h3 id=&#34;mooncake-pd-integration-efficiently-transferring-flat-kv-pages&#34;&gt;Mooncake PD Integration: Efficiently Transferring Flat KV Pages&lt;/h3&gt;
&lt;p&gt;Building on Flat KV’s page-based representation, TokenSpeed extends the transfer unit in PD disaggregation from conventional KV Blocks to unified pages. Both MLA KV and KDA State can be represented as the same data-movement unit and managed through a shared page ID space and metadata format.&lt;/p&gt;
&lt;p&gt;Mooncake then handles cross-node data transfer at the page level. The Prefill node only needs to provide the page IDs to be transferred, together with their associated metadata. The Mooncake Transfer Engine can directly locate and transfer the corresponding physical regions in GPU buffers, without needing to understand whether a page contains MLA KV or KDA State.&lt;/p&gt;
&lt;p&gt;In the implementation, the Prefill node first determines which pages must be transferred from the Flat KV page table, then generates the corresponding page metadata, including the global page ID and physical address mapping. Based on this metadata, the Mooncake Transfer Engine directly transfers the physical pages between registered GPU buffers, without CPU staging or additional data-format conversion.&lt;/p&gt;
&lt;p&gt;After receiving the pages, the Decode node reconstructs the corresponding cache view using the same global page ID space. Because MLA KV pages and KDA State pages share a unified page management model, the Decode side does not need separate receiving and restoration paths for different state types. The Flat KV mapping layer interprets each physical page as the appropriate logical cache object.&lt;/p&gt;
&lt;p&gt;Flat KV and Mooncake therefore establish a clear separation of responsibilities: TokenSpeed converts heterogeneous model states into a unified page representation, while Mooncake efficiently transfers those pages between Prefill and Decode nodes. Changes to the model architecture affect only the Flat KV mapping logic, leaving the underlying transport path unchanged.&lt;/p&gt;
&lt;h3 id=&#34;epd-disaggregation-a-unified-data-plane-from-prefilldecode-to-encoderprefilldecode&#34;&gt;EPD Disaggregation: A Unified Data Plane from Prefill–Decode to Encoder–Prefill–Decode&lt;/h3&gt;
&lt;p&gt;Because Kimi K3 natively supports visual inputs, its inference pipeline is no longer limited to the Prefill and Decode stages. Instead, it must be extended into a three-stage Encoder–Prefill–Decode (EPD) architecture. To support this design, TokenSpeed separates the Encoder from the computations previously embedded within Prefill, turns it into an independent serving stage, and uses Mooncake to build a data-transfer path spanning all three stages.&lt;/p&gt;
&lt;center&gt;
&lt;img src=&#34;tokenspeed-epd.png&#34;
     alt=&#34;TokenSpeed encoder-prefill-decode disaggregation&#34;
     style=&#34;width:85%; max-width:1100px&#34;/&gt;
&lt;/center&gt;
&lt;p&gt;In TokenSpeed’s EPD architecture, Encoder, Prefill, and Decode each have their own worker pool, scheduling policy, and scaling capabilities. The SMG (Serving Management Gateway) is responsible for request orchestration, inter-stage routing, and request-state association, allowing all three stages to be deployed and scaled independently according to their workload characteristics.&lt;/p&gt;
&lt;p&gt;The Encoder focuses on visual input processing and can scale independently based on factors such as image count and resolution. Prefill combines visual embeddings with the textual context and performs context computation, while Decode handles subsequent token generation. By decoupling these stages, vision-intensive requests involving multiple images or high-resolution inputs no longer directly compete with the language model’s Prefill and Decode stages for compute resources.&lt;/p&gt;
&lt;p&gt;At the data-transfer layer, Mooncake evolves from a KV Cache channel for traditional PD disaggregation into a unified data plane spanning the entire EPD pipeline. The end-to-end path includes two types of large-scale data transfer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Encoder → Prefill: Visual embedding transfer.&lt;/strong&gt; After completing visual encoding, the Encoder uses Mooncake to transfer the resulting visual embeddings directly from the Encoder node’s GPU to the Prefill node’s GPU. This process requires neither CPU-side serialization nor an intermediate shared file system, substantially reducing data-movement overhead for large-scale visual inputs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Prefill → Decode: Flat KV page transfer.&lt;/strong&gt; After completing language-context computation, the Prefill stage sends the MLA latent history and KDA recurrent state represented in Flat KV to the Decode node through Mooncake. Because Flat KV has already abstracted different model states into unified pages, Mooncake can reuse the same page-based transport mechanism used in PD disaggregation.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;TokenSpeed reuses the same memory registration, endpoint discovery, and transfer-completion tracking mechanisms across both the E→P and P→D paths, rather than maintaining separate data channels for visual embeddings and KV states. Mooncake therefore does not need to understand the specific semantics of the objects transferred between stages; it only needs to move data objects in GPU memory efficiently.&lt;/p&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;As next-generation model architectures such as KDA, Mamba, GDN, and SWA continue to emerge, the scope of what inference systems need to manage is expanding beyond traditional KV Cache. It is gradually evolving into the management of a combination of multiple model intermediate states, including KV states, recurrent states, convolution states, and more.&lt;/p&gt;
&lt;p&gt;Mooncake is evolving from a cache backend designed primarily for Transformer KV Cache into a distributed storage and data transfer infrastructure built to support diverse model architectures. Meanwhile, the integration of SGLang, vLLM, TokenSpeed, and Mooncake enables Kimi K3 to gain comprehensive and efficient long-context caching capabilities from day-0, delivering lower-latency and higher-throughput inference experiences for key scenarios such as code assistants, agents, and RAG applications.&lt;/p&gt;
&lt;p&gt;This series of efforts would not have been possible without the collective contributions of the open-source community. We would like to thank the teams behind SGLang, vLLM, TokenSpeed, and Mooncake for their continued effort in adapting to emerging model architectures and optimizing inference performance. We also appreciate everyone who shared valuable feedback and hands-on experience throughout testing and deployment.&lt;/p&gt;
&lt;p&gt;Together, we will continue exploring the next generation of caching and data transfer systems designed for a broader range of model architectures and increasingly large-scale inference systems.&lt;/p&gt;
&lt;h2 id=&#34;related-links&#34;&gt;Related Links&lt;/h2&gt;
&lt;p&gt;Kimi K3 blog: &lt;a href=&#34;https://www.kimi.com/blog/kimi-k3&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.kimi.com/blog/kimi-k3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;SGLang blog: &lt;a href=&#34;https://www.lmsys.org/blog/2026-07-27-kimi-k3-day0-support&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://www.lmsys.org/blog/2026-07-27-kimi-k3-day0-support&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;vLLM blog: &lt;a href=&#34;https://vllm.ai/blog/2026-07-27-k3&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://vllm.ai/blog/2026-07-27-k3&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;TokenSpeed blog: &lt;a href=&#34;https://lightseek.org/blog/tokenspeed-kimi-k3.html&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://lightseek.org/blog/tokenspeed-kimi-k3.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mooncake: &lt;a href=&#34;https://github.com/kvcache-ai/Mooncake&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;https://github.com/kvcache-ai/Mooncake&lt;/a&gt;&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>
