emin@budak: ~/blog — zsh

emin@budak ~/blog % cat llm-d-1-0-production-inference.md

llm-d 1.0: The Production Inference Release That Matters

llm-d 1.0 distributed inference control plane

llm-d 1.0 is the first release of this distributed inference project that I would treat as an operations story, rather than a collection of serving tricks. The release, announced on October 20, moves the difficult parts into the product surface: multi-tenant fairness, hot-standby routing, coordinated upgrades for split prefill and decode pools, and state that can follow an agent conversation.

That matters because the hard part of inference has changed. A model can look fast in a clean benchmark and still make a poor shared service. Real traffic mixes interactive users, batch jobs, retries, long-context agents, deployments, and a few noisy customers. The llm-d 1.0 announcement calls this Day 2 work. That name is a little salesy, but the distinction is right.

What llm-d 1.0 actually changes

llm-d 1.0 turns several known inference techniques into a more coherent control plane. It sits above model servers such as vLLM and SGLang, then routes and coordinates the work across a Kubernetes deployment. The project already had prefix-aware routing, KV cache offload, prefill and decode disaggregation, and support for wide expert parallelism. Version 1.0 is about operating those pieces together when the fleet is busy or changing.

The release notes put four additions at the center: flow control that understands tenant and priority, router high availability, a stable v1 configuration API, and session-aware routing for multi-turn work. The v1.0.0 release notes are more useful than the launch copy because they also show the edges. The project is deprecating its own ROCm image builds, for example, while partners move to upstream images. That is the kind of migration detail that tells you this is a real production release, not a benchmark wrapper.

The part I find most important is the flow-control model. Under pressure, a shared service needs to decide whose request waits. First-come-first-served sounds neutral until an agent loop starts issuing large requests and consumes every backend queue. llm-d keeps separate flows by tenant or workload and priority, then sheds or holds traffic before overloaded replicas make latency impossible to reason about.

Problem What llm-d 1.0 adds Why an operator should care
Mixed tenant traffic Priority and fairness-aware flow control One bursty workload should not silently set latency for everyone.
Deploying split serving pools DisaggregatedSet with coordinated rollout behavior Prefill and decode changes can move as one compatible unit.
Router maintenance Hot standby and safer rolling updates A control-plane update should not become a traffic outage.
Multi-turn agents Session affinity and Responses API state Repeated context has a chance to hit the cache that already holds it.

Why agent traffic makes the old mental model fail

Agent workloads make caching and admission control part of application behavior. A coding agent may send a large conversation, call tools, add a small result, then send nearly the same context again. If a router forgets where that prefix lives, the system pays to process it again. That cost lands before the model produces its few hundred output tokens.

llm-d 1.0 prefill decode inference architecture
A conceptual view of a router coordinating prefill, decode, and cache layers.

This is why I would read llm-d 1.0 alongside the earlier post on local Qwen inference and deployment trade-offs. Choosing a model and buying GPUs are visible decisions. Keeping useful context close to the right worker is where the operating bill and tail latency often move.

IBM reports a demonstration with an open-weight mixture-of-experts model on 544 H100 GPUs, serving up to 3,000 concurrent coding agents with zero preemptions. It also reports more than 6.6 million output tokens per minute at peak. Those are vendor-reported results, not a reason to copy the numbers into a capacity plan. They are useful because the test is about concurrency, cache behavior, and failure-free transfers, not only a single request’s token rate. The underlying claims and setup are described in IBM’s release account.

The operational test I would apply to llm-d 1.0

llm-d 1.0 deserves a small, adversarial evaluation before it gets near a production endpoint. I would not begin with peak throughput. I would begin with a workload that has two traffic classes: interactive requests with a response-time objective, and long-context agent turns that reuse a common prefix.

  • Run the two classes together, then add a deliberate burst to the agent class.
  • Measure time to first token, completion latency, queue wait, cache hit rate, and rejected or deferred requests for each class.
  • Roll a router update while requests are in flight, then do the same for a coordinated prefill and decode update.
  • Kill or drain a worker that holds a hot prefix and watch whether the system degrades predictably.

The important result is not a single aggregate throughput number. It is whether the interactive class stays inside its budget and whether the agent class fails in an explicit, observable way. If the answer is no, a new scheduler only moved the complexity from the client library into Kubernetes.

The independent coverage from Unite.AI makes the same useful distinction: the release packages existing techniques into an operational layer that can survive changing traffic and maintenance. I agree with that framing. I do not yet think it proves portability across every engine, accelerator, storage layout, and failure mode.

What llm-d 1.0 does not prove

There is no universal inference stack. llm-d 1.0 gives an operator more policy and coordination, but it also adds a router, configuration surface, Kubernetes resources, and compatibility boundaries between its components and the serving engine. That can be the correct trade for a multi-tenant fleet. It can be needless machinery for one model behind a small internal API.

The release claims broad accelerator and cloud support. Treat that as an invitation to check the exact path you need, not a compatibility guarantee. A topology-aware deployment, a particular vLLM build, and a disaggregated setup each have their own failure cases. The project documentation is unusually candid about version alignment and image changes, which is good. It also means upgrades need rehearsal.

My conclusion is simple: llm-d 1.0 is worth attention because it makes the shared-service problems visible. For teams already operating long-context or agent-heavy inference, that is a better reason to evaluate it than any headline throughput number.

If you run a shared inference fleet, test llm-d 1.0 against your own noisy-neighbor and rollout failures before judging it by tokens per second.