GPU VPS o API: il punto di pareggio
Scopri la formula del pareggio tra GPU VPS e API a token, con il volume mensile preciso in cui il canone fisso diventa più conveniente.
Dove si trova realmente il punto di pareggio
Un VPS con GPU supera la fatturazione API a token in un punto preciso: quando il canone 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 resta invariato. Il costo 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 a $0.50 all'ora, pari a $365 per un mese di 730 ore. Rispetto all'API di un modello frontier, il punto di pareggio si raggiunge a 24.3 milioni di token di output al mese. Rispetto a un modello commerciale di dimensioni ridotte, il valore è 73 milioni. Rispetto a un modello open-weight ospitato delle stesse dimensioni non si raggiunge mai il punto di pareggio, perché una sola scheda non può generare in un mese un numero di token sufficiente a 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 confrontano il costo con il prodotto serverless dello stesso vendor ed entrambi considerano acceleratori il cui costo orario supera quello che la maggior parte dei lettori qui spende in un mese. Il calcolo è identico. Di seguito lo ricalcoliamo per una scheda, un modello open nella fascia da 7B a 30B e la normale fatturazione API a consumo.
Ogni numero riportato di seguito è un input, non un risultato. Sostituiscili tutti con i tuoi valori.
La formula, per sostituire i valori con i propri
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 del GPU VPS, comprese le ore in cui resta inattivo. Se il pagamento è mensile, dividere il prezzo mensile per 730.tokens_per_secondè il tasso di output complessivo che il server mantiene con il livello di concorrenza effettivo. Non è il valore relativo a 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 utilizzato due ore al giorno ha un utilizzo dell'8.3%.api_price_per_millionè il prezzo fatturato che si usa per il confronto, relativo ai token di output.
Nell'esempio, il confronto considera i token di output su entrambi i lati, 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, questa voce compare separatamente in fattura. Sul proprio server, il prefill utilizza tempo GPU e viene quindi già riflesso 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 solo la generazione. prompt eval rate è la velocità di prefill e 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 riportato dal server:
pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192Mentre le richieste sono in elaborazione, il server registra una riga di stato a ogni intervallo previsto. I campi esatti cambiano tra le release di vLLM, quindi leggete quelli del vostro ambiente anziché quelli del mio:
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 simultanee, fino a quando la KV cache (key-value cache, lo stato dell'attenzione per richiesta che vLLM mantiene nella VRAM) è piena; poi smette di aumentare. Se superate questo limite, le richieste vengono accodate invece di essere elaborate più velocemente, come mostra l'aumento del conteggio 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 un blog.
Monitorate la scheda durante il test:
nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5Se utilization.gpu resta vicino al 100% durante la generazione, siete limitati dal throughput e il valore misurato rappresenta il limite effettivo. Se resta basso, il limite è altrove: un numero insufficiente di richieste simultanee, 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 si presenta la fattura nell'arco di un mese
L'esempio calcolato usa una GPU VPS da 24 GB al costo di $0.50 all'ora, un modello open da 8B servito tramite vLLM, con una velocità misurata complessiva di 400 token di output al secondo e 16 richieste simultanee. Il canone resta invariato, 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 relativa alla GPU è fissa a 365 dollari, perché il canone 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 più economica. A 1000 milioni di token di output, un volume che richiede di mantenere la scheda occupata per il 95% del mese, l'API con pesi open fattura 200 dollari, a fronte dello stesso canone. La scheda risulta quasi due volte più costosa proprio al volume in cui lavora più intensamente.
Quest'ultimo risultato sorprende, ma non è casuale. Un endpoint con pesi open gestito da un provider è una flotta di GPU utilizzata ad alta intensità, quindi il suo prezzo è vicino al costo di una scheda satura. Non si può battere una flotta satura noleggiando una sola scheda e utilizzandola a un livello inferiore alla capacità massima. 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 duty cycle
Il volume e il duty cycle sono lo stesso dato osservato da due prospettive. 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 i tipici prezzi di listino pubblicati ad agosto 2026: 0.20 dollari per milione di token di output per un modello open-weight 8B ospitato, 5.00 dollari per un modello commerciale di piccole dimensioni e 15.00 dollari per un modello frontier. Sono valori illustrativi. Verifica il listino aggiornato prima di prendere qualsiasi decisione. Se il confronto viene fatto con un piano mensile a tariffa fissa anziché con token a consumo, il calcolo dell'abbonamento funziona in modo diverso e il punto di pareggio cambia ancora.
Usando la scheda al massimo, un milione di token di output costa 0.35 dollari, un valore realmente basso. Con un duty cycle del 10%, lo stesso milione costa 3.47 dollari. Con un duty cycle del 2%, costa 17.36 dollari, un importo che non è paragonabile ai 0.20 dollari applicati da un modello open ospitato per lo stesso output.
Al di sotto di un duty cycle 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 offre privacy e una fattura che non varia. Questi vantaggi possono avere un valore economico 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 può gestire. È una soglia bassa. Un piccolo team che esegue agenti di coding durante la giornata lavorativa la supera senza difficoltà.
Rispetto al livello commerciale di fascia bassa, 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 più ore di quante ne contenga il mese. Una scheda di fascia media, a questa tariffa oraria, non può prevalere in questo confronto. Le uniche possibilità per cambiare il risultato sono 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 alla VRAM richiede decine di secondi. Se arresti la macchina tra un utilizzo e l'altro per risparmiare sul noleggio, paghi questa attesa alla prima richiesta ogni volta. 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 e un modello 30B a 16 bit non entra affatto in una scheda da 24 GB. Il limite diventa rapidamente evidente per i modelli di fascia alta: eseguire un modello open con un trilione di parametri come Kimi K3 significa che i soli pesi superano la capacità di qualsiasi singola scheda che puoi noleggiare a ore. Paghi quello spazio su disco ogni mese e paghi in tempo a ogni ricostruzione dell'ambiente. Esegui du -sh ~/.cache/huggingface/hub dopo una settimana di esperimenti. Cresce più rapidamente del previsto, perché ogni quantizzazione provata una volta è ancora presente.
Il tuo tempo. Versioni dei driver e di CUDA, errori di memoria esaurita con una lunghezza del contesto che il giorno prima funzionava, un aggiornamento del modello che modifica il template della chat. Nulla di tutto questo compare in una cifra relativa al costo per token, ma tutto viene addebitato 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 mentre il modello frontier ne richiede uno, il suo prezzo reale per risposta utile è tre volte quello indicato nel grafico e potrebbe comunque non completare l'attività. Confronta i modelli sui tuoi prompt prima di confrontarne il prezzo. Per i carichi di lavoro degli agenti, la soluzione usuale consiste nell'instradare le richieste in base alla difficoltà e riservare i token locali economici alle attività in blocco. In gran parte, controllare la spesa degli agenti su un VPS significa proprio questo.
La fatturazione che hai dimenticato. Un'istanza GPU oraria che hai arrestato spesso continua a generare costi 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 terzi, il prezzo per token non è la domanda da porsi.
- Volumi elevati e costanti secondo una pianificazione. Un processo batch di classificazione che viene eseguito per sei ore ogni notte ha per definizione un duty cycle del 25% e non genera mai sorprese in fattura.
- Limiti di frequenza. La tua scheda ha una sola coda, che appartiene a te.
- Un modello che nessuna API offre. Se ti serve un fine-tuning specifico, non c'è nulla con cui fare un confronto.
Se vuoi provare prima la versione più economica, eseguire un modello di piccole dimensioni su un VPS con Ollama richiede un pomeriggio, mentre dimensionare un modello open rispetto alla scheda che noleggeresti ti indica quale GPU ti serve realmente. Fai le misurazioni in questa fase prima di sottoscrivere un mese di noleggio di una GPU.
FAQ
Con quale volume mensile di token una GPU VPS diventa più conveniente rispetto ai prezzi delle API?
Dividi il costo mensile della GPU per il prezzo dell'API per un milione di token di output. Una scheda con un canone di 365 $ al mese, rispetto a un'API frontier a 15.00 dollari per milione, raggiunge il pareggio a 24.3 milioni di token di output al mese. Rispetto a un modello commerciale di piccole dimensioni a 5.00 dollari, il valore è 73 milioni. Rispetto a un modello open-weight gestito a 0.20 dollari, una singola scheda di fascia media non può generare in un mese un numero di token sufficiente a raggiungere il pareggio.
Perché un'API open-weight gestita costa meno della mia GPU?
Perché il prezzo è fissato 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 infrastruttura vicina alla saturazione. Per questo può vendere i token a un prezzo vicino al costo marginale di produzione. La tua scheda resta inattiva per gran parte della giornata, ma paghi comunque le ore di inattività. Con un duty cycle del 10%, il tuo costo è di 3.47 dollari per milione di token di output, 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 riportato qui usa soltanto i token di output, che rappresentano la componente principale nei flussi di chat e nelle attività degli agenti. Aggiungere i token di input modifica entrambi i lati del confronto. Sul lato API, questa voce è separata e ha un prezzo inferiore in fattura. Sulla tua scheda, il prefill consuma tempo GPU. Il relativo costo è quindi già incluso nel numero aggregato di token al secondo che hai misurato. Esegui la misurazione con prompt della lunghezza effettiva che utilizzi. In questo modo i due valori restano confrontabili.
Come misuro i token al secondo richiesti dalla formula?
Esegui il modello nel modo in cui lo utilizzerai, quindi leggi la velocità aggregata di generazione in condizioni di concorrenza reali. Con Ollama, ollama run <model> --verbose stampa un valore eval rate in token al secondo. Tuttavia, si tratta di un singolo flusso e il valore è inferiore a quello di un server che elabora richieste in batch. Con vLLM, il server in esecuzione registra Avg generation throughput mentre ci sono richieste attive. È questo il valore da usare. 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'utilizzazione inferiore al 10%?
Non in termini di prezzo. Con un duty cycle del 10% paghi 3.47 dollari per milione di token di output. Con il 2% paghi 17.36 dollari. Entrambi i valori sono superiori a quelli di ogni API a consumo inclusa in questo confronto, ad eccezione del livello frontier. Noleggia una GPU al di sotto di quella soglia soltanto quando stai pagando per la privacy o per un modello che nessuna API offre.