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
- Explain the difference between a hosted model API, an inference provider that hosts open-weight models, and running open weights on your own GPUs.
- Compare per-token and per-GPU-hour costs for one feature, and work out the break-even volume and the GPU utilization it needs.
- 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 minVideo 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.
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 answer
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.
- Hosted model API. The provider keeps the weights and runs the model. You send text and pay per token, as in Calling a model API. Claude is offered only this way: you can’t download its weights.
- Open-weight model. The publisher lets anyone download the weights 4. With the file and enough GPUs, you can run the model yourself. That is self-hosting. “Open-weight” isn’t the same as open source: the training data and code are usually not published, and the licence sets what you may do.
- Inference provider. A company that runs open-weight models on its own GPUs and sells a per-token API for them. It is the middle option: you choose the model, and often the region, but someone else runs the GPUs.
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:
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.
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.
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.
Keep paying per token, through a route that processes in Germany: a cloud platform’s German region for Claude, or an inference provider running an open-weight model there.
Meets the requirement and still costs only for summaries made: about $1.89 a day at Claude API prices for Haiku 5.5 (regional prices differ), or the inference provider’s per-token price. Tomás must confirm the region in writing, and an open model must pass his summary checks first.
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.
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:
"usage": {"input_tokens": 24, "output_tokens": 61, "output_tokens_details": {"thinking_tokens": 38}, "inference_geo": "us"}What to look for:
inference_geoinusagesays where the model ran. Remove the field from the request and it may sayglobal.- Try
"inference_geo": "de". The API rejects it, which is Feldkamp’s problem in one line.
Where this shows up
- Design: an enterprise document Q&A product: large customers ask the same question about where their documents go.
- Design: an AI customer support platform: high, steady volume is where the GPU break-even becomes real.
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
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 answer
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 answer
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 answer
A feature must behave exactly the same for three years. Why might that push Deskora toward self-hosting, even at low volume?Show answer
Summary
- 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.
- 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.
- 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.
- 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.
- Check the data rule first, then compare the costs and quality of the options it allows.