Chapter CServing Large Language ModelsPage 3 of 8

Serving Large Language Models

Learn the controls and knobs

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

~13 minControls

Before you start

Why this matters

Choose one control from this list—model precision; tensor or pipeline parallelism; batch-token limit; maximum context; concurrency; KV-cache allocation; quantization; timeout; admission control; streaming; and autoscaling target. Predict what improves and what worsens when you increase it. A useful prediction names a metric, not merely “quality.”

1Learn the idea

Read

Controls are hypotheses

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

The main controls are model precision; tensor or pipeline parallelism; batch-token limit; maximum context; concurrency; KV-cache allocation; quantization; timeout; admission control; streaming; and autoscaling target. Each should be treated as a hypothesis: “changing X will move metric Y under workload Z.” Change one family of controls at a time, record the version, and compare against a baseline.

Start with controls that bound harm—permissions, limits, split integrity, or validation—before controls that polish average quality. Use a small sweep instead of one lucky setting. A setting that wins on one example can lose on a different length, language, class, tenant, or traffic pattern. Keep defaults explicit in configuration so a provider or library update cannot silently redefine the experiment.

A useful control sheet has five columns: control, current value, predicted benefit, predicted cost, and rollback trigger. Fill it using the tradeoff below rather than intuition alone: 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.

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

Run a controlled sweep

Select three plausible values for one control while freezing the others. Run the same representative cases at every value and record task quality, p95 latency, unit cost, and failure count. Do not pick the winner from the average alone: inspect the worst case and important slices. Next, repeat one run to estimate natural variation. If the difference between two settings is smaller than run-to-run variation, the evidence does not support declaring a winner. Save the configuration beside the results so the experiment is reproducible after a model or library upgrade.

Checking tutor…

Continue learning · glossary & guides