Każde wywołanie hostowanego API LLM wysyła Twój prompt na cudzy serwer i obciąża Cię opłatą za token. Zerwij połączenie z siecią, a przestanie odpowiadać. Ollama usuwa oba te problemy: pobiera model o otwartych wagach na Twoją maszynę i udostępnia go przez API REST na localhost:11434. Jeden plik binarny pełni rolę menedżera modeli, klienta czatu i serwera.
Co Ollama robi naprawdę
Ollama opakowuje llama.cpp i podobne silniki wnioskowania, więc nigdy nie musisz dotykać flagi kompilatora ani ścieżki do biblioteki CUDA. ollama pull llama3.2 pobiera skwantyzowany plik modelu (format GGUF) z własnego rejestru Ollama, a nie z Hugging Face, choć potrafi też importować pliki GGUF stamtąd. Uruchomienie modelu przekazuje te wagi do serwera działającego w tle, który ładuje je do RAM-u (lub VRAM-u, jeśli znajdzie kompatybilną GPU), trzyma je w pamięci przez kilka minut po ostatnim zapytaniu, żeby kolejne było szybkie, i zwalnia pamięć, kiedy zapytania przestają napływać.
CLI, API i Modelfile robią w gruncie rzeczy jedno: wczytują wagi do pamięci i kierują do nich zapytania.
Jak zainstalować Ollama i uruchomić pierwszy model
Na Linuksie lub macOS:
| |
Na Windowsie uruchom instalator z ollama.com albo użyj:
| |
W obu przypadkach otrzymujesz CLI ollama i działający w tle serwer nasłuchujący na porcie 11434. Pobierz mały model i porozmawiaj z nim:
| |
ollama run przenosi Cię do interaktywnego promptu. Zadaj pytanie, przeczytaj odpowiedź, /bye, żeby wyjść. Trzy inne polecenia, których będziesz używać bez przerwy:
| |
llama3.2 to dobry pierwszy wybór: około 2 GB, wystarczająco szybki, żeby działać na CPU laptopa. Nie jest to najsilniejszy model w swojej klasie rozmiaru. gemma4 prowadzi teraz w małym segmencie i radzi sobie też z obrazami, a qwen3-coder to lepszy wybór, jeśli chcesz sprawdzić, jak model radzi sobie z pisaniem kodu. Zacznij mimo to od llama3.2, bo dowodzi, że Twoja konfiguracja działa, zanim zaczniesz ściągać 20 GB.
Jak rozmawiać z Ollama przez jej API REST
Interaktywny prompt służy do sprawdzenia, czy wszystko działa. Wszystko, co zbudujesz, wywołuje API. Natywny format Ollama wygląda tak:
| |
Przy "stream": false dostajesz jeden obiekt JSON, zawierający eval_count i eval_duration — wystarczająco, żeby zmierzyć tokeny na sekundę na Twoim sprzęcie. Ustaw true, a zamiast tego dostaniesz serię obiektów częściowej odpowiedzi, dokładnie to, czego potrzebuje interfejs czatu.
Do rozmów wieloetapowych /api/chat przyjmuje tablicę messages w tym samym formacie, którego używa API OpenAI:
| |
Ollama obsługuje też natywnie format API OpenAI pod /v1, więc oficjalne SDK OpenAI działają z nią bez modyfikacji:
| |
Ollama ignoruje api_key, ale konstruktor SDK go wymaga, więc wystarczy dowolny niepusty ciąg znaków. Dzięki temu to najszybszy sposób, żeby skierować narzędzie oparte już na OpenAI na model lokalny: zmieniasz base_url i zostawiasz resztę kodu bez zmian.
Kolejny endpoint ma znaczenie, jeśli składasz lokalny pipeline retrieval-augmented generation. POST /api/embed zamienia tekst na wektory za pomocą modelu embeddingowego (nomic-embed-text to zwykły wybór) — czegoś, czego sam model czatu nie zapewni.
Jak uruchomić Ollama w Dockerze
Jeśli wszystko inne na maszynie jest już kontenerem, Ollama dostarcza oficjalny obraz zamiast wymagać instalacji czegokolwiek na hoście:
| |
Nazwany wolumin w praktyce nie jest opcjonalny: bez niego każdy pobrany model znika w chwili usunięcia kontenera. Żeby pobrać i uruchomić model wewnątrz działającego kontenera:
| |
Na maszynie z GPU NVIDIA najpierw zainstaluj NVIDIA Container Toolkit na hoście, potem dodaj jedną flagę:
| |
GPU AMD używają osobnego tagu obrazu i montowania urządzeń zamiast --gpus:
| |
To samo jako usługa Docker Compose zachowuje port i wolumin, nic ponadto:
| |
Wystawienie tego kontenera poza localhost to zadanie dla reverse proxy, który dokłada TLS — tak samo jak przy każdej innej usłudze backendowej. Ollama nie ma własnego uwierzytelniania, więc port 11434 dostępny z sieci to serwer modeli, z którego może skorzystać każdy.
Jak dostosować model za pomocą Modelfile
Modelfile ustala system prompt, temperaturę i sekwencję zatrzymania na istniejącym modelu bez jego ponownego trenowania. Utwórz plik o nazwie Modelfile:
| |
Potem zbuduj go i uruchom:
| |
code-reviewer pojawia się teraz jako osobny wpis w ollama list, mimo że wagi są dokładnie tymi, których używa llama3.2. Wbudowane są tylko system prompt i parametry samplingu. Dzięki temu każdy klient, który wywołuje tę nazwę, dziedziczy konfigurację, bez konieczności wysyłania jej za każdym razem.
Jaki rozmiar modelu pasuje do Twojego RAM-u
Liczba w nazwie modelu to liczba jego parametrów i całkiem dobrze przewiduje, ile RAM-u (lub VRAM-u, przy wnioskowaniu na GPU) potrzebujesz:
| Rozmiar modelu | Minimalny RAM/VRAM | Realistyczne na |
|---|---|---|
| 1-3B | 4-8 GB | Każdym nowszym laptopie, samo CPU |
| 7-9B | 8-16 GB | Laptopie z 16 GB RAM, wolno na samym CPU |
| 13-14B | 16-24 GB | Dedykowanej GPU z 12+ GB VRAM |
| 30B+ | 24-48 GB+ | GPU z 24+ GB VRAM lub instancji chmurowej z GPU |
Te liczby zakładają 4-bitową kwantyzację, którą Ollama stosuje domyślnie — kosztuje to niewielką część jakości wyniku, w zamian za rozmiar pobierania i zużycie pamięci mniej więcej czterokrotnie mniejsze niż przy wagach w pełnej precyzji. Przy streszczaniu tekstu albo pisaniu commit message kwantyzacji raczej nie zauważysz. Braku RAM-u — owszem. Gdy tylko model zacznie korzystać ze swapu na dysku, zmienia się z wolnego w bezużyteczny, a to o wiele większa różnica niż utrata jakości przez kwantyzację.
Kiedy Ollama nie jest dobrym narzędziem
Ollama jest zbudowana dla jednego użytkownika rozmawiającego z jednym modelem na jednej maszynie. Nie robi batchowania zapytań ani żadnego planowania, które pozwoliłoby GPU efektywnie obsługiwać dziesiątki równoczesnych użytkowników — od tego są vLLM, TGI albo hostowane API. Jeśli zamierzasz postawić lokalny model przed prawdziwym ruchem, zmierz przepustowość Ollama pod równoczesnym obciążeniem, zanim się zdecydujesz: pojedyncza instancja padnie dużo wcześniej niż zrobiłby to serwer z prawdziwym batchowaniem.
To też nie jest narzędzie do fine-tuningu. Modelfile zmienia system prompt i parametry samplingu, nigdy wagi. Nauczenie modelu nowego zachowania na podstawie Twoich przykładów to osobny pipeline.
Żadne z tych dwóch ograniczeń nie dotyczy pojedynczego dewelopera na laptopie. Pobierz model, który wygodnie mieści się pod Twoim limitem RAM-u, uruchom go raz z CLI, a potem wywołaj curl-em na /api/generate. Jeśli odpowiedź wraca w kilka sekund i mówi to, czego oczekiwałeś, masz lokalny serwer wnioskowania, z którym może połączyć się każde narzędzie kompatybilne z OpenAI.