GPU VPS czy API: kiedy wynajem serwera staje się tańszy
Analiza progu rentowności między wynajmem GPU VPS a płatnością za tokeny API. Sprawdź dokładne wyliczenia miesięcznego wolumenu, przy którym własna infrastruktura generuje oszczędności.
Gdzie faktycznie znajduje się próg rentowności
GPU VPS przewyższa rozliczenia API za token w jednym przypadku: gdy stały miesięczny czynsz, podzielony przez liczbę wygenerowanych w danym miesiącu tokenów wyjściowych, spada poniżej kosztów naliczanych przez API za tę samą liczbę tokenów. Czynsz pozostaje stały. Rachunek za API rośnie wraz z każdym żądaniem. Odpowiedź zawsze zależy od miesięcznego wolumenu, a nie od prostego tak lub nie.
Obliczenia dla średniej klasy GPU VPS w cenie $0.50 za godzinę, co daje $365 za miesiąc liczący 730 godzin. W porównaniu z API modelu klasy frontier, próg rentowności osiąga się przy 24.3 milionach tokenów wyjściowych miesięcznie. W przypadku małego modelu komercyjnego jest to {{q:breakeven_tokens_millions@1}} milionów. W starciu z hostowanym modelem o otwartych wagach tej samej wielkości próg rentowności nigdy nie zostanie osiągnięty, ponieważ jedna karta nie jest w stanie wygenerować wystarczającej liczby tokenów w miesiącu, aby przekroczyć punkt opłacalności.
Opublikowane analizy progu rentowności nie odpowiadają na to pytanie. Dwie z nich, pochodzące z początku 2026 roku, określają punkt przecięcia w okolicach 72% stałego wykorzystania dla H200 oraz między 22% a 48% cyklu pracy dla MI300X. Obie porównują wyniki z produktem typu serverless tego samego dostawcy i obie dotyczą akceleratorów, których koszt za godzinę przewyższa miesięczne wydatki większości czytelników. Arytmetyka pozostaje identyczna. Poniżej przedstawiono ponowne obliczenia dla jednej karty, jednego otwartego modelu z zakresu 7B do 30B oraz standardowego rozliczenia API według zużycia.
Każda poniższa liczba jest daną wejściową, a nie wynikiem. Należy zastąpić je własnymi wartościami.
Wzór umożliwiający podstawienie własnych wartości
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_monthCztery dane wejściowe, z których wszystkie można zmierzyć lub sprawdzić.
hourly_rateto koszt GPU VPS za godzinę, uwzględniający czas bezczynności. W przypadku płatności miesięcznych należy podzielić cenę przez 730.tokens_per_secondto łączna szybkość generowania tokenów utrzymywana przez serwer przy rzeczywistym obciążeniu. Nie jest to wartość dla pojedynczego strumienia podawana w specyfikacji dostawcy.duty_cycleto ułamek miesiąca, w którym GPU faktycznie generuje tokeny. Serwer wynajmowany przez cały miesiąc, używany przez dwie godziny dziennie, osiąga wartość 8,3%.api_price_per_millionto cena za tokeny wyjściowe w usłudze, do której porównujesz własne rozwiązanie.
Przykład uwzględnia ceny tokenów wyjściowych po obu stronach, ponieważ to one stanowią główny koszt w pracy czatów i agentów. Jeśli używasz długich promptów, dodaj tokeny wejściowe do obu stron zestawienia. W przypadku API jest to osobna pozycja na fakturze. Własna infrastruktura przetwarza prompt (prefill), co zużywa czas GPU, więc jest to już uwzględnione w niższej zmierzonej wartości tokens_per_second.
Jak zmierzyć liczbę tokenów na sekundę przed zaufaniem obliczeniom
Wszystko powyżej opiera się na jednej zmierzonej wartości. Błąd w pomiarze rzędu trzech oznacza błędny wynik końcowy o ten sam współczynnik. Pomiaru należy dokonać na wynajmowanej karcie, używając modelu i kwantyzacji, które będą faktycznie uruchamiane.
Ollama pozwala uzyskać wartość dla pojedynczego strumienia za pomocą jednego polecenia:
ollama run qwen3:8b --verbose "Write 400 words about disk latency."--verbose wyświetla blok czasowy po wygenerowaniu odpowiedzi. Istotna jest linia eval rate, podająca liczbę tokenów na sekundę, która uwzględnia wyłącznie generowanie. prompt eval rate to szybkość prefill, która zazwyczaj jest znacznie wyższa. Uzyskane wartości będą różnić się od poniższych:
eval count: 412 token(s)
eval duration: 9.612s
eval rate: 42.86 tokens/sPojedynczy strumień nie jest właściwą wartością dla modelu kosztów, ponieważ mierzy jedno żądanie na raz na karcie zdolnej do obsługi wielu żądań jednocześnie. Aby uzyskać wartość zagregowaną, należy uruchomić model za pomocą vLLM i odczytać przepustowość raportowaną przez serwer:
pip install vllm
vllm serve Qwen/Qwen3-8B --max-model-len 8192Podczas przetwarzania żądań serwer loguje linię stanu w każdym interwale raportowania. Dokładne nazwy pól zmieniają się między wydaniami vLLM, dlatego należy czytać własne logi, a nie przykłady.
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 to wartość wymagana przez wzór. Rośnie ona wraz z dodawaniem współbieżnych żądań, aż do momentu zapełnienia pamięci podręcznej KV (key-value cache, stan uwagi dla każdego żądania przechowywany przez vLLM w VRAM), po czym przestaje rosnąć. Dalsze zwiększanie obciążenia powoduje kolejkowanie żądań zamiast przyspieszenia ich przetwarzania, co objawia się wzrostem licznika Waiting. vLLM zawiera również generator obciążenia, vllm bench serve. Jego flagi zmieniają się między wersjami, dlatego należy uruchomić vllm bench serve --help dla zainstalowanej wersji, zamiast kopiować polecenie z wpisu na blogu.
Monitoruj kartę podczas trwania testu:
nvidia-smi --query-gpu=utilization.gpu,memory.used,power.draw --format=csv -l 5Jeśli utilization.gpu utrzymuje się w pobliżu 100% podczas generowania, oznacza to ograniczenie przepustowości, a zmierzona wartość jest rzeczywistym limitem. Jeśli wartość pozostaje niska, ograniczenie wynika z czegoś innego: zbyt małej liczby współbieżnych żądań, wolnego klienta lub modelu, który nie mieści się w VRAM i jest częściowo przenoszony do pamięci RAM systemu. Ollama i vLLM stosują tutaj zupełnie inne kompromisy, a różnica między nimi na tej samej karcie jest wystarczająco duża, aby zmienić punkt rentowności o kilkukrotność.
Jak wygląda rachunek w skali miesiąca
Przykład obliczeniowy dotyczy jednego serwera VPS z GPU 24 GB w cenie 0.50 USD za godzinę, obsługującego otwarty model 8B za pomocą vLLM, przy wydajności 400 tokenów wyjściowych na sekundę łącznie dla 16 jednoczesnych żądań. Opłata za wynajem jest stała, niezależnie od wykorzystania karty. Przepustowość przy takim tempie wynosi 1051 milionów tokenów wyjściowych miesięcznie; jest to wartość, którą karta osiąga przy pracy ciągłej.
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
}
]Linia kosztów GPU jest płaska i wynosi 365 dolarów, ponieważ opłata za wynajem nie zależy od sposobu wykorzystania karty. Każda linia API jest linią prostą przechodzącą przez zero. Każda para przecina się dokładnie w jednym punkcie.
Przy 25 milionach tokenów wyjściowych miesięcznie API modelu klasy frontier kosztuje 375 dolarów, więc obie strony różnią się kwotą poniżej dziesięciu dolarów. Przy 50 milionach tokenów mały model komercyjny kosztuje 250 dolarów i nadal pozostaje tańszą opcją. Przy 1000 milionach tokenów wyjściowych, co wymaga obciążenia karty na poziomie 95% czasu w miesiącu, hostowane API z otwartymi wagami kosztuje 200 dolarów w porównaniu do tej samej opłaty za wynajem. Karta przegrywa niemal dwukrotnie przy wolumenie, w którym pracuje najciężej.
Ten ostatni wynik zaskakuje, ale nie jest przypadkowy. Hostowany punkt końcowy z otwartymi wagami to flota GPU działająca przy wysokim wykorzystaniu, więc jego cena jest zbliżona do kosztu nasyconej karty. Nie można przebić cenowo nasyconej floty, wynajmując jedną kartę i uruchamiając ją przy niepełnym obciążeniu. Można natomiast przebić ceny modeli klasy frontier, które są ustalane na podstawie możliwości, a nie czasu pracy krzemu.
Koszt miliona tokenów wyjściowych przy danym cyklu pracy
Wolumen i cykl pracy to dwa aspekty tego samego zjawiska. Wynajem opłaca się godzinowo. Bezczynne godziny nie generują wartości, a mimo to kosztują.
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"
}
]Trzy kolumny API przedstawiają typowe ceny katalogowe z sierpnia 2026 roku: 0.20 dolarów za milion tokenów wyjściowych dla hostowanego modelu open-weight 8B, 5.00 dolarów dla małego modelu komercyjnego oraz 15.00 dolarów dla modelu klasy frontier. Są to wartości poglądowe. Przed podjęciem decyzji należy sprawdzić aktualny cennik. Jeśli porównanie dotyczy stałego abonamentu miesięcznego, a nie rozliczania za tokeny, rachunek subskrypcyjny wygląda inaczej i punkt opłacalności ulega przesunięciu.
Przy pełnym obciążeniu karty koszt miliona tokenów wyjściowych wynosi 0.35 dolarów, co jest kwotą bardzo niską. Przy cyklu pracy wynoszącym 10% ten sam milion kosztuje 3.47 dolarów. Przy cyklu pracy 2% koszt rośnie do 17.36 dolarów, co nie mieści się w tym samym przedziale, co 0.20 dolarów pobierane przez hostowany model otwarty za identyczny wynik.
Poniżej poziomu około 10% cyklu pracy wynajem GPU staje się kosztownym rozwiązaniem. Płacisz 3.47 dolarów za milion tokenów, podczas gdy rynkowa cena wyjściowa wynosi 0.20 dolarów. Różnica w cenie stanowi koszt prywatności oraz przewidywalności rachunków. Te wartości mogą być wymierne finansowo, jednak nie należy traktować tego rozwiązania jako oszczędności kosztowej.
Wolumen progu rentowności dla każdego poziomu 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
}
]W przypadku poziomu frontier wymagane jest 24.3 miliona tokenów wyjściowych miesięcznie, co stanowi zaledwie 2.3% możliwości karty. Jest to niski próg. Mały zespół korzystający z agentów programistycznych w ciągu dnia pracy bez trudu go przekracza.
W przypadku małego poziomu komercyjnego wymagane jest 73 miliona tokenów miesięcznie, czyli cykl pracy na poziomie 6.9%. W przypadku poziomu z hostowanymi modelami open-weight wymagany cykl pracy wynosi 174%. Wartość powyżej 100% jest z definicji nieosiągalna: karta musiałaby pracować przez więcej godzin, niż zawiera miesiąc. Jedna karta średniej klasy przy tej stawce godzinowej nie wygrywa tego porównania, więc jedynymi sposobami na zmianę wyniku jest tańsza karta, szybsza karta lub powód inny niż cena.
Co ukrywa ten wzór
Wzór wycenia godziny pracy GPU oraz tokeny. Kilka rzeczywistych kosztów pozostaje poza nim.
Zimne starty. Model 8B o wagach 16-bit zajmuje około 16 GB, a jego wczytanie z dysku lokalnego do VRAM trwa dziesiątki sekund. Zatrzymanie instancji między użyciami pozwala zaoszczędzić na wynajmie, ale przy każdym pierwszym żądaniu użytkownik płaci czasem oczekiwania. Pozostawienie uruchomionej instancji eliminuje oczekiwanie, ale obniża cykl pracy, co zwiększa koszt jednostkowy tokena. Ten kompromis jest głównym powodem istnienia wnioskowania bezserwerowego (serverless inference).
Przechowywanie i pobieranie. Wagi są duże. Model 8B w 16-bitach zajmuje około 16 GB, model 30B skwantyzowany do 4-bit zajmuje około 18 GB, a model 30B w 16-bitach w ogóle nie mieści się na karcie 24 GB. Ograniczenia stają się szybko odczuwalne w górnym segmencie, gdzie uruchomienie otwartego modelu o bilionie parametrów, takiego jak Kimi K3 oznacza, że same wagi przekraczają możliwości każdej pojedynczej karty dostępnej w wynajmie godzinowym. Za ten dysk płaci się co miesiąc, a także traci czas przy każdej przebudowie środowiska. Po tygodniu eksperymentów warto uruchomić du -sh ~/.cache/huggingface/hub. Katalog rośnie szybciej, niż można się spodziewać, ponieważ każda przetestowana kwantyzacja nadal zajmuje miejsce.
Własny czas. Wersje sterowników i CUDA, błędy braku pamięci (out-of-memory) przy długości kontekstu, która działała wczoraj, aktualizacja modelu zmieniająca szablon czatu. Żaden z tych elementów nie pojawia się w wyliczeniach kosztu za token, a wszystkie obciążają czas prywatny. Jeśli wcześniej nie dobierano parametrów takich maszyn, warto przeczytać co faktycznie oferuje GPU VPS przed zobowiązaniem się do miesięcznego wynajmu.
Różnica w jakości. To największy ukryty koszt i najtrudniejszy do wyceny. Otwarty model 8B nie jest modelem klasy frontier. Jeśli wymaga trzech prób tam, gdzie model frontier potrzebuje jednej, jego rzeczywista cena za użyteczną odpowiedź jest trzykrotnie wyższa niż wynikałoby to z wykresu, a zadanie może i tak zakończyć się niepowodzeniem. Należy porównywać modele na własnych promptach, zanim zacznie się porównywać ceny. W przypadku zadań agentowych standardowym rozwiązaniem jest kierowanie zapytań w zależności od stopnia trudności i wykorzystywanie tanich, lokalnych tokenów do pracy masowej, co w dużej mierze sprowadza się do kontrolowania wydatków na agentów na VPS.
Zapomniane rozliczenia. Godzinowa instancja GPU, która została zatrzymana, często nadal generuje koszty za przypisany magazyn danych oraz zarezerwowany adres IP. Należy analizować fakturę, a nie tylko stronę z cennikiem.
Kiedy self-hosting wygrywa z innych powodów niż cena
Cztery przypadki, w których rachunek ekonomiczny nie jest czynnikiem decydującym.
- Dane, które nie mogą opuścić Twojej kontroli. Jeśli zasady zgodności zabraniają przesyłania tekstu do podmiotu trzeciego, cena za token nie jest kwestią, którą należy rozważać.
- Stałe, duże obciążenie w określonym czasie. Zadanie klasyfikacji wsadowej, które działa przez sześć godzin każdej nocy, ma z założenia 25% cykl pracy i nigdy nie zaskoczy Cię rachunkiem.
- Limity szybkości (rate limits). Twoja własna karta ma jedną kolejkę i należy ona wyłącznie do Ciebie.
- Model, którego nie oferuje żadne API. Jeśli potrzebujesz specyficznego dostrojenia (fine-tuning), nie ma punktu odniesienia do porównań.
Jeśli chcesz najpierw przetestować tańszą wersję, uruchomienie małego modelu na VPS za pomocą Ollama zajmuje jedno popołudnie, a dobranie modelu open source do karty, którą zamierzasz wynająć wskaże, jakiego GPU faktycznie potrzebujesz. Dokonaj pomiarów, zanim zdecydujesz się na miesięczny wynajem GPU.
FAQ
Przy jakim miesięcznym wolumenie tokenów GPU VPS staje się bardziej opłacalny niż API?
Podziel miesięczny koszt wynajmu GPU przez cenę API za milion tokenów wyjściowych. Karta kosztująca 365 dolarów miesięcznie, w porównaniu z API modelu klasy frontier za 15.00 dolara za milion, osiąga próg rentowności przy 24.3 milionach tokenów wyjściowych miesięcznie. W zestawieniu z mniejszym modelem komercyjnym za 5.00 dolara, próg ten wynosi 73 miliona. W przypadku hostowanego modelu o otwartych wagach za 0.20 dolara, jedna karta średniej klasy nie jest w stanie wygenerować w miesiącu wystarczającej liczby tokenów, aby osiągnąć próg rentowności.
Dlaczego hostowane API modelu o otwartych wagach kosztuje mniej niż własne GPU?
Ponieważ cena API jest ustalona blisko kosztu w pełni obciążonego GPU, a Twoja karta nie jest w pełni wykorzystana. Dostawca obsługujący tysiące równoległych żądań utrzymuje flotę blisko stanu nasycenia, dzięki czemu może sprzedawać tokeny w cenie zbliżonej do krańcowego kosztu ich produkcji. Twoja karta przez większość dnia pozostaje bezczynna, a Ty płacisz za godziny bezczynności. Przy 10% wykorzystaniu (duty cycle), Twój koszt wynosi 3.47 dolara za milion tokenów wyjściowych, podczas gdy u dostawcy jest to 0.20 dolara.
Czy powinienem uwzględniać tokeny wejściowe, czy tylko wyjściowe?
Uwzględnij je, jeśli Twoje prompty są długie. Porównanie tutaj wykorzystuje tylko tokeny wyjściowe, które stanowią dominujący koszt w pracy czatów i agentów. Dodanie tokenów wejściowych zmienia obie strony. Po stronie API jest to osobna, tańsza pozycja na fakturze. Na własnej karcie faza prefill zużywa czas GPU, więc koszt jest już zawarty w zmierzonej łącznej liczbie tokenów na sekundę. Dokonaj pomiarów przy użyciu rzeczywistych długości promptów, a obie strony pozostaną porównywalne.
Jak zmierzyć liczbę tokenów na sekundę potrzebną do wzoru?
Uruchom model w sposób, w jaki będziesz go używać, a następnie odczytaj łączną szybkość generowania przy rzeczywistym obciążeniu. W przypadku Ollama, ollama run <model> --verbose wyświetla eval rate w tokenach na sekundę, ale jest to pojedynczy strumień, który zaniża wynik dla serwera przetwarzającego w trybie wsadowym (batched). W przypadku vLLM, działający serwer loguje Avg generation throughput podczas obsługi żądań i jest to wartość, której należy użyć. Jednocześnie monitoruj nvidia-smi. Jeśli wykorzystanie GPU nie jest bliskie 100% podczas generowania, oznacza to, że nie osiągnięto jeszcze maksymalnej wydajności.
Czy warto wynajmować GPU VPS przy wykorzystaniu poniżej 10%?
Nie pod kątem ceny. Przy 10% wykorzystaniu płacisz 3.47 dolara za milion tokenów wyjściowych, a przy 2% płacisz 17.36 dolara. Obie wartości są wyższe niż w przypadku każdego rozliczanego API w tym porównaniu, z wyjątkiem klasy frontier. Wynajmuj poniżej tego progu tylko wtedy, gdy płacisz za prywatność lub dostęp do modelu, którego nie oferuje żadne API.