Chapter CServing Large Language ModelsPage 7 of 8

Serving Large Language Models

Trace a worked example

Serving LLMs becomes useful when you can predict its behavior, measure it, and name its limits.

~13 minWorked example

Before you start

Why this matters

For the worked trace, estimate the result before calculating it: approximate weight memory for 7B parameters at 16 bits = 7B × 2 bytes ≈ 14 GB, before KV cache and runtime overhead. Record the assumptions that make the estimate valid.

1Learn the idea

Read

Trace one decision end to end

See it

Training time vs chat time

Training

Huge dataHeavy computeWeights

Inference

Your promptFrozen modelReply

Training = long study · Inference = quick answer from what it already learned

Scenario: A service receives 20 short chats and one 32k-token prompt. Admission control places the long request in a separate queue so it cannot delay all chats; continuous batching keeps decode slots busy as short requests finish.

Write the trace as numbered state transitions, not a polished story:

  1. Capture the input, version, identity, and assumptions.
  2. Apply the mechanism: Requests enter a queue, are tokenized, and are batched. Prefill processes prompt tokens in parallel; decode then generates one token per active sequence step while retaining a KV cache. Continuous batching inserts and removes sequences dynamically. Memory is consumed by weights, activations, and per-request KV state, so scheduling directly affects throughput and latency.
  3. Record the relevant controls: model precision; tensor or pipeline parallelism; batch-token limit; maximum context; concurrency; KV-cache allocation; quantization; timeout; admission control; streaming; and autoscaling target.
  4. Calculate or inspect the intermediate signal: approximate weight memory for 7B parameters at 16 bits = 7B × 2 bytes ≈ 14 GB, before KV cache and runtime overhead.
  5. Compare the result with a baseline and an acceptance threshold.
  6. Store enough evidence to reproduce the decision without storing unnecessary sensitive content.

Now perturb the trace. Change one input to a long, stale, ambiguous, or unauthorized case. A robust design should either continue within its contract or abstain visibly. Silent degradation is worse than a clear refusal because downstream systems may interpret fluent output as verified output.

Read

Apply it to a concrete case

A service receives 20 short chats and one 32k-token prompt. Admission control places the long request in a separate queue so it cannot delay all chats; continuous batching keeps decode slots busy as short requests finish.

The worked number is approximate weight memory for 7B parameters at 16 bits = 7B × 2 bytes ≈ 14 GB, before KV cache and runtime overhead. State the unit and denominator whenever you report it. A percentage without a denominator can conceal a tiny sample; a latency without a percentile can conceal slow users; a similarity score without a labeled task can conceal irrelevant neighbors. Compare the observed value with a threshold chosen before seeing the final test result.

Now test the tempting shortcut. Suppose the team optimizes only the most visible metric. The result may look better while the system becomes less trustworthy. The reason is concrete: Larger batches improve GPU utilization and tokens per second but can worsen queueing and per-user latency. Quantization reduces memory and may increase throughput with possible quality loss. Longer contexts expand usefulness while sharply increasing KV memory and prefill work. This is why the decision record must include both the intended gain and the tolerated regression. If the tolerated regression is unknown, the change is not ready for a consequential workflow.

Read

Decision rules

  • Prefer a measured baseline over a persuasive demo.
  • Keep versions, inputs, and thresholds reproducible.
  • Separate syntactic success from semantic correctness and authorization.
  • Escalate or abstain when evidence falls outside the contract.
  • Re-evaluate when data, traffic, models, providers, or user goals change.

These rules turn the topic into an engineering decision rather than a slogan. They also make disagreement productive: another person can challenge the assumptions, rerun the evaluation, and reach a documented conclusion.

Read

Perform sensitivity analysis

The trace used one set of assumptions. Change one quantity by a realistic amount while holding the others fixed, then recompute the result. Next change a categorical assumption: model version, tenant, language, traffic shape, data freshness, or permission level. Mark which steps remain valid and which must be repeated. This is a stronger test than narrating the happy path because it reveals hidden coupling. Preserve the original and perturbed traces side by side, including intermediate values, so a reviewer can locate the first point at which their behavior diverges.

Checking tutor…

Continue learning · glossary & guides