Kluczowe punkty
- Wagi modelu zajmują około 2 bajty na parametr przy 16-bit, 1 przy 8-bit i 0,5 przy 4-bit, plus miejsce na bufor kontekstu.
- Wynajęte GPU rozlicza każdą godzinę pracy, podczas gdy API rozlicza tylko za tokeny, które wyślesz i odbierzesz.
- Po $0,15 za 1 mln tokenów wejściowych i $0,50 za 1 mln tokenów wyjściowych, 20 000 czatów dziennie po 1 500 wejściowych i 500 wyjściowych kosztuje $285 miesięcznie.
- Hostowanie własne wygrywa, gdy potrzebujesz dostrajania, innego modelu, pracy offline lub stałego, bardzo dużego wolumenu.
Krótka odpowiedź: zależy od Twojego wolumenu
Jeśli pytasz, jak hostować wagi LLM samodzielnie, szczera odpowiedź brzmi: łatwo jest uruchomić model na Twojej maszynie, ale trudno utrzymać go tanim kosztem dla innych użytkowników. Laptop lub komputer stacjonarny z kartą GPU wystarczy do użytku osobistego. Usługa, która musi odpowiadać wielu użytkownikom jednocześnie, o każdej porze, wymaga więcej pamięci, więcej dostrajania i kogoś, kto będzie ją utrzymywał.
Alternatywą jest wywołanie endpointu kompatybilnego z OpenAI i płacenie za tokeny. Przy małych i średnich obciążeniach jest to prawie zawsze tańsze, ponieważ nie płacisz za czas bezczynności GPU. Przy bardzo dużym i stałym ruchu lub dla zadań wymagających własnego dostrajanego modelu, posiadanie sprzętu zaczyna mieć sens. Poniższe sekcje przedstawiają liczby po obu stronach, abyś mógł znaleźć swój punkt bezstratności.
Nie ma tu darmowego planu. Możesz odebrać jednorazowy kredyt próbny $0,50 na stronie klucza API po zalogowaniu się, a następnie doładować przedpłacony kredyt od $20. Kredyt próbny wystarczy na przeprowadzenie prawdziwego testu własnych promptów, zanim podejmiesz jakąkolwiek decyzję.
Czego właściwie wymaga hostowanie modelu
Model językowy to duży plik liczb, wagi, które muszą znajdować się w szybkiej pamięci podczas pracy modelu. Rozmiar tego pliku jest pierwszym ograniczeniem, a Ty możesz go obliczyć samodzielnie: parametry pomnożone przez bajty na parametr.
| Rozmiar modelu | Wagi 16-bitowe | Wagi 8-bit | Wagi 4-bitowe |
|---|---|---|---|
| 8B parametrów | 16 GB | 8 GB | 4 GB |
| 32B parametrów | 64 GB | 32 GB | 16 GB |
| 70B parametrów | 140 GB | 70 GB | 35 GB |
To są same wagi. Do tego potrzebujesz pamięci na bufor klucz-wartość, która rośnie wraz z długością każdej aktywnej rozmowy, oraz marginesu zapasu dla środowiska wykonawczego. Model, który nominalnie mieści się w 24 GB, może wyczerpać pamięć w momencie, gdy poprosisz o długi kontekst lub obsługę kilku użytkowników jednocześnie. Kwantyzacja do 4-bitowej zmniejsza rozmiar pliku, ale nieco zmienia jakość odpowiedzi, a efekt ten różni się w zależności od modelu.
Pozostaje jeszcze strona oprogramowania. Potrzebujesz serwera wnioskowania takiego jak llama.cpp, Ollama lub vLLM, warstwy HTTP, aby Twoje aplikacje mogły go wywoływać, sposobu na jego restart po awarii oraz monitorowania, aby zauważyć awarię. Żadna z tych rzeczy nie jest trudna sama w sobie. Wszystkie zajmują czas, a czas to część kosztu.
Opcja jedna: uruchom na swoim komputerze
Najtańszym sposobem na start jest maszyna, którą już posiadasz. Narzędzia takie jak Ollama i llama.cpp pobierają model i udostępniają lokalny serwer, a wiele z nich oferuje również endpoint w stylu OpenAI, więc kod, który piszesz dla nich, może później wskazywać na API hostowane, zmieniając tylko dwa ustawienia.
Lokalne hostowanie jest dobre, gdy:
- jesteś jedną osobą eksperymentującą, a kilka sekund na odpowiedź jest w porządku;
- dane nigdy nie opuszczają maszyny;
- chcesz szybko wypróbować wiele różnych modeli open;
- masz kartę GPU z wystarczającą pamięcią i tak jest ona nieużywana przez większość dnia.
Słabo się sprawdza, gdy musisz obsługiwać innych użytkowników, gdy model, którego chcesz użyć, jest większy niż Twoja pamięć, albo gdy potrzebujesz długich kontekstów. Nasze własne porównanie lokalnych modeli bez cenzury i hostowanych API omawia kompromisy w większym szczegółu, w tym to, jak zmienia się jakość odpowiedzi między małymi modelami lokalnymi a większymi hostowanymi.
Prąd to realna, ale mała pozycja kosztów dla pojedynczego użytkownika. Większym kosztem jest sprzęt, który musiałeś kupić, za który płacisz niezależnie od tego, czy go używasz, czy nie. Jeśli już go posiadasz, koszt krańcowy jest niski, a lokalne hostowanie trudno wygrywa dla prywatnych eksperymentów.
Opcja dwa: wynajmij serwer GPU
Gdy Twoja własna maszyna nie wystarcza, kolejnym krokiem jest wynajęte GPU. Dostawcy pobierają opłatę za godzinę za maszynę z określoną ilością pamięci GPU. Ceny bardzo się różnią między dostawcami i często się zmieniają, więc sprawdź ich aktualne cenniki zamiast ufać dowolnej liczbie przeczytanej w artykule, w tym tym.
Kluczowy jest kształt rachunku. Wynajęty serwer nalicza opłaty za każdą godzinę, gdy jest włączony, niezależnie od tego, czy odpowiada na jedno zapytanie, czy nie. Jeśli zostawisz go włączonym przez cały miesiąc, rachunek jest prosty: miesiąc ma około 730 godzin (8760 godzin w roku podzielone przez 12). Załóżmy, czysto jako przykład założony, a nie cytowany, że odpowiedni serwer kosztuje $1 za godzinę. Jego działanie przez całą dobę kosztuje wtedy 730 × $1 = $730 miesięcznie, zanim dodasz magazynowanie, przepustowość i Twój własny czas.
Możesz wyłączyć serwer, gdy z niego nie korzystasz, ale wtedy płacisz opóźnieniami: załadowanie dużego modelu do pamięci zajmuje czas, a pierwszy użytkownik po pauzie czeka na jego załadowanie. Konfiguracje autoskalowania zmniejszają ten problem, ale wprowadzają własną złożoność.
Współczynnik opłacalności w porównaniu do API wynika z ceny. Jeden milion tokenów wejściowych plus jeden milion tokenów wyjściowych kosztuje $0,15 + $0,50 = $0,65 na tym API. Twój serwer wyceniony na $730 odpowiada 730 ÷ 0,65 ≈ 1 123 takim parom, czyli około 1,1 miliarda tokenów wejściowych i 1,1 miliarda tokenów wyjściowych w miesiącu. Poniżej tego wolumenu API jest tańsze. Powyżej niego dobrze wykorzystany serwer może wygrać, pod warunkiem że faktycznie podoła temu ruchowi, co zależy od modelu, GPU i tego, jak dobrze dostrojysz serwer.
Opcja trzy: użyj API hostowanego
Ścieżka API usuwa sprzęt, serwer i czas bezczynności. Wysyłasz zapytanie, otrzymujesz odpowiedź i płacisz za użyte tokeny. Cennik to $0,15 za 1M tokenów wejściowych i $0,50 za 1M tokenów wyjściowych, płatność za zużycie z przedpłaconego kredytu, bez subskrypcji. Kredyt nie wygasa, a nieudane lub odrzucone zapytania nie są rozliczane.
Tak to wygląda przy trzech realistycznych wolumenach. Przyjmuje się, że typowa tura czatu zużywa 1 500 tokenów wejściowych (prompt systemowy plus historia) i 500 tokenów wyjściowych.
- Jedno zapytanie: 1 500 tokenów wejściowych kosztuje 0,0015 × $0,15 = $0,000225, a 500 tokenów wyjściowych kosztuje 0,0005 × $0,50 = $0,00025. Razem to $0,000475.
- 1 000 czatów dziennie, 30 dni: 1 000 × $0,000475 = $0,475 dziennie, lub $14,25 miesięcznie.
- 20 000 czatów dziennie, 30 dni: 20 000 × $0,000475 = $9,50 dziennie, lub $285 miesięcznie.
- Zadanie batchowe 100 000 zapytań z 2 000 tokenami wejściowymi i 400 wyjściowymi każde: wejście to 200 mln tokenów, więc 200 × $0,15 = $30; wyjście to 40 mln tokenów, więc 40 × $0,50 = $20. Łącznie $50.
Po środkowej liczbie API kosztuje $285 miesięcznie, co jest znacznie poniżej założonych $730 za serwer pracujący non-stop. Przy największej liczbie potrzebowałbyś znacznie większego ruchu, zanim wynajęty serwer nadąży. Twoje własne prompty decydują o rzeczywistych liczbach, więc zmierz próbkę, a nie zgaduj. Blok użycia zwracany z każdą odpowiedzią mówi Ci dokładne liczby tokenów.
Kredyt próbny $0,50 pokrywa około 1 052 zapytań o rozmiarze 1 500 wejściowych i 500 wyjściowych (0,50 ÷ 0,000475 ≈ 1 052), co jest w zupełności wystarczające na test. Później doładowujesz dowolną kwotą całkowitą od $20 do $500. Większe doładowania niosą bonus: +5% od $50, +10% od $100 i +15% od $200, więc doładowanie $100 daje kredyt $110. Szczegóły są na stronie cenowej. Płatność kartą (Visa, Mastercard, Apple Pay, Google Pay) lub kryptowalutami (USDT na TRC20, USDC na Base).
Na czym rezygnujesz, nie hostując
API nie jest wolne od kompromisów i lepiej je znać przed zbudowaniem na nim.
- Jeden model. Otrzymujesz pojedynczy model o otwartych wagach, adresowany jako
uncensored. Nie możesz podmienić go na inny ani załadować własnych wag. - Brak dostrajania i tylko tekst. Nie ma endpointu do trenowania, brak embeddingów oraz generowania obrazów, dźwięku czy wideo.
- Ograniczenia. Pełny klucz pozwala na 8 równoległych zapytań i 300 zapytań na minutę. Klucz próbny pozwala na 2 i 60. Pasuje to do większości aplikacji, ale bardzo duży batch wymaga kolejkowania po Twojej stronie.
- Kontekst. Okno kontekstu wynosi 100 000 tokenów dla promptu plus uzupełnienia.
- Twoje dane opuszczają Twoją sieć. Prompty nie są używane do szkolenia, ale podróżują do strony trzeciej. Jeśli nie jest to akceptowalne dla danego zbioru danych, hostuj lokalnie.
Hostowanie własne jest lepszym wyborem, gdy którakolwiek z tych rzeczy jest wymaganiem podstawowym: dostrajanie na własnych danych, konkretny model, którego API nie oferuje, praca w pełni offline lub stały wolumen wystarczająco duży, aby posiadany sprzęt pracował przez całą dobę.
Wypróbuj API przed zakupem sprzętu
Jednogodzinny test kosztuje mniej niż jedna godzina pracy większości wynajętych serwerów i mówi Ci, czy model dobrze odpowiada na Twoje prompty. Endpoint jest kompatybilny z OpenAI, więc jeśli masz już kod rozmawiający z lokalnym serwerem, zmieniasz tylko bazowy URL, klucz i ID modelu. Ten skrypt raportuje również koszt każdej wywołania, używając liczb użycia w odpowiedzi:
from openai import OpenAI
client = OpenAI(
base_url="https://api.uncensoredllmhub.com/v1",
api_key="YOUR_API_KEY",
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise the pros and cons of self-hosting an LLM."}],
)
u = resp.usage
cost = u.prompt_tokens / 1_000_000 * 0.15 + u.completion_tokens / 1_000_000 * 0.50
print(resp.choices[0].message.content)
print(f"in={u.prompt_tokens} out={u.completion_tokens} cost=${cost:.6f}")
Uruchom go na kilkunastu swoich rzeczywistych promptach, zsumuj linie kosztów i pomnóż przez oczekiwany dzienny wolumen. Da ci to liczbę, którą możesz ustawić obok wyceny sprzętu. Jeśli chcesz poznać szczegóły konfiguracji, dokumentacja wymienia obsługiwane parametry, w tym strumieniowanie, wywoływanie funkcji i tryb JSON.
