Self-Hosting LLMs: The Full Cost
On this page
The slide that only shows the GPU
The self-hosting pitch always starts with the same slide: the GPU price divided by the tokens it can serve, compared against the API's per-token rate. The arithmetic shows the GPU winning by a wide margin, and the conclusion writes itself — why rent the tokens when you can own the machine?
The slide is not wrong; it is incomplete. The GPU is one line item in a system that includes power, cooling, networking, storage, redundancy, and the people who keep it running. The per-token comparison that includes only the hardware is the same category of error as the price-list post warns about — a number that describes no actual purchase.
This post is the full invoice: the line items the slide omits, the utilization math that decides everything, and the honest comparison against the API.
What does self-hosting actually cost?
The hardware: the GPUs, the servers around them, and the storage for the model weights and the data. The facility: power, cooling, rack space — the costs that scale with every GPU hour whether the GPU is serving or idle. The network: the bandwidth and the connectivity that make the endpoint reachable. The redundancy: the second machine, the backup power, the failover path — because a single GPU is a single point of failure, and production means the failure is planned for.
Then the people: the engineers who provision, patch, monitor, and fix. The people cost is the line item that never appears on the slide and always appears on the invoice — and it does not scale down when the traffic does.
And the opportunity cost: the capital tied up in hardware that could have been spent on the product. The GPU is a depreciating asset; the product is the thing that compounds.
Utilization: the number that decides everything
The entire self-hosting economics collapse into one number: utilization — the fraction of the GPU's capacity that is actually serving tokens. A GPU running at full utilization is the slide's arithmetic, and it wins. A GPU running at a fraction is the slide's arithmetic divided by that fraction, and it loses.
The utilization is decided by the traffic pattern, not the engineering. A steady, predictable, always-on workload can run a GPU hot; a bursty, spiky, seasonal workload cannot — the capacity that covers the peak idles through the trough. The batch post's argument about pay-per-use applies here with hardware: the spiky workload is exactly the one that should rent.
And the utilization math includes the maintenance windows, the failed runs, the redeploys — every hour the machine is not serving is an hour the slide assumed it was. The honest utilization number is always lower than the planned one.
When does self-hosting win?
Three conditions, all of them necessary. The utilization is high and steady: the workload is predictable enough to keep the hardware hot. The scale is large enough that the people cost amortizes: the engineering team is spread across enough tokens that its cost per token is small. And the requirements demand it: data that cannot leave the building, latency that cannot tolerate a network, control that the API cannot offer.
The third condition is the one that actually decides most self-hosting decisions — the requirements, not the arithmetic. The teams that self-host for compliance or control reasons are not comparing token prices; they are buying a property the API does not sell.
And the honest test is the same as every cost decision on this blog: model the full cost, including the people and the idle time, and compare against the API at your actual volume. The slide's arithmetic is the starting point, never the conclusion.
When is self-hosting the wrong answer?
When the workload is spiky, small, or unproven. The bursty traffic pays for idle hardware; the small traffic cannot amortize the people; the unproven traffic is a bet made with capital instead of tokens. The pay-per-use model exists precisely for these workloads, and the batch post's rule applies: unproven workloads deserve pay-per-use.
It is also the wrong answer when the model landscape is moving fast. The hardware bought for this quarter's model is the wrong hardware for next quarter's — and the API customer switches models with a config change while the self-hoster runs a procurement.
And it is the wrong answer when the team is not staffed for operations. The self-hosted stack is a production system with all the production responsibilities — the monitoring, the patching, the on-call. Buying the GPU without buying the operations is how the slide's savings become the invoice's surprise.
Related Articles
What Serverless LLM Inference Actually Costs at Enterprise Volume
Serverless per-token inference versus a dedicated GPU endpoint: how to find the break-even utilization for your workload, with the traps on both sides.
The Cheapest Request Is the One That Can Wait
Urgency is what the real-time rate buys. Splitting inference traffic by deadline — interactive, asynchronous, batch — and what each lane saves.
How to Read an LLM Price List
Per-token rates look simple until you read the fine print: input vs output, cached tokens, context tiers, batch discounts. How to read a price list.