As an individual researcher, you do not have 22M$ to run a massive brute-force search for your problem. You are constrained to your little subscription and you will barely dip your toe in the sea of possible solutions to a problem. So letting Claude run an autoresearch loop on your problem and then having it summarize it for you brings 0 value because you dont know what the downsides and trade-offs of LRU caches were, and how you would possible solve it.
What I've noticed with Claude is that regardless of how I prompt, it will find a few metrics to optimize. Often the metrics it chooses to optimize have zero relation to the actual metrics I want to optimize, which are ones that cannot be measured without more work than Claude can do in a single 1M token context window. It's really hard to stop Claude from optimizing whatever metrics it can find when the actual metrics I want to optimize are not computable.
At least the former is easy: Claude is very happy to do a prior art search and pretty good at it, too.
Spoken like a true Claude.
Snarking aside, I am glad that our AI agents make it cheap enough to do these experiments and publish these write-ups that people finally bother to publish null findings. Very useful!
[1] https://gist.github.com/ossa-ma/f3baa9d25154c33095e22272c631...
Of course, idioms are preserved, and not everything is rewritten.
I quite ok with this style, it isn't grating. I expect this will be a style we'll see more of in science.
When I give an agent a piece of corrected information regarding a long running task, the last thing I want it to do is try and statistically compensate for the fact that it is new information. I want this new information to dominate the old information.
The economics and thus tools you can throw at inference change at various scales . As a “blunt” contrived example , on a gb300 the GPUs communicate super fast over nvlink, and the cards can offload kv cache to dram and then disk, “fast enough “ for these tool heavy agentic workloads.
Which come together to mean that at high enough scale and in the right scenario, we can work with wild ttls on the kv cache and still comfortably hit SLAs and tokenomics.
A toy/simplified version lives here: https://github.com/chaboud/goulash
Consideration of mutation rate (a sort of temporal Shannon-ish coding/ordering) lives in there (with some RoPE-friendly structuring). Note: That was a vacation project, not the day job, but similar principles apply even with larger models.
And while the range of cache sizes chosen is reasonable based on the table about Moonshot's number at the start, the finding that all tested KV-cache sizes are so small that the 5-minute eviction never triggers should have been reason enough to reevaluate that choice
This is incorrect. If you are generating the 51th turn, then prefix caching makes the turns 1 to 50 cost a fraction of what they normally cost, to generate the 51th turn. Generating the 51th turn is more costly because it is not in the cache yet.
Unfortunately there is no way to steelman the statement, since quadratic scaling of attention means that the cost goes up even if you assume perfect caching of past inputs.
What the author actually means is something more mundane. The initial prompt is massive in a standard coding harness and this means prompt processing takes much longer than expected, creating the misleading impression that costs go down.
Edit: I noticed the word cross request too late. In that case the harness prompt is expected to be cached from other users, in which case the first message actually has a massive unfair advantage.
There's a growing literature arguing LRU is the wrong eviction policy for agentic LLM serving, because agent sessions idle and LRU can't distinguish a paused session from a dead one. I found the argument convincing and built a simulator to exploit it. Three separate mechanisms, all lost to plain radix-leaf LRU.
The reason turned out to be more useful than the policy. When I measured — policy-independently — where recompute actually comes from on 393 real Claude Code sessions, requests arriving after a gap longer than the 5-minute provider TTL account for 17.5% of it. Requests arriving within 10 seconds account for 33.1%. The dominant waste is tight tool loops whose 88k-token working sets exceed cache capacity, not sessions idling past a TTL. That's a capacity problem, and liveness prediction can't touch it.
it's just a bit disheartening to read Claude output for such a small comment like this.. it'd be great to read your own writings even if it's not as "perfect"
Just FYI.
This will be especially true from non-English cultures where "avoiding shame" is high on the list of motivations.
Consider the upside, though: A much broader range of written perspectives written in high-quality, if slightly annoying, English.
I'm already seeing the benefit of this on X thanks to its autotranslation btw: I follow a few Chinese-language accounts now that I would have never been able to digest otherwise.
The best kind of correct.
I'd have thought they'd be busy (using cached prompt-prefixes) until they were finished.
Fun:
> In my first run, Belady — an offline oracle — lost to LRU. That's not a result, that's a broken harness, and it's worth publishing because I expect it to be common.
> The cause: inserting a long chain into a near-full cache lets a policy evict the very prefix it is currently building. LRU is accidentally immune because just-inserted blocks have the newest timestamp.
That's Claude. But I agree and am also glad the author, uh, clauded this up. :)
"A block with resident children isn't evictable. So the baseline is LRU over radix leaves, which is what SGLang and vLLM actually implement. Beating naive flat LRU would be a strawman."
"The two numbers measure different things in different regimes, and I initially framed this as a contradiction. It isn't."
"That's not a result, that's a broken harness, and it's worth publishing because I expect it to be common"
Not my experience with Claude at all.
Which AIs are you talking about?
This sentence quoted just doesn’t seem like the AI smoking gun to choose given the rest of the content.
*not at all
- Quietly/Delve/Tapestry/Landscape: they're all lovely words. I love(d) using them.
- "Serves as": I use this all the time too.
- "The result? Devastating". Perhaps it is a bit stilted, but "Outcome? Predictable." could be a nice turn of phrase.
- "It's worth noting": All academics everywhere use this in papers. See also: "Notably", "Essentially", "In general" and other such fillers that we reach for.
- "Think of it as": This is such a useful phrase to explain something. Analogy is how we learn after all.
- The fucking em dashes. I love them, and screw everyone who suggests one should stop using them. One big reason for using linux is the compose key, so the em dash is never far away.
- Same with the unicode decoration. Nah, screw you. I use these symbols all the time: °, ×, →, ⇒ etc. in my own notes. Again, compose key ftw.
Etc. (the list is endless)
I know what people will say, that everything is contextual, one has to study case-by-case etc. But I can't help feeling that someone is pointing a finger at me and accusing me before-the-fact. Just, AI has polluted the joy of writing.
"Did you ever actually finish any papers?"
"No. But the reasons why not were always absolutely fascinating."
So, yeah, for me personally it's not an AI tell. I've seen it in the wild before AI.
The same is not true, of the token generation that... Mostly Claude models... Have taken to.
LLMs write like some people cook, adding bespoke artisanal Belgian sea salt, truffle oil and weirdly specific cheese without any thought given to how the result will taste.