WritingBasetenBasetenpublished Aug 24, 2026seen 5d

How Leading Platforms Ensure Observability For Llm Inference

Open original ↗

Captured source

source ↗

How leading platforms ensure observability for LLM inference Try the new DeepSeek V4 Pro 0813 today. Frontier intelligence at a fraction of the cost. Here

Infrastructure

How leading platforms ensure observability for LLM inference

Learn how metrics, logs, and traces work together to catch slow responses, errors, and failed deployments before users do.

Authors

Chloe Florit

Last updated August 24, 2026

Share

TL;DR LLM inference observability means tracking metrics, logs, and traces to catch problems before users do. This post covers the key metrics (TTFT, TPOT, throughput, latency, KV cache hit rate), the three types of logs that cover build, deploy, and serve stages, and how traces help determine exactly where a request slowed down or failed.

When inference slows down, everything downstream is affected: agents stall mid-task, AI chat responses lag, and requests start timing out. Observability lets you catch these problems before your users do and gives you visibility into how your model is running in production. When your model is live, you can use metrics, logs, and traces to detect when something goes wrong, fix it, determine what happened, and figure out how to prevent it from happening again. In this post, we'll cover each of these tools and how they fit together to catch and debug issues like slow responses, errors, and failed builds or deployments. Key metrics: TTFT, TPOT, TPS, latency, and cache hit rate Tracking metrics helps you know when something is wrong before a user tells you. Here are the key metrics for LLM inference observability: TTFT (Time to First Token): measures how quickly users see something after sending a request. Low TTFT means users see a response quickly; high TTFT makes an app feel frozen or unresponsive.

TPOT (Time per Output Token): measures the average time it takes to generate each subsequent token. High TPOT means text trickles out in stutters instead of flowing.

TPS (Tokens per Second, or tokens/sec; throughput): measures the number of tokens the system generates per second across all requests. It's a measure of system-level capacity, not individual response speed. Low throughput means the system can't scale well to serve more users.

End-to-end latency: how long it takes to get a complete response for a single request. This is the top-line SLA metric: does your app meet its speed requirements?

KV cache hit rate: the fraction of input tokens that already had a KV pair stored in the cache. This happens when a new request begins with the same text (prefix) as a request the model recently processed. Because the model already computed and stored the KV pairs for those tokens, it can retrieve them from the cache instead of recomputing them. A higher hit rate means faster responses at lower cost because less computation is redone. Lower hit rate is slower and more expensive, because most tokens need fresh computation.

What's a KV (Key-Value) cache? "Keys" help the model figure out which words to pay attention to, and "values" determine what information gets added to a word's meaning based on the context. Together, they're cached as the "KV cache." KV cache management improves TTFT. It automatically routes requests to replicas that have the necessary context cached, which eliminates redundant prefill compute. This is especially useful for shared prompts, like system messages or few-shot examples. Logs Once metrics flag a problem, logs can show you what's causing it. There are three kinds of logs, and each one covers a different stage of a model's lifecycle: building the container, deploying the model, and serving requests. ✕ The model lifecycle: build, deploy, serve. Build logs The build logs track the process of assembling the container image, which holds everything your model needs to run: the model weights, the dependencies (libraries your code needs), and your code (which processes a request and runs it through the model). The container needs to be correctly assembled before it can be deployed to receive requests, so build logs are useful for catching problems before deployment. The most common failures that build logs catch include: Missing packages: the code references a library that wasn’t added to the container.

Incompatible system requirements: the container image is built on top of a base image, which usually comes with a CUDA version already installed. If the packages you add during the build expect a different CUDA version than what's in that base image, there's a mismatch and the build fails.

Network errors: if the connection drops, a package or the model weights might fail to download during the build.

✕ Container image build logs show how Baseten prepares and verifies a model container before deployment. Deploy / promotion logs Deployment logs track every key change in the deployment's lifecycle, like replicas coming online, scaling up or down. Some of those changes are promotions, which occur when a model version moves from one environment to the next: development to staging to production. Development is where you build and test work-in-progress code. Staging is a near-exact copy of production, used to test changes before users see them. Production is the live version of the deployment customers use. If errors spike, you can check whether that spike happened right after a promotion or scaling event. Comparing deploy/promotion logs with serving logs helps you tell whether a problem was caused by a deployment change or something else. Serving logs Serving logs keep track of everything your model prints out while running in production. That includes automatic system messages, such as errors and warnings, as well as anything you’ve told your code to log. These logs can also show some steps during inference (e.g., when a request is received, when generation starts, and whether any errors or retries occur) so you can confirm that requests are coming through and understand what’s happening while the model runs. Most common failures serving logs catch include: Model-loading errors: the model fails to load properly at startup (e.g., incompatible dependencies, missing files, memory limits).

Runtime exceptions: a request comes in, but something breaks partway through processing it (e.g., the input data is in the wrong format).

GPU/hardware errors: issues like running out of GPU memory (OOM) or a hardware-level crash.

Every log carries a request_id , so you can filter any...

Excerpt shown — open the source for the full document.

Notability

notability 5.0/10

Substantive industry blog post on LLM inference observability.