GPU VPS o API a token: il punto di pareggio
Scopri la formula del pareggio tra VPS GPU e API a token, con il costo di $0.50 l’ora e il volume mensile di output che cambia la scelta.
Dove si trova realmente il punto di pareggio
Un VPS con GPU supera la fatturazione API per token in un punto preciso: quando il costo mensile fisso, diviso per i token di output generati effettivamente nel mese, scende al di sotto del costo applicato dall'API per gli stessi token. Il canone non cambia. La fattura dell'API varia a ogni richiesta. La risposta è quindi sempre un volume mensile, mai un semplice sì o no.
Consideriamo un VPS con GPU di fascia media al costo di $0.50 all'ora, pari a $365 per un mese di 730 ore. Rispetto all'API di un modello frontier, il punto di pareggio è a 24.3 milioni di token di output al mese. Rispetto a un modello commerciale di piccole dimensioni è a 73 milioni. Rispetto a un modello open-weight ospitato delle stesse dimensioni non si raggiunge mai il pareggio, perché una sola scheda non può generare abbastanza token in un mese per raggiungere il punto di intersezione.
Gli studi pubblicati sul punto di pareggio non rispondono a questa domanda. Due studi pubblicati all'inizio del 2026 collocano il punto di intersezione vicino al 72% di utilizzo sostenuto su un H200 e tra il 22% e il 48% di duty cycle su un MI300X. Entrambi fanno il confronto con il prodotto serverless dello stesso fornitore ed entrambi considerano acceleratori con un costo orario superiore a quello che la maggior parte dei lettori qui spende in un mese. L'aritmetica è identica. Di seguito la ricalcoliamo per una sola scheda, un solo modello open nella fascia da 7B a 30B e una normale fatturazione API a consumo.
Ogni numero riportato di seguito è un input, non un risultato. Sostituiscili tutti con i tuoi valori.
La formula, da usare sostituendo i propri valori
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_monthServono quattro valori, che è possibile misurare o recuperare.
hourly_rateè il costo orario della GPU VPS, incluse le ore in cui resta inattiva. Se il pagamento è mensile, dividere il prezzo mensile per 730.tokens_per_secondè la velocità di output complessiva che il server mantiene con il livello reale di concorrenza. Non corrisponde al valore per un singolo flusso riportato nei grafici del fornitore.duty_cycleè la frazione del mese durante la quale la GPU genera token. Un server noleggiato per tutto il mese e usato due ore al giorno ha un utilizzo dell'8.3%.api_price_per_millionè il prezzo a consumo usato come riferimento, per i token di output.
Nell'esempio, il prezzo dei token di output viene calcolato per entrambe le opzioni, perché nell'uso di chat e agenti sono quelli che incidono maggiormente sul costo. Se i prompt sono lunghi, aggiungere i token di input a entrambi i lati. Per l'API, il relativo costo compare come voce separata in fattura. Sul proprio server, il prefill consuma tempo GPU, quindi è già incluso in un valore tokens_per_second misurato più basso.
Come misurare i token al secondo prima di fidarsi dei calcoli
Tutto quanto sopra si basa su un unico valore misurato. Se è errato di un fattore tre, anche il risultato sarà errato di un fattore tre. Misuratelo sulla scheda che state noleggiando, con il modello e la quantizzazione che userete realmente.
Ollama fornisce il valore per un singolo flusso con un solo comando:
ollama run qwen3:8b --verbose "Write 400 words about disk latency."--verbose stampa un blocco con i tempi dopo la risposta. La riga importante è eval rate, espressa in token al secondo, che conta soltanto la generazione. prompt eval rate indica la velocità di prefill ed è normalmente molto più alta. I vostri valori saranno diversi da questi:
eval count: 412 token(s)
eval duration: 9.612s
eval rate: 42.86 tokens/sIl singolo flusso non è il valore corretto per un modello dei costi, perché misura una richiesta alla volta su una scheda che può gestirne molte contemporaneamente. Per ottenere il valore aggregato, servite il modello con vLLM e leggete il throughput che il server riporta:
pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192Mentre le richieste sono in esecuzione, il server registra una riga di stato a ogni intervallo di reporting. I campi esatti cambiano tra le release di vLLM, quindi consultate quelli del vostro ambiente anziché i miei:
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 è il valore richiesto dalla formula. Aumenta quando aggiungete richieste concorrenti, finché la KV cache (cache key-value, cioè lo stato di attenzione per richiesta che vLLM mantiene nella VRAM) è piena; quindi smette di aumentare. Se superate questo limite, le richieste entrano in coda invece di essere gestite più velocemente, come mostra l'aumento del contatore Waiting. vLLM include anche un generatore di carico, vllm bench serve. I relativi flag cambiano tra le versioni, quindi eseguite vllm bench serve --help sulla versione installata invece di copiare un comando da un post di blog.
Monitorate la scheda durante il test:
nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5Se utilization.gpu rimane vicino al 100% durante la generazione, siete limitati dal throughput e il valore misurato rappresenta il limite effettivo. Se rimane basso, il limite è un altro: un numero insufficiente di richieste concorrenti, un client lento oppure un modello che non entra nella VRAM e viene in parte scaricato nella RAM di sistema. Ollama e vLLM adottano compromessi molto diversi in questo ambito, e la differenza tra i due sulla stessa scheda è abbastanza ampia da spostare il punto di pareggio di un fattore pari a diversi multipli.
Come appare la fattura nell’arco di un mese
L’esempio considera una VPS GPU da 24 GB al costo di $0.50 l’ora, con un modello open da 8B servito tramite vLLM, misurato a 400 token di output al secondo complessivi con 16 richieste simultanee. Il costo di noleggio è fisso, indipendentemente dall’utilizzo della scheda. A questa velocità, la capacità è di 1,051 milioni di token di output al mese, cioè la quantità prodotta dalla scheda se non si arresta mai.
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
}
]La voce GPU è fissa a 365 dollari, perché il costo di noleggio non dipende dall’utilizzo della scheda. Ogni voce API è una retta che passa per lo zero. Ogni coppia si interseca una sola volta.
Con 25 milioni di token di output al mese, l’API frontier fattura 375 dollari, quindi le due opzioni differiscono di meno di dieci dollari. Con 50 milioni, il modello commerciale di piccole dimensioni fattura 250 dollari e resta l’opzione meno costosa. A 1000 milioni di token di output, un volume che richiede alla scheda di essere occupata per il 95% del mese, l’API con modello open con pesi disponibili fattura 200 dollari, a fronte dello stesso costo di noleggio. La scheda è quasi due volte più costosa proprio al volume in cui lavora al massimo.
Quest’ultimo risultato sorprende, ma non è casuale. Un endpoint con modello open con pesi disponibili ospitato è una flotta di GPU eseguita con un’elevata utilizzazione, quindi il suo prezzo è vicino al costo di una scheda saturata. Non si può battere una flotta saturata noleggiando una sola scheda e utilizzandola a un carico inferiore al massimo. Si può invece battere il prezzo dei modelli frontier, determinato dalle capacità del modello e non dal tempo di utilizzo del silicio.
Costo per milione di token di output a ogni livello di utilizzo
Il volume e il livello di utilizzo descrivono lo stesso dato da due punti di vista. Il noleggio acquista ore. Le ore di inattività non producono nulla, ma hanno comunque un costo.
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"
}
]Le tre colonne relative alle API riportano prezzi di listino pubblicati tipici ad agosto 2026: 0.20 dollari per milione di token di output per un modello open-weight 8B in hosting, 5.00 dollari per un modello commerciale di piccole dimensioni e 15.00 dollari per un modello frontier. Sono valori illustrativi. Verifica la pagina dei prezzi aggiornata prima di prendere una decisione. Se il confronto riguarda un piano mensile fisso invece dei token a consumo, il calcolo dell'abbonamento funziona in modo diverso e il punto di pareggio cambia ancora.
Usando la scheda alla massima capacità, un milione di token di output costa 0.35 dollari, quindi il costo è effettivamente basso. Con un livello di utilizzo del 10%, lo stesso milione costa 3.47 dollari. Con un livello di utilizzo del 2%, costa 17.36 dollari. Questo valore è molto distante dai 0.20 dollari richiesti da un modello open in hosting per lo stesso output.
Al di sotto di un livello di utilizzo di circa il 10%, noleggiare una GPU è la scelta più costosa. Paghi 3.47 dollari per milione di token per un output venduto a 0.20 dollari. La differenza ti garantisce privacy e una spesa che non varia. Questi vantaggi possono avere un valore concreto. Non rappresentano però un risparmio sul prezzo, quindi non considerarli tali.
Il volume di pareggio per ogni livello API
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
}
]Rispetto al livello frontier, servono 24.3 milioni di token di output al mese, pari ad appena 2.3% di ciò che la scheda è in grado di elaborare. È una soglia bassa. Un piccolo team che esegue agenti di coding durante la giornata lavorativa la supera facilmente.
Rispetto al livello commerciale più economico, servono 73 milioni di token al mese, pari a un ciclo di utilizzo del 6.9%. Rispetto al livello hosted open-weight, il ciclo di utilizzo richiesto è del 174%. Un valore superiore al 100% è irraggiungibile per definizione: la scheda dovrebbe funzionare per un numero di ore superiore a quello contenuto nel mese. Una scheda di fascia media a questa tariffa oraria non può prevalere in questo confronto. Per cambiare il risultato servono quindi una scheda più economica, una scheda più veloce oppure una motivazione diversa dal prezzo.
Cosa nasconde la formula
La formula calcola il costo delle ore GPU e dei token. Diversi costi reali restano esclusi.
Avvii a freddo. Un modello 8B con pesi a 16 bit occupa circa 16 GB e il caricamento dal disco locale nella VRAM richiede decine di secondi. Se arresti la macchina tra un utilizzo e l'altro per ridurre il costo del noleggio, devi attendere questo tempo alla prima richiesta di ogni sessione. Se la lasci in esecuzione per evitare l'attesa, il duty cycle crolla e il costo per token aumenta. Questo compromesso è il motivo principale per cui esiste l'inferenza serverless.
Archiviazione e download. I pesi occupano molto spazio. Un modello 8B a 16 bit occupa circa 16 GB, un modello 30B quantizzato a 4 bit circa 18 GB, mentre un modello 30B a 16 bit non entra affatto in una scheda da 24 GB. Paghi quello spazio disco ogni mese e paghi il tempo necessario a ogni ricostruzione dell'ambiente. Esegui du -sh ~/.cache/huggingface/hub dopo una settimana di esperimenti. Lo spazio cresce più rapidamente del previsto, perché ogni quantizzazione provata anche una sola volta resta ancora memorizzata.
Il tuo tempo. Versioni dei driver e di CUDA, errori di memoria insufficiente a una lunghezza del contesto che il giorno precedente funzionava, aggiornamenti del modello che modificano il chat template. Nulla di tutto questo compare in una cifra relativa al costo per token, ma tutto viene sottratto alle tue serate. Se non hai mai dimensionato una di queste macchine, vale la pena leggere cosa offre realmente un GPU VPS prima di impegnarti per un mese di noleggio.
Il divario di qualità. Questo è il costo nascosto maggiore e il più difficile da quantificare. Un modello open 8B non è un modello frontier. Se richiede tre tentativi quando al modello frontier ne basta uno, il suo costo reale per risposta utile è tre volte quello indicato nella tabella e potrebbe comunque non riuscire a completare l'attività. Confronta i risultati sui tuoi prompt prima di confrontare i prezzi. Per i carichi di lavoro con agenti, la soluzione abituale consiste nel distribuire le richieste in base alla difficoltà e riservare i token locali economici alle attività in massa. È questo, nella maggior parte dei casi, il significato di controllare la spesa degli agenti su un VPS.
Addebiti dimenticati. Un'istanza GPU oraria che hai arrestato spesso continua a generare addebiti per lo storage associato e per l'indirizzo IP riservato. Leggi la fattura, non la pagina dei prezzi.
Quando il self-hosting conviene per motivi diversi dal prezzo
Quattro casi in cui il calcolo dei costi non è il fattore decisivo.
- Dati che non possono uscire dal tuo controllo. Se una regola di conformità vieta di inviare il testo a terze parti, il prezzo per token non è la domanda rilevante.
- Volumi elevati e costanti secondo una pianificazione. Un job di classificazione batch che viene eseguito per sei ore ogni notte ha, per definizione, un tasso di utilizzo del 25% e non genera mai una fattura inattesa.
- Limiti di frequenza. La tua scheda ha una sola coda, che appartiene a te.
- Un modello non disponibile tramite API. Se ti serve un fine-tune specifico, non c'è nulla con cui fare un confronto.
Se vuoi prima provare la versione economica, eseguire un modello di piccole dimensioni su un VPS con Ollama richiede un pomeriggio, mentre dimensionare un modello open rispetto alla scheda che prenderesti a noleggio ti indica quale GPU ti serve davvero. Fai le misurazioni in questa fase, prima di sottoscrivere un mese di noleggio della GPU.
FAQ
A partire da quale volume mensile di token una GPU VPS è più conveniente rispetto ai prezzi delle API?
Dividi il costo mensile della GPU per il prezzo dell'API per milione di token generati. Una scheda il cui noleggio costa 365 $ al mese, rispetto a un'API frontier a 15.00 dollari per milione, raggiunge il punto di pareggio a 24.3 milioni di token generati al mese. Rispetto a un modello commerciale di piccole dimensioni a 5.00 dollari, il valore è 73 milioni. Rispetto a un modello open-weight ospitato a 0.20 dollari, una singola scheda di fascia media non può generare abbastanza token in un mese per raggiungere il punto di pareggio.
Perché un'API open-weight ospitata costa meno della mia GPU?
Perché il suo prezzo è vicino al costo di una GPU utilizzata a pieno, mentre la tua scheda non è utilizzata a pieno. Un provider che gestisce migliaia di richieste simultanee mantiene la propria flotta vicina alla saturazione e può quindi vendere i token a un prezzo prossimo al costo marginale di produzione. La tua scheda resta inattiva per gran parte della giornata, ma paghi anche le ore di inattività. Con un duty cycle del 10%, il costo è 3.47 dollari per milione di token generati, rispetto ai 0.20 dollari del provider.
Devo conteggiare anche i token di input oltre a quelli di output?
Conteggiali se i prompt sono lunghi. Il confronto in questo caso usa soltanto i token di output, che rappresentano la componente principale per le chat e le attività eseguite dagli agenti. Aggiungendo i token di input cambiano entrambi i termini del confronto. Sul lato API, sono una voce separata e meno costosa in fattura. Sulla tua scheda, il prefill utilizza tempo GPU, quindi il relativo costo è già incluso nel numero aggregato di token al secondo che hai misurato. Esegui la misurazione con le lunghezze reali dei tuoi prompt per mantenere confrontabili i due valori.
Come misuro i token al secondo richiesti dalla formula?
Eroga il modello nel modo in cui lo utilizzerai, quindi leggi la velocità aggregata di generazione con un livello reale di concorrenza. Con Ollama, ollama run <model> --verbose stampa un eval rate in token al secondo, ma si tratta di un singolo flusso e il valore è inferiore a quello di un server con elaborazione batch. Con vLLM, il server in esecuzione registra Avg generation throughput mentre le richieste sono in elaborazione; questo è il valore da utilizzare. Monitora contemporaneamente nvidia-smi. Se l'utilizzo della GPU non è vicino al 100% durante la generazione, non hai ancora raggiunto il limite massimo.
Conviene noleggiare una GPU VPS con un utilizzo inferiore al 10%?
Non dal punto di vista del prezzo. Con un duty cycle del 10% paghi 3.47 dollari per milione di token generati, mentre al 2% paghi 17.36 dollari. Entrambi i valori sono superiori a quelli di tutte le API con tariffazione a consumo considerate in questo confronto, tranne il livello frontier. Noleggia una GPU al di sotto di questa soglia soltanto se stai pagando per la privacy o per un modello che nessuna API offre.