lumo

Module 01 · Lesson 6 of 13Free

Hosted and open-weight models: the tradeoffs

Level
Intermediate
Topic
AI engineering fundamentals
Reading time
16 min

When you finish this page you can

  1. Explain the difference between a hosted model API, an inference provider that hosts open-weight models, and running open weights on your own GPUs.
  2. Compare per-token and per-GPU-hour costs for one feature, and work out the break-even volume and the GPU utilization it needs.
  3. Decide which option fits a requirement such as keeping data in one country, weighing data control, quality, operations work and version pinning.

Builds on 2 lessons

Start with lesson 315 min
  1. Calling a model API: request, response and cost15 min
  2. Choosing a model: capability, cost and speed8 min

Video lesson · coming soon

A shop wants its tickets to stay in Germany

Deskora is a help desk app. A shop’s support team uses it to answer customer emails from one shared inbox. Each customer problem becomes a ticket: one customer’s whole conversation with the support team.

Feldkamp, a large garden-supply shop in Germany, wants to sign up. Its head of support, Anja, sends one question first: “Can our ticket text be processed only in Germany?” Feldkamp’s contracts with its own customers promise that. It is a rule, and it covers processing, not only storage.

Tomás, the Deskora engineer who builds the AI features, checks the summary feature. It sends each long ticket thread to Claude Haiku 5.5 through the Claude API. As of October 2026, that API lets a request choose where the model runs from two values only: global or us 1. Germany isn’t one of them.

So Tomás compares staying on a hosted API with running a model Deskora downloads. This lesson answers one question: what does each option cost Deskora, and which one should it choose for Feldkamp?

Feldkamp’s numbers are estimates for this lesson’s scenario: 6,000 new tickets a day, 2,000 of them long enough to get a summary, one in four of those very long.

Three ways to run the same summary

The summary call itself doesn’t change. What changes is who holds the model, whose computers run it, and how Deskora pays.

Diagram not drawn yet: three-ways-to-run-a-model.svg

Three rows, one per option. Row 1, hosted model API: the Deskora app server sends ticket text to the provider’s model API; the provider keeps the weights and runs the GPUs; Deskora pays per token; the text goes wherever the provider runs the model. Row 2, inference provider: the Deskora app server sends ticket text to an inference provider’s API; the provider runs an open-weight model it downloaded from the model’s publisher, in a region Deskora picks from its list; Deskora pays per token. Row 3, self-hosted: the Deskora app server sends ticket text to Deskora’s own inference server on rented GPUs in Germany, loaded with downloaded open weights; Deskora pays per GPU-hour, busy or idle.

Three ways to run the same summary. The first two bill per token; only self-hosting bills by the hour and keeps the model on Deskora’s own servers.
Check yourselfAnswer in your head first, then reveal
An open-weight model is free to download. For Feldkamp’s 2,000 summaries a day, do you expect two rented GPUs running it to cost less than paying Claude Haiku 5.5 per token?Show answerHide answer
No, far more. Hosted, the summaries cost about $1.89 a day; two GPUs at an assumed $2.50 an hour cost $120 a day, whether they are busy or not. Not “free weights means cheap”: the weights cost nothing, but the hours do, and these GPUs would sit idle almost all day.

Most readers guess the downloaded model wins. Here is where that belief comes from, and where it breaks.

What the three options are

A model is a large file of numbers learned in training, called its weights. Running the model on an input is called inference.

There is a fourth route for the hosted model itself. Cloud platforms that resell Claude, such as Amazon Bedrock, set the region through the endpoint you call, with their own regional prices 1. If one offers Claude Haiku 5.5 with processing pinned to Germany, Deskora could keep its current model.

Per token against per GPU-hour

Hosted and inference-provider APIs charge for work done. Self-hosting charges for time rented. That one difference drives the whole cost comparison.

The unit of cost is one completed summary. It takes one call; this estimate leaves out retries and output checks. Token counts are the ones from lesson 03: a typical summary is about 4,150 input tokens and 380 output tokens, with 300 of those assumed thinking tokens. A long one is about 15,150 input and 900 output, with 800 assumed thinking tokens. On Claude Haiku 5.5, thinking is billed as output, and usage.output_tokens_details.thinking_tokens reports the real amount.

Hosted, on Claude Haiku 5.5

1,500 × $0.000605 + 500 × $0.001965 = $0.91 + $0.98 = about $1.89 a day

Per summary: input tokens × $0.10 per million + output tokens × $0.50 per million, as of October 2026 3. That is $0.000605 for a typical ticket and $0.001965 for a long one. Average: $1.89 ÷ 2,000 = $0.000945.

Self-hosted: the fixed bill

2 GPUs × 24 hours × $2.50 = $120 a day, about $3,600 a month

Assumed: $2.50 per GPU-hour to rent one data-centre GPU in Germany. Two GPUs, so one failure doesn’t stop the summaries. The bill is the same at zero summaries or at full load.

Self-hosted: the capacity

2 GPUs × 1 summary a second × 86,400 seconds = 172,800 summaries a day

Assumed : one GPU running a mid-sized open model finishes about one summary a second when it serves many at once. The real figure depends on the model, the GPU, the serving software and how much the model thinks.

Feldkamp’s utilization

2,000 ÷ 172,800 = 1.2%

The GPUs are busy about 17 minutes each a day and paid for all 24 hours.

Cost per summary

self-hosted $120 ÷ 2,000 = $0.06; hosted $0.000945; ratio about 63 times

The whole gap comes from idle hours.

The GPU price and throughput are assumptions for this lesson, not quotes. Change them in the calculator below; the shape of the result holds.

is the share of paid time the GPUs spend working. It decides the self-hosted cost per summary: the same $120 spread over 2,000 summaries or 150,000.

Where the lines cross

A per-token bill starts at zero and rises with every summary. A GPU bill is flat until you need more GPUs. The break-even volume is where they meet:

break-even summaries a day=GPU cost a day÷hosted cost per summary
Then check the GPUs can serve that many: break-even ÷ capacity = the utilization you need.

Against Claude Haiku 5.5

$120 ÷ $0.000945 = about 127,000 summaries a day = 73% utilization

That is more than Deskora’s 40,000 summaries a day for all 1,500 shops together.

Against Claude Sonnet 5.5

$120 ÷ $0.0189 = about 6,350 summaries a day = 3.7% utilization

Sonnet 5.5 costs $2 per million input and $10 per million output tokens as of October 2026 3: $0.0121 typical, $0.0393 long, $0.0189 on average.

Diagram not drawn yet: token-cost-vs-gpu-cost.svg

A line chart. X axis: summaries a day, 0 to 180,000. Y axis: cost a day in dollars, 0 to 200. A flat line at $120 is labelled two self-hosted GPUs, capacity 172,800. A steep rising line for Claude Sonnet 5.5 crosses it at about 6,350 summaries. A shallow rising line for Claude Haiku 5.5 crosses it at about 127,000 summaries. A dot near zero marks Feldkamp at 2,000 summaries, and a dashed vertical line marks Deskora’s total of 40,000.

GPU hours are a flat bill; tokens are a rising one. Against a cheap hosted model, the GPUs pay off only when they are busy most of the day.

So break-even isn’t a property of self-hosting. It depends on four numbers: the GPU price, the throughput, how busy you keep the GPUs, and which hosted price you compare against. Against a cheap model it is far away. Against an expensive one it is close, but only if the open model does the job as well, and that is a separate question.

Staff time isn’t in these numbers either. Someone has to run those GPUs.

Data, quality, operations and versions

Cost is one of five differences. For Feldkamp, the first one decides whether an option is allowed at all.

Hosted model API Inference provider (open weights) Self-hosted open weights
Where ticket text is processed Where the provider runs it; on the Claude API, global or us The provider’s regions Wherever Deskora rents GPUs
Who else handles the text The provider The provider Only the GPU host’s hardware; nobody else runs the model
Model quality Deskora’s current model, already checked A different model; must be measured A different model; must be measured
Operations work for Deskora API calls only API calls only GPUs, serving, scaling, upgrades, on-call
Can the model change under you? It is retired on the provider’s schedule On the provider’s schedule Only when Deskora changes it

Data control. Running open weights lets you use a model without sharing data with a third party 4. On rented GPUs the cloud host still owns the hardware, but no model provider sees the text. Deskora picks the region and how long anything is kept.

Quality. An open model isn’t better or worse by label. Tomás runs the candidate on a few hundred real tickets and scores the summaries the same way he scores Haiku’s. Evals teaches how. Weighing quality against price is the subject of Choosing a model.

Operations. Self-hosting turns a function call into a service Deskora runs. Someone sizes the GPUs for the busy hours, keeps the serving software patched, watches for a GPU failing at 3 a.m. and plans capacity for 60-message tickets. If both GPUs fail, Feldkamp’s agents read every long thread in full until someone fixes it. Self-hosting open models shows how it is done.

Version pinning. A hosted model is retired one day, and requests to a retired model fail 2. Anthropic promises at least 60 days’ notice, and lists Claude Haiku 5.5 as active until at least October 7, 2027, as of October 2026 2. A weights file Deskora stores never changes unless Deskora changes it. That matters when every summary must keep behaving the same for years. Model upgrades covers switching models safely.

Diagram not drawn yet: who-runs-what-hosted-vs-self-hosted.svg

Two panels. Left panel, hosted: Deskora owns the app server, the summary job queue and the summary check. The provider owns the model API, GPUs, serving software, scaling, model weights and model retirement dates. Right panel, self-hosted: Deskora owns all of these, plus two GPU servers in Germany, monitoring and on-call. New responsibilities in the right panel are highlighted.

Self-hosting moves the provider’s whole column onto Deskora’s team.

Shrinking a model to fit a cheaper GPU is Quantization; training it further on Deskora’s tickets is Fine-tuning basics. Neither changes this decision for Feldkamp.

Choosing for Feldkamp

How should Deskora serve summaries for a shop whose ticket text must be processed only in Germany?

Keep the Claude API as it is.

Breaks Feldkamp’s requirement: the Claude API runs the model in global or US locations only. Deskora either loses Feldkamp or turns summaries off for it.

Self-host an open-weight model on two rented GPUs in Germany.

Meets the requirement with the most control and a fixed model version, but costs about $120 a day for 1.2% use, plus the people to run it. Each summary costs about 63 times more than on Haiku 5.5.

Why this choice

The requirement is about where text is processed, not about owning GPUs. A per-token route in Germany meets it without paying for 23 idle hours a day. Tomás tries the Claude route first, because Haiku 5.5 is already checked on Deskora’s tickets. If no such route exists, an inference provider is next, after the open model passes his checks.

When the choice changes. Self-hosting wins when:

  • many German shops join and keep GPUs busy most of the day, or the comparison is a far pricier hosted model;
  • a contract forbids any model provider from seeing the text;
  • a feature must run the exact same model for longer than any provider promises.

Try it yourself

You can see where a Claude request ran. This call asks for US-only processing, which costs 1.1 times the normal price on Claude 4.6 and later models 1. With 200 output tokens at most, it costs under $0.0002. If you don’t have an API key, skip this.

bash
curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2026-10-21" \
  -d '{"model": "claude-haiku-5-5", "max_tokens": 200, "inference_geo": "us", "messages": [{"role": "user", "content": "Summarize in one line: my garden hose arrived with a split in it."}]}'

An example of the usage you might see, shortened; your numbers will differ:

json
"usage": {"input_tokens": 24, "output_tokens": 61, "output_tokens_details": {"thinking_tokens": 38}, "inference_geo": "us"}

What to look for:

  • inference_geo in usage says where the model ran. Remove the field from the request and it may say global.
  • Try "inference_geo": "de". The API rejects it, which is Feldkamp’s problem in one line.

Where this shows up

Whichever route Tomás picks, a 60-message ticket must still fit in what one call can read. A smaller open model may hold less than Haiku 5.5, which is the problem in Context windows.

Common mistakes

  • Comparing at full load. A GPU price divided by its peak throughput gives the best case. Divide the daily bill by the summaries you really serve.
  • Counting one GPU and no people. One GPU is one failure away from no summaries, and on-call time is a cost too.
  • Reading “open-weight” as “use it any way”. Licences differ. Read the model’s licence before building on it.
  • Answering the cost question first. Check what the data rule allows, then compare the costs of the options that remain.

Check your understanding

Check yourselfAnswer in your head first, then reveal
The GPU price falls to $1.25 an hour. Does self-hosting now beat Claude Haiku 5.5 on cost for all of Deskora’s 40,000 summaries a day?Show answerHide answer
No. Two GPUs then cost $60 a day, so break-even is $60 ÷ $0.000945, about 63,500 summaries a day, still above 40,000. Not “half the price, so it wins”: the hosted price is so low that the GPUs must still be busy over a third of the day.
Check yourselfAnswer in your head first, then reveal
Long threads and more thinking mean one GPU really finishes 0.5 summaries a second, not 1. What happens to Feldkamp’s self-hosted cost a day?Show answerHide answer
Nothing: it stays $120, because you pay for hours, not work. Capacity halves to 86,400 a day and utilization doubles to about 2.3%. Break-even against Haiku 5.5, about 127,000 a day, is now more than two GPUs can serve at all.
Check yourselfAnswer in your head first, then reveal
An inference provider in Germany hosts an open model at a per-token price close to Haiku 5.5’s. What must Tomás still check before switching Feldkamp to it?Show answerHide answer
That the open model’s summaries pass the same checks as Haiku’s on real tickets, and that the provider really processes and keeps the text only in Germany. Not the GPU arithmetic: per-token billing has no idle hours.
Check yourselfAnswer in your head first, then reveal
A feature must behave exactly the same for three years. Why might that push Deskora toward self-hosting, even at low volume?Show answerHide answer
Hosted models are retired on the provider’s schedule, with at least 60 days’ notice on the Claude API, and calls to a retired model fail. A stored weights file runs unchanged for as long as Deskora keeps it.

Summary

  1. For Feldkamp, keep paying per token through a route that processes text in Germany; two self-hosted GPUs would cost about $120 a day against about $1.89 hosted, under this lesson’s assumptions.
  2. Hosted APIs and inference providers bill per token; self-hosted open weights bill per GPU-hour, busy or idle, so utilization sets the cost per task.
  3. Break-even summaries a day = GPU cost a day ÷ hosted cost per summary. Against a cheap hosted model it can need GPUs busy most of the day.
  4. Open weights give control over where data goes and a model version that never changes, in exchange for measuring quality yourself and running GPUs, serving and on-call.
  5. Check the data rule first, then compare the costs and quality of the options it allows.

Report a mistake

Tell us what’s wrong in this lesson and we’ll fix it.