Definition
LLM inference serving is the runtime system that uses a trained language model to produce outputs for live requests.
The plain-English version:
take a prompt, run the model, stream or return generated tokens
That sounds like one function call, but production serving is a system. It has to manage GPU memory, request scheduling, batching, context length, output length, latency, throughput, cost, retries, timeouts, and model quality.
Why This Concept Exists
Large language models are expensive to run.
A product may have thousands of users asking questions at the same time. Some prompts are short. Some include long retrieved documents. Some users ask for one sentence. Others ask for a long report. Some requests use tools. Some need low latency. Some can wait.
The serving layer has to turn all of that messy demand into efficient model execution.
Without a serving system, an AI product quickly runs into:
- high latency
- low GPU utilization
- memory exhaustion
- unpredictable cost
- failed long-context requests
- poor batching behavior
- weak observability
Inference serving exists because model quality alone does not make a usable product.
The Beginner Mental Model
A beginner may think:
The app sends a prompt to the model and gets an answer back.
That is true at the API boundary, but incomplete.
A more useful mental model is:
request queue
-> prompt processing
-> prefill
-> decode loop
-> streamed tokens
-> logging and evaluation signals
The model is the central compute engine. The serving system is the machinery that keeps that engine useful under real traffic.
Prefill And Decode
LLM serving often has two important phases.
Prefill processes the input prompt:
prompt tokens -> model forward pass -> initial KV cache
Long prompts make prefill expensive because the system has to process the whole provided context.
Decode generates output tokens:
previous context -> next token
append token
repeat
Decode is often sequential because each generated token depends on the previous generated tokens.
That split explains why two requests can stress the system differently:
- long prompt, short answer: heavy prefill
- short prompt, long answer: long decode
- long prompt, long answer: both memory and latency pressure
Serving Metrics
Serving teams care about several metrics at once.
Time to first token: how long before the user sees the first generated token.
Tokens per second: how quickly the output streams after generation starts.
Throughput: how many requests or tokens the system can serve per unit of time.
GPU memory: how much weight, activation, and KV cache state fits.
Batch size: how many requests can run together efficiently.
Tail latency: how slow the worst common requests become.
Cost per request: how much compute the product spends for useful output.
Optimizing one metric can harm another. A larger batch may improve throughput but make an individual user wait longer.
Batching And Scheduling
Serving systems try to keep expensive hardware busy.
Batching groups work so the model can process multiple requests efficiently.
Scheduling decides which requests enter the batch, when they run, and how ongoing generations share capacity.
The hard part is that LLM requests are uneven. One request may finish in ten tokens. Another may generate a thousand. One prompt may be tiny. Another may include retrieved documents and tool outputs.
Good serving design handles this unevenness without letting one long request ruin the experience for everyone else.
Memory Pressure
LLM serving is often memory-bound, not only compute-bound.
The system needs memory for:
- model weights
- intermediate activations
- KV cache for active requests
- batching buffers
- runtime overhead
KV cache is especially important during generation. Every active request can hold attention state for its prompt and generated tokens.
This is why topics like Paged Attention, quantization, and cache management matter. They are not academic decorations. They decide how many users can be served at acceptable latency and cost.
Failure Modes
Common serving failures include:
- time to first token is slow because prompts are too long
- decode speed is weak because batching is poor
- GPU memory is wasted by over-reserving KV cache
- long generations crowd out short interactive requests
- retries duplicate expensive work
- context length increases cost without improving quality
- logs track latency but not answer quality
- model upgrades improve quality but break cost assumptions
Serving failures are product failures. Users experience them as slow, expensive, flaky, or untrustworthy AI features.
Product Examples
In a ChatGPT-style assistant, serving controls how quickly responses start streaming and how many conversations can run at once.
In a coding assistant, serving has to handle long file context, tool results, and latency-sensitive edits.
In a document assistant, retrieved chunks increase prompt length and therefore prefill and cache pressure.
In a customer-support assistant, serving cost matters because every ticket draft may pass through model inference.
Common Confusions
Inference serving is not the same thing as training.
Training changes or creates model parameters. Serving uses a trained model for live requests.
Serving optimization is not only about faster GPUs.
Batching, scheduling, memory management, quantization, attention kernels, and context design all matter.
Lower latency is not always better if quality collapses.
Serving decisions still need evals and product tradeoff analysis.
A model API hides serving details; it does not remove them.
Someone still owns the runtime system behind the API.
What This Does Not Mean
LLM inference serving does not make every application team a GPU infrastructure team.
Many products use hosted model providers. But engineers still need the mental model because prompt length, retrieved context, output length, streaming behavior, tool loops, and evals all affect the serving contract.