AI Inference Latency: Why Production Gets Slower
Why does AI inference slow down in production? Learn how queueing, batching, GPU memory, storage, networking, and autoscaling affect LLM latency.
Read field noteField notes / Latest
Engineering notes from operating open infrastructure: the failures, design decisions, and upstream work that make open infrastructure better.
Browse all field notesWhy does AI inference slow down in production? Learn how queueing, batching, GPU memory, storage, networking, and autoscaling affect LLM latency.
Read field noteLearn how production AI changes infrastructure requirements for availability, recovery, storage, networking, monitoring, capacity, and Day 2 operations.
Read field noteNot sure whether to upgrade or migrate your OpenStack cloud? Learn how to evaluate architecture, hardware, storage, networking, technical debt, and operational complexity.
Read field noteWhy does AI inference slow down in production? Learn how queueing, batching, GPU memory, storage, networking, and autoscaling affect LLM latency.
A model performs well during testing. Prompts return quickly, token generation feels responsive, and the GPU appears capable of handling the workload.
Then the application reaches production.
More users arrive at the same time. Requests begin to queue. Some responses remain fast while others take noticeably longer. GPU utilization may climb toward saturation, or it may look surprisingly low despite poor application performance.
The first instinct is often to blame the model or add more GPUs.
Sometimes additional compute is necessary. But AI inference latency is an end-to-end infrastructure characteristic. The model and accelerator are only part of the request path.
Concurrency, queueing, batching, GPU memory, model loading, storage, networking, scheduling, and scaling all influence what the user ultimately experiences.
Before increasing infrastructure capacity, teams need to determine where the latency actually comes from.
A single average response-time metric is not enough to understand generative AI performance.
For an autoregressive large language model (LLM), several measurements matter:
These metrics describe different parts of the user experience. NVIDIA's GenAI performance tooling, for example, measures TTFT, inter-token latency, request latency, request throughput, and token throughput separately rather than collapsing performance into a single number. NVIDIA's GenAI-Perf documentation.
Percentiles matter too. An acceptable average can hide poor performance for a meaningful group of users. Monitoring p95 and p99 latency helps expose these tail-latency problems.
If TTFT rises while token generation remains relatively stable, for example, the bottleneck may involve queueing, prompt processing, batching, or available serving capacity rather than generation speed itself.
Performance with one request does not predict performance with hundreds of simultaneous requests.
As concurrency increases, requests compete for GPU compute, GPU memory, CPU resources, inference slots, and scheduler capacity. Once incoming work exceeds immediately available serving capacity, requests begin waiting.
Production workloads are also rarely uniform.
One user may submit a short prompt and request a brief response. Another may send a long context and generate hundreds of tokens. Long and short requests can therefore compete for the same serving resources in very different ways.
Depending on the inference engine and scheduling strategy, this can contribute to queue growth, head-of-line blocking, or inconsistent latency across requests.
Capacity testing should therefore reproduce realistic combinations of:
A benchmark performed at concurrency one is useful for establishing a baseline. It is not a production capacity plan.
GPUs can often process work more efficiently when multiple requests are handled together.
Inference servers may therefore use batching to combine compatible work instead of processing every request independently. Dynamic batching, for example, can assemble batches from requests arriving around the same time.
This can improve GPU utilization and throughput. In some circumstances it can also reduce queueing because the GPU processes more work per execution cycle.
But batching can introduce another tradeoff.
If the serving system deliberately waits for additional requests before dispatching a batch, that waiting time can become part of user-visible latency. NVIDIA Triton's dynamic batcher exposes a configurable queue delay specifically to control how long requests may wait while a batch is formed.
For an interactive assistant, minimizing TTFT may matter more than maximizing total throughput. A batch inference workload may prioritize the opposite.
There is no universally correct batch size or batching strategy. It needs to be tuned against the application's actual latency and throughput objectives.
GPU Memory Can Become the Constraint Before GPU Compute
GPU utilization is only one measure of inference capacity.
The accelerator also needs memory for model weights and runtime state. For transformer-based LLMs, an important component is the key-value, or KV, cache, which stores attention state for tokens that have already been processed.
As context lengths and the number of concurrent sequences increase, KV-cache requirements can grow substantially.
When insufficient cache space remains, serving engines may need to reduce concurrency, reject work, move data elsewhere, or preempt and recompute requests depending on the implementation. vLLM, for example, documents request preemption when available KV-cache capacity cannot accommodate all batched sequences.
Production GPU memory demand therefore depends on factors including:
Quantization can reduce model or KV-cache memory requirements in some deployments, but it can introduce accuracy, compatibility, or performance tradeoffs. Hugging Face also notes that KV cache can become a significant memory bottleneck for long-context generation.
This is why low or moderate GPU compute utilization does not necessarily mean there is plenty of inference capacity available.
Additional inference capacity is not useful until it is ready to serve requests.
Starting a new replica may involve:
For large models, this process can take long enough that conventional application autoscaling assumptions become problematic.
A service may technically support autoscaling while still scaling too slowly to absorb a sudden increase in latency-sensitive traffic.
Scale-to-zero can reduce idle infrastructure use, but it creates an obvious cold-start tradeoff. Where response time is important, keeping an appropriate amount of warm serving capacity may be more practical.
Storage is often treated mainly as a training concern, but inference infrastructure still depends on it.
Large model weights need to be loaded when inference workers start, replicas are replaced, or models are updated. Storage throughput and artifact placement can therefore influence how quickly new capacity becomes available.
Contention matters as well. If many inference workers retrieve large model artifacts from the same storage system at once, initialization may take longer even when the GPUs themselves are ready.
Once a model is resident in GPU memory, storage may have much less influence on steady-state token generation, depending on the application architecture. It remains important for model deployment, startup, recovery, artifact management, and workloads that interact with external datasets or retrieval systems.
Distributed storage platforms can be relevant when an architecture requires scalable block, object, or file storage, but the appropriate storage design should follow actual model access patterns and recovery requirements.
A production request rarely travels directly from the user to a GPU.
A simplified request path might look like:
User → API/load balancer → application → inference endpoint → GPU worker → response
Every stage can add latency.
Potential contributors include:
The path can become longer when inference is part of a larger AI workflow involving authentication, vector search, retrieval-augmented generation, databases, tools, or multiple model calls.
This does not mean distributed architectures or Kubernetes are inherently slow. It means teams need visibility into the complete request path instead of assuming the accelerator dominates total latency.
A fast GPU cannot compensate for an unnecessarily expensive network path.
GPU inference requires a different view of scaling from many conventional stateless web applications.
When demand increases, additional capacity may depend on:
By the time additional replicas are serving traffic, a short spike may already have created a substantial queue.
For predictable workloads, minimum replica counts or scheduled capacity may be sufficient. Less predictable workloads may require a combination of warm baseline capacity and controlled autoscaling.
What matters is not whether infrastructure can eventually scale. It is whether usable inference capacity becomes available quickly enough to protect the latency objective.
Before expanding GPU capacity, compare the observed symptom with the rest of the serving path.

This table is diagnostic, not exhaustive. Several bottlenecks can occur at the same time.
More GPUs only solve problems that additional GPU capacity can actually address.
Inference observability should connect user-visible behavior to the infrastructure serving the request.

The most useful evidence often comes from correlating signals across layers.
If TTFT rises at the same time queue depth increases and GPU memory approaches its limit, the investigation looks very different from one where TTFT rises while inference workers are idle and application-network latency has increased.
GPU utilization is useful. It is not an inference observability strategy.
When production inference slows down, changing several infrastructure variables simultaneously makes the cause harder to identify.
A better troubleshooting sequence is:
This process also tells teams whether additional GPUs are justified.
If the limiting factor is model loading, queue configuration, networking, storage, or memory allocation, purchasing more accelerators may increase cost without addressing the underlying problem.
A GPU benchmark can show how quickly a model performs under specific test conditions. It cannot tell you how the entire application will behave once production traffic, queues, long contexts, model startup, storage dependencies, network paths, and scaling events are involved.
Production inference needs to be designed around the complete system.
VEXXHOST provides AI Inference for managed model endpoints and GPU Infrastructure for dedicated accelerated compute, alongside OpenStack, Kubernetes, Ceph, and infrastructure engineering services.
That does not mean every inference deployment needs every layer. It means the compute, model-serving, storage, networking, orchestration, placement, and operating model can be designed around the workload's actual latency, throughput, availability, data, and control requirements.
Before adding GPUs, measure the path the request actually takes.
The bottleneck may be somewhere else.
Choose from Atmosphere Cloud, Hosted, or On-Premise.
Simplify your cloud operations with our intuitive dashboard.
Run it yourself, tap our expert support, or opt for full remote operations.
Leverage Terraform, Ansible or APIs directly powered by OpenStack & Kubernetes