Discussion about this post

User's avatar
Nan Deng's avatar

Replay copies new inputs into the same buffers captured during warm-up, and the piece is clear that this is not a cached result. Decode still grows the KV cache on every token even when the batch size matches a captured graph, so a plan recorded at one cache length is the wrong sequence unless those buffers were reserved for the max length. Padding a short batch up to a captured size hides a different miss than a cache that no longer fits. I would keep the captured length next to the batch id, and fall back when the cache exceeds it rather than replaying a graph whose addresses no longer match.

Abhishek Pan's avatar

The fallback path deserves its own dashboard. If someone raises max batch size past the largest captured size, those big batches quietly run eager and per-step decode latency jumps, and the averages hide it. Tag each step with whether it hit a graph and the regression shows up right away.

Ready for more?