The GPU bill is the visible cost and rarely the largest one. Serving infrastructure needs building and operating: batching, queueing, autoscaling, health checks, model loading, version management. Somebody has to own it at 3am.
Utilisation is the number that decides the economics. A reserved GPU costs the same whether it is saturated or idle, so bursty workloads on dedicated hardware are frequently more expensive per request than an API — sometimes dramatically. Self-hosting wins on steady, predictable, high volume; it loses on spiky traffic.
And the capability gap is real. Open-weight models have closed much of the distance on many tasks and remain behind frontier models on the hardest reasoning and the most complex agentic tool use. For extraction, classification, summarisation and straightforward retrieval-augmented answering, that gap is often irrelevant. For multi-step reasoning under ambiguity, it is not.
Our usual recommendation is a hybrid: open weights for the high-volume, well-defined majority; a hosted frontier model for the small share of genuinely hard requests — assuming your data-residency rules permit anything hosted at all.