Today DeepSeek shipped DeepSeek-V4.1-Flash, and for once the interesting part is not the benchmark table.
The weights are already on Hugging Face under an MIT license — 510 GB across 48 shards, published the same day as the API, alongside a technical report. The report's title is the whole story: "Pushing the Limits of KV Cache Compression."
Three days ago I moved my daily driver from DeepSeek Flash to GLM-5.3-Flash at low effort. Today I moved it back — and the reason has almost nothing to do with how clever the new model is.
The real headline: 890 bytes per token
Everyone measures models by benchmark scores. The number that actually changed today is this one:
DeepSeek-V4.1-Flash keeps 890 bytes of KV cache per token in HBM — roughly a quarter of what V4-Flash needed, with a persistent footprint (SSD or host memory) at about one eighth. It gets there with FP4 KV caching and cross-layer KV reuse in a redesigned attention scheme (CSA2).
Stated that way it sounds like plumbing. Here is what it means concretely: a one-million-token context costs about 0.93 GB of KV cache. A naive layout — single KV head, 512-dim, FP16 — would need roughly 2.15 GB for the same sequence.
Why that matters: long agent sessions are input-heavy, not output-heavy. Every turn re-sends a huge prefix. The bottleneck for agent workloads isn't how fast a model writes, it's how much compute and memory it costs to re-read everything it has already seen. This model is an attack on that specific problem.
What changed under the hood
The architecture is a bigger departure than the name suggests:
- 552B backbone parameters plus 196B Engram parameters — around 748B total, but only 8B active during prefill and 16B during decode
- 40 layers split as a 20-layer causal encoder followed by a 20-layer decoder (their new CED design), mixing sliding-window and global attention
- An Engram component: a 16-million-entry n-gram lookup table acting as parameterised memory
- Multimodal from the start: a DeepSeek-ViT vision encoder and projector, trained jointly on a 45T-token corpus
For comparison, GLM-5.3-Flash is 320B total with 18B active. V4.1-Flash activates a smaller slice of a much larger model — which is exactly what I see in practice: ~154 tokens/second on DeepSeek versus roughly 50 on GLM. That difference is not a rounding error when an agent is making dozens of calls to finish one task.
Where it wins, and where it doesn't
The benchmark table compares V4.1-Flash against Opus-5 Max, GPT-5.6 Sol Max, Kimi K3, the full GLM-5.3 flagship, and DeepSeek's own V4-Pro. It leads the entire table on:
- Terminal-Bench 2.1 — 90.6 (Opus-5: 89.1, GPT-5.6 Sol: 88.8, GLM-5.3: 88.2)
- DeepSWE v1.1 — 74.2 (Opus-5: 74.0, GLM-5.3: 66.9)
- CyberGym — 88.1 · AutomationBench — 54.8 · HLE with tools — 63.9 · Agents' Last Exam — 31.8
That is a cheap model beating a flagship on most agentic tests. But be honest about the other column, because it's the one that will bite eventually:
- Terminal-Bench 3.0 — 30.0 against Opus-5's 43.3
- Terminal-Bench 4.0 — 31.2 against 51.8
- ProgramBench — 20.3 against 37.0
Long-horizon work is where the gap lives. If you run agents in unattended chains for hours, "a few points behind" is not a rounding error either — it's the difference between a task finishing and a task quietly failing. Most of what I do is short-horizon and tool-heavy, which is exactly where this model leads. Your mileage will depend on where your workload sits on that axis.
The cost math, and why the stickers mislead
Off-peak, DeepSeek charges $0.003 per million cached input tokens, $0.15 per million fresh input, and $0.60 per million output. Peak hours double that. Z.AI charges $0.03 / $0.15 / $0.50 for GLM-5.3-Flash on list price.
Look at the sticker prices and GLM looks competitive: identical fresh-input rate, and cheaper output. My actual traffic says otherwise. Over the last 30 days my agent moved 26.7M fresh input tokens, 5.0M output tokens — and 1.92 billion cached input tokens. That is not a typo: 98.6% of everything I send is a cache read.
Run that same traffic through both price sheets:
- DeepSeek off-peak: $12.78
- GLM-5.3-Flash at list price: $64.00
Five times cheaper, entirely because of one line in the table. The cached-input rate is ten times lower, and cached input is virtually the whole bill.
One footnote to my last post: the number I quoted for GLM Flash was its launch promotion, which expired on September 9. At list price GLM costs double what I wrote — which makes today's move less of a coin flip than it looked.
The part nobody warns you about
Here is where this release cost me an afternoon, and it is the most useful thing in this post if you run an agent framework.
DeepSeek retired the old model IDs. deepseek-v4-flash and deepseek-v4-flash-vision-exp still work, but they now route to V4.1-Flash — and deepseek-v4-pro follows them into retirement on September 14. The new name to use is simply deepseek-flash.
My agent's context-length tables, though, had been written for the old names. Ask them about deepseek-flash and they miss, then fall back to a generic provider default of 128,000 tokens. My model actually has a 1,000,000-token window — I confirmed it in the release's own config.json, which sets max_position_embeddings to 1048576.
The effect: Hermes' session-hygiene compression fired at 85% of 128,000, i.e. at 108,800 tokens. My sessions sit above that almost permanently. Compression ran twice in ninety seconds, and every compaction invalidates the prompt cache — so instead of a cheap cached prefix, each turn re-billed the entire context at cache-miss price. The bug didn't cost me quality first. It cost me money first.
The fix is one line, and there is a second line almost nobody would guess:
model:
context_length: 1000000
auxiliary:
compression:
context_length: 1000000
The first line tells the agent how big the window really is. The second one matters because the compression summariser is a separate model call with its own window — and if that window looks smaller than the compression threshold, the framework silently lowers the main threshold to match it. Without that pin, moving compression onto the same model would have dragged the threshold back down to 128,000 and undone the fix. Two pins, one cause: the tables didn't know the new name.
If you wire up a freshly renamed model this week, check both.
One myth to close
"Multimodal" does not mean it draws. The technical report says it plainly — it "takes images and text as input and generates text autoregressively." There is no image-generation path anywhere in the release: no diffusion decoder, no image tokeniser output. It reads screenshots, charts and photos extremely well. It cannot create a picture.
For that, I still reach for an image model. Different tool, different job.
Where this leaves my setup
I'm back on DeepSeek Flash — not because it topped a leaderboard, but because it is measurably cheaper for the shape of traffic I actually generate, faster by roughly three times, and stronger than GLM's own flagship on the agentic tests I care about. GLM stays wired in as the fallback, which is about surviving an outage, not about parity.
And the honest caveat: this model was released this morning. The benchmarks are the vendor's own, run on their own harnesses, against competitors they chose. My cost numbers are real because they come from my own meter — but my quality verdict after one day is a first impression, not a review. I'll know more in a month.
For now, the cheapest thing I did today was read the price table correctly.