Custom AI models for the enterprise · New York · LondonSecurityResearchContact sales
Finetune the World
Research · Cost model

Self-hosting a fine-tuned model vs paying per token: the break-even model

A transparent model with eight inputs. In our base case the crossover is about a million requests a month, but one input moves it by a factor of sixty.

The model#

Monthly cost of a per-token API for requests of tokens at price per token:

Monthly cost of serving a fine-tuned model on GPUs at dollars per GPU-hour, with fixed operations cost and a one-off project cost amortised over months:

Here is sustained tokens per second per GPU at your latency target and is average utilisation — traffic has peaks, so you provision for the peak and pay for the average. is the minimum footprint for redundancy (two GPUs). Ignoring the ceiling, break-even volume is:

The step function in means self-hosting cost is flat until you need another GPU, which is why the curves below cross only once over a wide range.

Base case#

InputBase valueMeaning
t2,500tokens per request (input + output)
p$6.00 / 1M tokensblended API price
h$2.50per GPU-hour
θ2,500tokens/s per GPU for an 8B model at moderate latency
u35%average utilisation
G_min2GPUs for redundancy
O$3,000monitoring, on-call, per month
P / A$110,000 / 12 monthsproject cost amortisation

With these inputs the break-even is 1.05M requests per month. Below it, keep paying per token; above it, the fine-tuned model is cheaper every month, before counting any accuracy gain.

$100$1k$10k$100k$1M10k100k1M10M100MPer-token APISelf-hostedRequests per month (log scale)Monthly cost, $ (log scale)
Monthly cost versus volume. The self-hosted line is flat at the two-GPU minimum until throughput forces more GPUs. Source: research/e6_breakeven/breakeven.py.

Which assumption matters most?#

We moved each input across a plausible range while holding the rest at base values and recomputed the break-even volume:

InputRange testedBreak-even (low end)Break-even (high end)
API price per token$1–$15 / 1M25.31M422k
Tokens per request800–8,0003.30M330k
Project cost50,000–250,000721k1.95M
Amortisation period6.0–241.67M749k
Fixed ops cost / month1,000–8,000921k1.39M
GPU throughput800–6,0001.54M1.05M
GPU price / hour1.5–4.0957k1.20M
Average utilisation15–60%1.30M1.05M

The API price dominates: from 422k requests a month against a premium model to 25.31M against a budget one. Tokens per request comes second, because long-context workloads multiply API cost but barely change GPU count at low volume. GPU price, throughput and utilisation matter much less than intuition suggests, because at the break-even point you are usually still on the two-GPU minimum.

What this means for a decision

The case for fine-tuning on cost alone is strongest when you are replacing an expensive frontier model on long prompts. If you are already on a cheap small API model, the case has to rest on accuracy, latency or data control — which it often does.

Three worked scenarios#

Plugging three common workloads into the same model (other inputs at base values):

WorkloadAssumptionsAPI / monthSelf-hosted / monthGPUsMonthly difference
Claims extraction2M requests/month, 2,500 tokens, replacing a $6/1M API$30,000$17,6423saves $12,358
Support agent, long context600k conversations/month, 9,000 tokens each, replacing a $10/1M frontier model$54,000$23,1423saves $30,858
Internal classifier150k requests/month, 800 tokens, replacing a $0.60/1M small model$72$11,6502costs $11,578

The long-context support agent is the clearest case: 5.4 billion tokens a month at frontier prices is a large bill, while the fine-tuned model still fits on a handful of GPUs. The internal classifier is the opposite: against a cheap small model at low volume, self-hosting loses money every month, and the case for fine-tuning (if any) has to be accuracy.

Putting accuracy in the same equation#

Cost per request is only half the comparison. If each error costs downstream — a mis-routed claim, an analyst rework, a wrong refund — and the two systems have error rates and , the monthly value of the accuracy difference is:

For the claims scenario, an improvement from 86.9% to 94.7% field accuracy (the client case on our results page) at an assumed $2 of rework per error is worth a month — dwarfing the inference saving. In most engagements we see, accuracy pays for the project and cost savings pay for the next one. The break-even volume including accuracy becomes:

Where θ and u come from#

The throughput is not a fixed property of a GPU; it depends on batch size, which depends on your latency target. Serving engines batch concurrent requests: larger batches raise tokens per second per GPU but make each request wait longer. A useful sizing identity is Little’s law — the average number of requests in flight equals arrival rate times time in system:

At 2M requests a month (about 0.76 per second on average) and 2 seconds per request, fewer than two requests are in flight on average — far below the batch sizes at which a GPU is efficient. That is why low-volume workloads sit on the two-GPU minimum with utilisation well below 35%, and why barely affects break-even: you are paying for availability, not throughput. Above roughly ten million requests a month the GPU count starts to scale with volume and and begin to matter.

Measuring your own inputs#

Every input can be measured from a week of production logs. The minimum query, assuming a request log with token counts:

-- monthly volume, tokens per request, and peak-to-average ratio
SELECT
  COUNT(*) * 30.0 / 7                         AS requests_per_month,
  AVG(prompt_tokens + completion_tokens)      AS tokens_per_request,
  MAX(per_min) / AVG(per_min)                 AS peak_to_average
FROM (
  SELECT date_trunc('minute', ts) AS m, COUNT(*) AS per_min,
         AVG(prompt_tokens) AS prompt_tokens, AVG(completion_tokens) AS completion_tokens
  FROM llm_requests WHERE ts > now() - interval '7 days' GROUP BY 1
) t;

Utilisation is roughly the inverse of the peak-to-average ratio if you provision for the peak. Benchmark on your hardware with your real prompt-length distribution; it varies several-fold between short-in/short-out and long-context workloads.

What the model leaves out#

It treats the API as perfectly elastic and ignores rate limits, batch discounts and prompt caching, all of which lower . It assumes the fine-tuned model meets the quality bar; the experiment and results pages address that separately. It ignores engineering time for on-call beyond the fixed , and it ignores the option value of owning the model. The throughput figure is an assumption for an 8B model on a modern data-centre GPU and should be replaced with a benchmark on your hardware and traffic shape.

Method and reproducibility

Script: research/e6_breakeven/breakeven.py; output: research/results/e6_breakeven.json. All inputs are editable at the top of the script. The home-page savings estimator uses the same structure with a simplified run-cost term.

References#

  1. Kaplan, J. et al. (2020). Scaling Laws for Neural Language Models. arXiv:2001.08361.
  2. NVIDIA. H100 Tensor Core GPU datasheet (BF16 dense tensor throughput, SXM form factor: 989 TFLOPS).

Frequently asked

Can’t find your question? Ask a senior engineer.

When is self-hosting an LLM cheaper than an API?

In our base case, above about 1.05M requests a month at 2,500 tokens each against a $6 per million token API. The crossover moves most with the API price and the tokens per request.

What is the biggest factor in LLM self-hosting break-even?

The per-token price of the API you are replacing, followed by tokens per request. GPU price and utilisation matter less at typical break-even volumes, because you are still at the minimum GPU footprint.

Bring us one task. We’ll show you what a specialist model can do.

A 45-minute briefing with a senior research engineer. You leave with a feasibility read, a data plan and a fixed quote, whether or not you hire us.

Book a briefing →