All essays
RSS
Inference Hardware · Field Notes

Could Kimi Linear
Run on a CPU Alone?

Technically, yes — and its architecture is unusually well-suited to it. But the honest answer has a catch: RAM capacity was never the hard part. The hard part is that nobody has written the CPU kernels yet.

Reading time · 9 min Filed under · CPU inference, MoE, linear attention, quantization Difficulty · Technical

Yes — technically, Kimi Linear could become a CPU-only model. In some respects its architecture is genuinely attractive for CPU long-context inference. But open weights alone aren't enough. What's missing isn't theory or memory — it's optimized CPU implementations of KDA, MLA, and its MoE layers.


01 Why It Could Work

the parameter count is misleading in a good way

Kimi Linear's headline numbers look intimidating until you notice how the model actually uses them:

48B
total parameters
3B
activated per token

Because it's an MoE model, every token only executes a subset of the 48B weights — see the Kimi Linear model card.

Its arithmetic cost per token is therefore much closer to a small dense model — although every expert's weights still have to stay accessible somewhere, even the ones that aren't firing this step. That distinction — light compute, heavy storage — is the whole tension of running MoE models on CPU.

The weight-size math actually works out

Weight formatApprox. raw size
BF1696 GB
INT848 GB
INT424 GB
3-bit18 GB

Add metadata, embeddings, alignment, and runtime buffers, and a practical INT4 deployment lands around 28–35 GB — comfortably inside a workstation with 64–128 GB of RAM. Capacity, in other words, was never going to be the blocker.


02 Linear Attention Helps CPUs With Long Context

a fixed-size state beats a growing KV cache

For 75% of its attention layers, Kimi doesn't scan an ever-growing KV cache at all. It processes fixed-sized recurrent states instead:

Normal attention CPU work:
scan historical KV for every generated token

KDA CPU work:
read/update fixed state matrices

At extremely long contexts this stops being a minor optimization and becomes the whole ballgame. A conventional CPU deployment gets progressively slower as context grows, because attention has to read more and more KV history for every new token. KDA's token-generation cost for those layers stays approximately constant regardless of how long the context gets.

The caveat: the remaining MLA layers still carry a context-growing KV cache, so total decoding cost isn't fully constant — just far flatter than a conventional architecture's.


03 The Real Obstacle: CPU Kernels

theoretical feasibility isn't a runtime

Here's where the optimism has to meet reality. The released fast KDA implementation is built entirely around GPU-oriented tooling:

Official usage and deployment paths emphasize Flash Linear Attention and vLLM acceleration. Kimi Linear does not currently appear among llama.cpp's supported model architectures.

A serious CPU runtime would need native implementations covering all of the following, not just one:

A slow PyTorch reference implementation would technically run on a CPU. That is a categorically different claim from "usable" — the difference between a proof of concept and a deployable model.


04 MoE: Both the Advantage and the Difficulty

sparse compute, scattered memory

step 1Router selects experts for this token
step 2Execute only the selected expert matrices

That routing is what lowers total computation — but the selected experts can change on every single token, which scatters memory access across a weight set that may span 24–100 GB depending on quantization. On a GPU, HBM's raw bandwidth absorbs that chaos. On a CPU, performance instead hinges on a long list of hardware specifics:

The model may fit comfortably in RAM and still run slowly — inference at this scale is mostly about moving weights, not merely storing them.

05 KDA Is Genuinely Implementable on CPU

a regular access pattern, not a sparse lookup

Unlike the scattered MoE access pattern, KDA's core recurrent-state operation is dense and regular — it works with 128×128 matrices, which CPUs are well equipped to handle:

A well-built implementation would process state tiles entirely in cache rather than round-tripping to DRAM repeatedly:

01Load state tile from RAM / L3
02Compute key read
03Apply decay and correction
04Compute query output
05Write updated tile once

That avoids physically reading the state from DRAM three separate times — and this regular, predictable access pattern is far friendlier to a CPU than sparse, random KV retrieval ever is.


Where CPU-Only Would Actually Be Compelling

Makes sense for

  • Private local deployment
  • Offline batch processing
  • Long-running agents
  • High-throughput servers with large batches
  • Machines with abundant, inexpensive RAM
  • Latency-tolerant environments (a few tokens/sec is fine)
  • Hybrid CPU/NPU systems

A Particularly Interesting Implementation

tiering memory the way GPUs tier bandwidth

The most promising CPU-only architecture would likely tier data across memory the way a well-designed GPU pipeline tiers across bandwidth levels:

Quantized model weights
CPU DRAM
Hot KDA state
CPU cache / DRAM
Remaining MLA KV
DRAM
Cold residual KV
SSD
Compute
AVX-512 / AMX

Notice that SSD offload for KV only makes sense for the remaining MLA layers and for persistent cold contexts — KDA's fixed-size state has no need for it.

So, yes: open weights could enable a practical CPU-only version of Kimi Linear, especially after INT4 quantization. The missing ingredient was never theoretical feasibility or RAM capacity — it's a llama.cpp- or oneDNN-class CPU runtime with native quantized MoE, MLA, and fused KDA kernels. Until that runtime exists, "runs on CPU" and "usefully runs on CPU" remain two very different claims.