Kluczowe punkty
- Najlepszym modelem lokalnym jest ten największy, który zmieści się w twojej pamięci VRAM przy używalnej prędkości, a nie ten z najlepszą reputacją.
- Ollama udostępnia endpoint kompatybilny z OpenAI na twojej własnej maszynie, więc ten sam kod klienta działa lokalnie i w chmurze.
- Lokalnie daje prywatność i działanie offline; w chmurze daje większy model, brak sprzętu i konfiguracji.
- Oferujemy tylko endpoint w chmurze: nie ma możliwości pobrania modelu z tej usługi.
Krótka odpowiedź: wybierz według pamięci, a następnie przetestuj dwa lub trzy
Nie ma jednego najlepszego modelu, ponieważ limitem jest twój sprzęt. Model musi zmieścić się w pamięci GPU (lub w pamięci RAM systemu, znacznie wolniej) wraz z jego buforem roboczym. Praktyczna zasada jest prosta: znajdź największy model, który zmieści się komfortowo w twojej pamięci i nadal odpowiada z prędkością, na jaką możesz sobie pozwolić, a następnie porównaj dwa lub trzy kandydaty na swoich promptach.
Nazwy modeli i rankingi zmieniają się co kilka tygodni, więc każda lista napisana dziś szybko się starzeje. Pomijaj tabele liderów i zastosuj krótką metodę: przeglądaj bibliotekę Ollama i uploady społeczności, filtruj modele opisane jako uncensored, abliterated lub do roleplay, pobierz mały i średni model oraz uruchom na każdym te same dziesięć promptów. Twoje własne prompty powiedzą Ci więcej niż wynik w benchmarku kogoś innego.
Jeśli po tym stwierdzisz, że modele mieszczące się na twojej maszynie są za małe dla pożądanej jakości, endpoint w chmurze jest alternatywą. Reszta tej strony przedstawia kompromis, abyś mógł podjąć decyzję na podstawie liczb.
Jak dobrać model do twojej maszyny
Trzy liczby decydują o tym, co działa dobrze: liczba parametrów, kwantyzacja i długość kontekstu.
Parametry i kwantyzacja
Model z większą liczbą parametrów generalnie pisze lepiej, bardziej niezawodnie wykonuje instrukcje i dłużej utrzymuje postać. Ale parametry zajmują pamięć. Przy pełnej precyzji 16-bitowej model potrzebuje około dwóch bajtów na parametr, więc model 7B potrzebuje około 14 GB przed jakimkolwiek buforem. Kwantyzacja to zmniejsza. Wersja 4-bitowa potrzebuje około pół bajta na parametr, więc ten sam model 7B mieści się w około 4 do 5 GB. Jakość spada nieco z każdym krokiem w dół, a strata jest zwykle mała przy 4 do 5 bitów i zauważalna poniżej tego.
Długość kontekstu
Okno kontekstu również zużywa pamięć, ponieważ model przechowuje bufor wszystkiego z rozmowy. Długa sesja odgrywania ról lub historia z dużą ilością wcześniejszego tekstu wymaga większego bufora. Ollama pozwala ustawić rozmiar kontekstu dla każdego modelu, a większa wartość zużywa więcej pamięci i spowalnia generowanie. Wiele konfiguracji lokalnych działa z oknem kilku tysięcy tokenów, aby pozostać szybkim, co oznacza, że model zapomniał początku długich czatów.
Szybkość
Jeśli model wyleje się z pamięci GPU do pamięci RAM systemu, generowanie może spaść z przyjemnego tempa czytania do jednego słowa naraz. Mniejszy model, który mieści się całkowicie na GPU, często działa lepiej niż większy, który nie, nawet jeśli ten większy pisze nieco lepiej.
Uruchamianie modelu w Ollama i wywoływanie go z kodu
Po zainstalowaniu Ollama pobranie i czatowanie wymaga dwóch poleceń, a dokładna nazwa modelu pochodzi ze strony biblioteki, którą wybrałeś:
ollama pull MODEL_NAME
ollama run MODEL_NAME
Ollama serwuje również API kompatybilne z OpenAI na twojej własnej maszynie, domyślnie pod adresem http://localhost:11434/v1. To oznacza, że ten sam kod klienta może rozmawiać z modelem lokalnym lub zdalnym, a przełączasz się, zmieniając bazowy URL i nazwę modelu:
from openai import OpenAI
# Local Ollama (the key is ignored but must be non-empty)
local = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
# Hosted endpoint
hosted = OpenAI(base_url="https://api.ornith.top/v1", api_key="YOUR_API_KEY")
def ask(client, model, text):
r = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": text}],
)
return r.choices[0].message.content
prompt = "Write a tense two-paragraph scene set in an abandoned lighthouse."
print(ask(local, "MODEL_NAME", prompt))
print(ask(hosted, "uncensored", prompt))
Uruchomienie obu na tych samych promptach to najszybszy sposób na odpowiedź na pytanie dla Twojego przypadku. Jeśli wynik lokalny jest wystarczający, skończyłeś i kosztuje Cię to prąd. Jeśli nie, masz punkt odniesienia dla tego, co zyskasz.
Lokalne Ollama versus API w chmurze
Żaden nie jest lepszy we wszystkich przypadkach. Ta tabela opiera się na tym, co jest strukturalnie prawdziwe dla każdego podejścia.
| Punkt | Lokalnie z Ollama | Hostowane API |
|---|---|---|
| Koszt początkowy | Twoja własna GPU lub maszyna z wystarczającą ilością RAM | Brak; przedpłacony kredyt od $20 |
| Koszt działania | Prąd i twój czas | $0,15 za 1M tokenów wejściowych, $0,50 za 1M tokenów wyjściowych |
| Rozmiar modelu | Ograniczone przez Twoją pamięć | Jeden model wybrany przez dostawcę |
| Działa offline | Tak | Nie, wymaga internetu |
| Dane opuszczają twoją maszynę | Nie | Tak, prompty trafiają do dostawcy; nasze nie są używane do trenowania |
| Wybór modelu | Wszystko, co możesz pobrać | Tylko ten oferowany |
| Użytkownicy współbieżni | Ograniczony przez twój sprzęt | Do 8 żądań współbieżnych przy pełnym kluczu |
| Konfiguracja | Zainstaluj, pobierz, dostosuj ustawienia | Zmień bazowy URL i klucz |
Lokalnie wygrywa pod względem prywatności, działania offline i wolności wyboru. Jeśli twój tekst nigdy nie musi opuścić twojej maszyny lub chcesz wymieniać modele co tydzień, uruchamiaj lokalnie. API w chmurze wygrywa pod względem czasu konfiguracji, nie zajmowania twojej GPU podczas pracy i obsługi aplikacji z kilkoma użytkownikami jednocześnie.
Słuszne jest również powiedzenie, czego nie oferujemy. Ta usługa to tylko endpoint w chmurze. Nie ma pliku modelu do pobrania, dostrajania ani możliwości użycia własnych wag. Jeśli chcesz posiadać model, Ollama jest odpowiednim narzędziem, a nasz przewodnik po API LLM open source omawia szerszy zestaw opcji.
Ile kosztuje hosting, przeanalizowane
Ludzie często zakładają, że model w chmurze jest drogi w porównaniu z darmowym działaniem lokalnym. Działanie lokalne nie jest darmowe, jeśli policzysz sprzęt, ale porównanie jest łatwiejsze przy konkretnym użyciu. Ceny to $0,15 za 1M tokenów wejściowych i $0,50 za 1M tokenów wyjściowych.
- Luźne roleplay, 100 wiadomości dziennie. Załóżmy, że każda tura wysyła 3000 tokenów historii i zwraca 300 tokenów. Wejście na turę: 3000 przy $0,15 za 1M to $0,00045. Wyjście: 300 przy $0,50 za 1M to $0,00015. To $0,0006 na turę, $0,06 za 100 tur, około $1,80 w ciągu 30 dni.
- Projekt pisarski. 5M tokenów wejściowych i 1M tokenów wyjściowych w miesiącu to $0,75 plus $0,50, więc $1,25.
- Mała aplikacja. 200M wejściowych i 40M wyjściowych tokenów miesięcznie to $30 plus $20, więc $50.
Tylko ty możesz wycenić swoją GPU, ale lekkie i średnie użycie kosztuje bardzo mało w hostingu. Minimalne doładowanie $20 pokrywa długi czas na pierwszych dwóch poziomach, a kredyt nigdy nie wygasa, więc nie zniknie, jeśli weźmiesz miesiąc przerwy. Większe doładowania mają bonus: 5% od $50, 10% od $100, 15% od $200. Pełne szczegóły są na stronie z cenami.
Rozsądny sposób na połączenie obu
Nie musisz wybierać raz na zawsze. Wielu użytkowników uruchamia mały lokalny model do szybkich szkiców i prywatnych notatek, a dłuższe lub bardziej wymagające zadania wysyła na endpoint hostowany. Ponieważ oba obsługują format OpenAI, Twoja aplikacja może utrzymywać dwa obiekty klienta i kierować ruchem według zadania, jak w kodzie powyżej.
Podczas testowania strony zdalnej, nowi użytkownicy mogą odebrać $0,50 kredytu próbnego jednym kliknięciem na stronie klucza API, bez karty, jeden na osobę, ważny przez 7 dni. Przy powyższych kosztach na turę daje to setki tur roleplay, wystarczająco do porównania z najlepszym lokalnym modelem na identycznych promptach. Możesz wygenerować klucz API po zalogowaniu się przez Google lub e-mail i hasło. Dokumentacja API wymienia parametry takie jak temperature, top_p, stop i seed, które są przekazywane dalej, więc ustawienia próbkowania lokalnego przenoszą się.
Kilka limitów do zaplanowania. Klucz próbny pozwala na 2 równoległe zapytania i 60 zapytań na minutę; pełny klucz pozwala na 8 i 300. Okno kontekstu to 100 000 tokenów, znacznie więcej niż większość lokalnych konfiguracji uruchamia komfortowo. I jedna zasada, której żadne ustawienie nie zmienia: model jest do zgodnego z prawem użytku przez dorosłych i nie będzie generował treści seksualnych z udziałem nieletnich.
