SSD Nodes Learn 🎉 VPS vanaf $5.50/mnd
Gidsen Matt ConnorDoor Matt Connor · Bijgewerkt 2026-08-13

GPU VPS of API tokens: wat is goedkoper?

Bereken wanneer het huren van een GPU VPS voordeliger is dan betalen per API-token. Wij bieden de formule en het exacte maandelijkse tokenvolume waarbij uw kosten omslaan.

Waar het omslagpunt daadwerkelijk ligt

Een GPU VPS is voordeliger dan per-token API-facturering op één punt: wanneer de vaste maandelijkse huur, gedeeld door het aantal output-tokens dat u in die maand daadwerkelijk genereert, lager uitvalt dan wat de API voor dezelfde tokens in rekening brengt. De huurprijs is constant. De API-rekening stijgt met elk verzoek. Het antwoord is daarom altijd een maandelijks volume, nooit een simpel ja of nee.

Bij een mid-range GPU VPS van $0,50 per uur, wat neerkomt op $365 voor een maand van 730 uur, ligt het omslagpunt bij een frontier model API op 24.3 miljoen output-tokens per maand. Bij een klein commercieel model is dit 73 miljoen. Bij een gehost open-weight model van dezelfde omvang bereikt u nooit een omslagpunt, omdat één kaart in een maand niet genoeg tokens kan produceren om het kruispunt te bereiken.

Gepubliceerde studies over het omslagpunt beantwoorden deze vraag niet. Twee studies van eerder in 2026 plaatsen het omslagpunt bij een aanhoudende bezettingsgraad van 72% op een H200, en tussen 22% en 48% duty cycle op een MI300X. Beide vergelijken met het serverless-product van dezelfde leverancier en beide rekenen met accelerators die per uur meer kosten dan de meeste lezers hier in een maand uitgeven. De berekening is identiek. Hieronder wordt deze opnieuw uitgevoerd voor één kaart, één open model in de 7B tot 30B-range, en standaard API-facturering op basis van verbruik.

Elk getal hieronder is een invoerwaarde, geen resultaat. Vervang deze allemaal door uw eigen waarden.

De formule, zodat u uw eigen getallen kunt invullen

cost_per_million = (hourly_rate * 1000000) / (tokens_per_second * 3600 * duty_cycle)

breakeven_millions_per_month = (hourly_rate * hours_per_month) / api_price_per_million

capacity_millions_per_month = (tokens_per_second * 3600 * hours_per_month) / 1000000

required_duty_cycle = breakeven_millions_per_month / capacity_millions_per_month

Vier invoerwaarden, die u allemaal kunt meten of opzoeken.

  • hourly_rate zijn de kosten per uur voor de GPU VPS, inclusief de uren dat deze inactief is. Als u maandelijks betaalt, deelt u de maandprijs door 730.
  • tokens_per_second is de totale output-snelheid die uw server onder uw werkelijke gelijktijdigheid (concurrency) behaalt. Dit is niet het getal voor een enkele stream uit een tabel van de leverancier.
  • duty_cycle is het deel van de maand dat de GPU tokens genereert. Een server die u de hele maand huurt en twee uur per dag gebruikt, zit op 8,3%.
  • api_price_per_million is de gemeten prijs per output-token waarmee u vergelijkt.

Het voorbeeld berekent de kosten voor output-tokens aan beide kanten, omdat output de rekening voor chat- en agent-taken domineert. Als uw prompts lang zijn, voegt u input toe aan beide kanten. Aan de API-kant staat dat als een aparte regel op de factuur. Op uw eigen kaart verbruikt prefill GPU-tijd, waardoor dit al zichtbaar is als een lagere gemeten tokens_per_second.

Tokens per seconde meten voordat u op de berekening vertrouwt

Alles hierboven is gebaseerd op één gemeten getal. Als u dit met een factor drie fout heeft, is het antwoord ook met een factor drie fout. Meet het op de kaart die u huurt, met het model en de kwantisatie die u daadwerkelijk gaat draaien.

Ollama geeft u het single-stream cijfer met één commando:

ollama run qwen3:8b --verbose "Write 400 words about disk latency."

--verbose print een timing-blok na het antwoord. De regel die ertoe doet is eval rate, in tokens per seconde, die alleen de generatie telt. prompt eval rate is de prefill-snelheid en is normaal gesproken veel hoger. Uw getallen zullen afwijken van deze:

eval count:       412 token(s)
eval duration:    9.612s
eval rate:        42.86 tokens/s

Single-stream is het verkeerde getal voor een kostenmodel, omdat het één verzoek tegelijk meet op een kaart die er vele tegelijk kan bedienen. Voor het geaggregeerde cijfer bedient u het model met vLLM en leest u de doorvoer die de server over zichzelf rapporteert:

pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192

Terwijl er verzoeken in behandeling zijn, logt de server bij elk rapportage-interval een statusregel. De exacte velden veranderen tussen vLLM-releases, dus lees de uwe in plaats van de mijne:

Avg prompt throughput: 812.4 tokens/s, Avg generation throughput: 396.1 tokens/s, Running: 16 reqs, Waiting: 0 reqs, GPU KV cache usage: 21.7%

Avg generation throughput is het getal dat de formule nodig heeft. Het stijgt naarmate u meer gelijktijdige verzoeken toevoegt totdat de KV cache (key-value cache, de per-verzoek attention-status die vLLM in VRAM bijhoudt) vol is, daarna stopt het met stijgen. Als u verder pusht, komen verzoeken in de wachtrij in plaats van dat ze sneller gaan, wat u ziet als een stijgend Waiting-aantal. vLLM levert ook een load generator mee, vllm bench serve. De flags daarvan veranderen tussen versies, dus voer vllm bench serve --help uit op de versie die u heeft geïnstalleerd in plaats van een commando uit een blogpost te kopiëren.

Houd de kaart in de gaten terwijl de test draait:

nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5

Als utilization.gpu tijdens de generatie rond de 100% blijft hangen, bent u doorvoer-gebonden en is het getal dat u heeft gemeten het werkelijke plafond. Als het laag blijft, is iets anders de beperkende factor: te weinig gelijktijdige verzoeken, een trage client, of een model dat niet in VRAM past en gedeeltelijk wordt uitgeladen naar het systeem-RAM. Ollama en vLLM maken hier zeer verschillende afwegingen, en het verschil tussen beide op dezelfde kaart is groot genoeg om uw break-evenpunt met een factor van enkele malen te verschuiven.

Hoe de factuur er over een maand uitziet

Het uitgewerkte voorbeeld is één 24 GB GPU VPS voor $0,50 per uur, waarop een 8B open model wordt gedraaid via vLLM, gemeten op 400 output tokens per seconde in totaal bij 16 gelijktijdige verzoeken. De huurprijs is vast, ongeacht of u de kaart gebruikt of niet. De capaciteit bij dat tarief is 1.051 miljoen output tokens per maand; dit is wat de kaart produceert als deze nooit stopt.

ChartMonthly cost by output volume: one GPU VPS at $0.50 per hour against metered APIs (USD)
The data behind this chart
[
  {
    "output_tokens_millions": 5,
    "gpu_vps_usd": 365,
    "open_api_usd": 1,
    "small_api_usd": 25,
    "frontier_api_usd": 75
  },
  {
    "output_tokens_millions": 10,
    "gpu_vps_usd": 365,
    "open_api_usd": 2,
    "small_api_usd": 50,
    "frontier_api_usd": 150
  },
  {
    "output_tokens_millions": 25,
    "gpu_vps_usd": 365,
    "open_api_usd": 5,
    "small_api_usd": 125,
    "frontier_api_usd": 375
  },
  {
    "output_tokens_millions": 50,
    "gpu_vps_usd": 365,
    "open_api_usd": 10,
    "small_api_usd": 250,
    "frontier_api_usd": 750
  },
  {
    "output_tokens_millions": 100,
    "gpu_vps_usd": 365,
    "open_api_usd": 20,
    "small_api_usd": 500,
    "frontier_api_usd": 1500
  },
  {
    "output_tokens_millions": 250,
    "gpu_vps_usd": 365,
    "open_api_usd": 50,
    "small_api_usd": 1250,
    "frontier_api_usd": 3750
  },
  {
    "output_tokens_millions": 500,
    "gpu_vps_usd": 365,
    "open_api_usd": 100,
    "small_api_usd": 2500,
    "frontier_api_usd": 7500
  },
  {
    "output_tokens_millions": 1000,
    "gpu_vps_usd": 365,
    "open_api_usd": 200,
    "small_api_usd": 5000,
    "frontier_api_usd": 15000
  }
]

De GPU-lijn is vlak op 365 dollar, omdat de huurprijs niet afhangt van wat u met de kaart doet. Elke API-lijn is een rechte lijn door het nulpunt. Elk paar snijdt elkaar precies één keer.

Bij 25 miljoen output tokens per maand factureert de frontier API 375 dollar, waardoor de twee zijden minder dan tien dollar van elkaar verschillen. Bij 50 miljoen factureert het kleine commerciële model 250 dollar en is dit nog steeds de goedkopere optie. Bij 1000 miljoen output tokens, waarbij de kaart 95% van de maand bezet moet zijn, factureert de gehoste open-weight API 200 dollar tegenover dezelfde huurprijs. De kaart verliest met een factor van bijna twee bij het exacte volume waarop deze het hardst werkt.

Dat laatste resultaat verrast mensen, en het is geen toeval. Een gehost open-weight endpoint is een GPU-vloot die op hoge bezettingsgraad draait, dus de prijs ligt dicht bij de kosten van een verzadigde kaart. U kunt een verzadigde vloot niet verslaan door één kaart te huren en deze op minder dan volledige belasting te draaien. Wat u wel kunt verslaan, is de prijsstelling van frontier-modellen, die wordt bepaald door capaciteit in plaats van door rekentijd.

Kosten per miljoen output-tokens bij verschillende duty cycles

Volume en duty cycle zijn twee kanten van dezelfde medaille. Huurkosten worden per uur berekend. Inactieve uren leveren niets op, maar kosten wel geld.

ChartCost per million output tokens at each duty cycle (USD, list prices August 2026)
The data behind this chart
[
  {
    "label": "100% duty",
    "self_host_usd_per_million": "0.35",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "50% duty",
    "self_host_usd_per_million": "0.69",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "25% duty",
    "self_host_usd_per_million": "1.39",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "10% duty",
    "self_host_usd_per_million": "3.47",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "5% duty",
    "self_host_usd_per_million": "6.94",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  },
  {
    "label": "2% duty",
    "self_host_usd_per_million": "17.36",
    "open_api_usd_per_million": "0.20",
    "small_api_usd_per_million": "5.00",
    "frontier_api_usd_per_million": "15.00"
  }
]

De drie API-kolommen tonen de gangbare catalogusprijzen per augustus 2026: 0.20 dollar per miljoen output-tokens voor een gehost 8B open-weight model, 5.00 dollar voor een klein commercieel model, en 15.00 dollar voor een frontier-model. Deze cijfers dienen als illustratie. Controleer de actuele prijzenpagina voordat u beslissingen neemt. Indien u vergelijkt met een vast maandelijks abonnement in plaats van met verbruiksafhankelijke tokens, werkt de abonnementsberekening anders en verschuift het omslagpunt.

Bij maximaal gebruik van de kaart kosten een miljoen output-tokens 0.35 dollar, wat aanzienlijk goedkoop is. Bij een duty cycle van 10% kosten diezelfde miljoen tokens 3.47 dollar. Bij een duty cycle van 2% bedragen de kosten 17.36 dollar; dit ligt niet in dezelfde prijsklasse als de 0.20 dollar die een gehost open model rekent voor identieke output.

Onder een duty cycle van ongeveer 10% is het huren van een GPU de duurdere keuze. U betaalt 3.47 dollar per miljoen tokens voor output die voor 0.20 dollar wordt aangeboden. Wat u met het prijsverschil koopt, is privacy en een stabiele factuur. Dat kan van grote waarde zijn, maar het is geen kostenbesparing; boek het daarom niet als zodanig.

Het break-even volume voor elke API-laag

ChartBreak-even output volume per month, and the duty cycle it requires
The data behind this chart
[
  {
    "label": "Hosted open 8B API",
    "breakeven_tokens_millions": 1825,
    "required_duty_pct": 174
  },
  {
    "label": "Small commercial model",
    "breakeven_tokens_millions": 73,
    "required_duty_pct": 6.9
  },
  {
    "label": "Frontier model",
    "breakeven_tokens_millions": 24.3,
    "required_duty_pct": 2.3
  }
]

Voor de frontier-laag heeft u 24.3 miljoen output-tokens per maand nodig, wat slechts 2.3% is van de capaciteit van de kaart. Dit is een lage drempel. Een klein team dat gedurende de werkdag codeer-agents draait, haalt dit eenvoudig.

Voor de kleine commerciële laag heeft u 73 miljoen tokens per maand nodig, oftewel een duty cycle van 6.9%. Voor de gehoste open-weight laag is de vereiste duty cycle 174%. Alles boven de 100% is per definitie onhaalbaar: de kaart zou dan meer uren moeten draaien dan de maand bevat. Eén mid-range kaart kan bij dit uurtarief die vergelijking niet winnen. De enige manieren om het resultaat te veranderen zijn een goedkopere kaart, een snellere kaart, of een andere reden dan de prijs.

Wat de formule verhult

De formule berekent de prijs op basis van GPU-uren en tokens. Verschillende werkelijke kosten vallen buiten deze berekening.

Cold starts. Een 8B-model met 16-bit gewichten is ongeveer 16 GB groot; het laden vanaf de lokale schijf naar het VRAM duurt tientallen seconden. Stopt u de server tussen het gebruik door om huurkosten te besparen, dan betaalt u bij elk eerste verzoek voor die wachttijd. Laat u de server aanstaan om de wachttijd te vermijden, dan daalt uw bezettingsgraad, wat de kosten per token opdrijft. Deze afweging is precies de reden waarom serverless inference bestaat.

Opslag en download. Modelgewichten zijn omvangrijk. Een 8B-model op 16-bit is ongeveer 16 GB, een 30B-model gekwantiseerd naar 4-bit is ongeveer 18 GB, en een 30B-model op 16-bit past helemaal niet op een 24 GB-kaart. De limiet wordt snel bereikt aan de bovenkant, waar het draaien van een open model met een biljoen parameters zoals Kimi K3 betekent dat de gewichten alleen al groter zijn dan elke kaart die u per uur kunt huren. U betaalt elke maand voor die schijfruimte en u betaalt in tijd bij elke herbouw. Voer du -sh ~/.cache/huggingface/hub uit na een week experimenteren. De opslag groeit sneller dan u verwacht, omdat elke kwantisatie die u eenmaal heeft geprobeerd, nog steeds ruimte inneemt.

Uw eigen tijd. Driver- en CUDA-versies, out-of-memory-fouten bij een contextlengte die gisteren nog werkte, een modelupdate die het chat-template wijzigt. Niets hiervan verschijnt in een kosten-per-token-cijfer, maar alles wordt verrekend met uw avonduren. Als u nog niet eerder een dergelijke server heeft gedimensioneerd, is wat een GPU VPS u werkelijk biedt het lezen waard voordat u zich vastlegt aan een maand huur.

Het kwaliteitsverschil. Dit is de grootste verborgen kostenpost en de moeilijkste om te prijzen. Een 8B open model is geen frontier-model. Als het drie pogingen nodig heeft waar het frontier-model er één nodig heeft, is de werkelijke prijs per bruikbaar antwoord drie keer de waarde uit de tabel, en mogelijk faalt het alsnog voor de taak. Vergelijk op basis van uw eigen prompts voordat u op prijs vergelijkt. Voor agent-workloads is het gebruikelijke antwoord om te routeren op basis van moeilijkheidsgraad en de goedkope lokale tokens te gebruiken voor bulkwerk; dit is waar het beheersen van agent-uitgaven op een VPS grotendeels op neerkomt.

Vergeten facturen. Een GPU-instantie per uur die u heeft gestopt, blijft vaak kosten in rekening brengen voor de gekoppelde opslag en het gereserveerde IP-adres. Lees de factuur, niet de prijzenpagina.

Wanneer self-hosting wint op andere factoren dan prijs

Vier gevallen waarin de berekening niet de doorslaggevende factor is.

  • Gegevens die uw beheer niet mogen verlaten. Als een compliance-regel het verzenden van tekst naar een derde partij verbiedt, is de prijs per token niet de relevante vraag.
  • Stabiel hoog volume volgens een vast schema. Een batch-classificatietaak die elke nacht zes uur draait, heeft een inschakelduur van 25% en zorgt nooit voor verrassingen op de factuur.
  • Rate limits. Uw eigen kaart heeft één wachtrij en deze is volledig van u.
  • Een model dat door geen enkele API wordt aangeboden. Als u een specifieke fine-tune nodig heeft, is er niets om mee te vergelijken.

Als u eerst de goedkope versie wilt testen, kost het draaien van een klein model op een VPS met Ollama een middag werk, en het afstemmen van een open model op de kaart die u zou huren laat zien welke GPU u daadwerkelijk nodig heeft. Meet dit voordat u zich vastlegt voor een maand GPU-huur.

FAQ

Bij welk maandelijks tokenvolume is een GPU VPS goedkoper dan API-tarieven?

Deel de maandelijkse kosten van de GPU door de API-prijs per miljoen output-tokens. Een kaart die $365 per maand kost, afgezet tegen een frontier API van 15.00 dollar per miljoen, bereikt het break-evenpunt bij 24.3 miljoen output-tokens per maand. Bij een klein commercieel model van 5.00 dollar is dit 73 miljoen. Bij een gehost open-weight model van 0.20 dollar kan één mid-range kaart in een maand niet genoeg tokens genereren om überhaupt break-even te draaien.

Waarom kost een gehoste open-weight API minder dan mijn eigen GPU?

Omdat de prijs is vastgesteld op basis van de kosten van een volledig benutte GPU, terwijl uw kaart niet volledig wordt benut. Een provider die duizenden gelijktijdige verzoeken afhandelt, houdt zijn vloot nabij verzadiging, waardoor tokens tegen de marginale productiekosten kunnen worden verkocht. Uw kaart is het grootste deel van de dag inactief en u betaalt voor de inactieve uren. Bij een duty cycle van 10% bedragen uw kosten 3.47 dollar per miljoen output-tokens, tegenover hun 0.20 dollar.

Moet ik zowel input- als output-tokens meetellen?

Tel ze mee als uw prompts lang zijn. De vergelijking hier gebruikt alleen output-tokens, wat de dominante factor is voor chat- en agent-taken. Het toevoegen van input verandert beide kanten. Aan de API-kant is dit een aparte, goedkopere post op de factuur. Op uw eigen kaart verbruikt prefill GPU-tijd, dus de kosten zitten al verwerkt in het totale aantal tokens per seconde dat u heeft gemeten. Meet met uw werkelijke promptlengtes, dan blijven beide kanten vergelijkbaar.

Hoe meet ik de tokens per seconde die de formule vereist?

Draai het model op de manier waarop u het gaat gebruiken en lees vervolgens de totale generatiesnelheid af onder werkelijke gelijktijdigheid. Bij Ollama print ollama run <model> --verbose een eval rate in tokens per seconde, maar dat is een enkele stream en onderschat een server die batches verwerkt. Bij vLLM logt de draaiende server Avg generation throughput terwijl er verzoeken in behandeling zijn; dat is het cijfer dat u moet gebruiken. Monitor tegelijkertijd nvidia-smi. Als de GPU-benutting tijdens het genereren niet in de buurt van 100% ligt, heeft u het maximum nog niet bereikt.

Is een GPU VPS het huren waard bij een benutting onder de 10%?

Niet op basis van prijs. Bij een duty cycle van 10% betaalt u 3.47 dollar per miljoen output-tokens, en bij 2% betaalt u 17.36 dollar. Beide liggen boven elk gemeten API-tarief in deze vergelijking, met uitzondering van de frontier-tier. Huur alleen onder die grens als u betaalt voor privacy of voor een model dat door geen enkele API wordt aangeboden.