Akademia · Lokalne modele
Jeśli szukasz maksymalnej wydajności, elastyczności i prawdziwej współbieżności na własnym sprzęcie, odpowiedzią jest llama-server z projektu llama.cpp. Poniżej kompilacja, modele GGUF, flagi uruchomienia i dostęp przez API zgodne z OpenAI.
Ostatnia aktualizacja:
Do wygodnej pracy z modelami na własnej stacji wystarczy GUI takie jak LM Studio; llama-server to kolejny poziom: serwer produkcyjny dla całego zespołu.
Kluczowa przewaga (continuous batching): w przeciwieństwie do serwerów przetwarzających zapytania sekwencyjnie (jedno po drugim), llama-server obsługuje wiele zapytań jednocześnie i równolegle. Pozwala to w pełni wysycić moc GPU i obsłużyć wielu użytkowników lub procesów naraz.
-DGGML_VULKAN=ON), niezwiązany z jednym producentem kart.Serwer działa wyłącznie z modelami w formacie GGUF. To plik zawierający „skwantyzowany" model. Kwantyzacja to zmniejszenie precyzji wag (np. z 16-bitowej do 4-bitowej), co drastycznie redukuje rozmiar pliku i wymagania VRAM przy niewielkiej utracie jakości.
Budujemy oprogramowanie bezpośrednio ze źródła, aby zapewnić maksymalną optymalizację dla sprzętu. Potrzebujesz git, cmake i odpowiedniego zestawu narzędzi deweloperskich.
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp Aktualizacja: repozytorium przeniesiono do organizacji ggml-org. Stary adres github.com/ggerganov/llama.cpp tylko przekierowuje. Używaj github.com/ggml-org/llama.cpp.
Aktualizacja: kompilacja nie jest jedyną drogą. Gotowe binarki zainstalujesz przez brew install llama.cpp (macOS, Linux) albo winget install llama.cpp (Windows); są też obrazy Docker i skrypt instalacyjny z llama.app, oficjalnej strony projektu. Nowe wydania mają wspólną binarkę llama, w której llama serve uruchamia ten sam serwer, co opisany tu llama-server. Build ze źródeł zostaje dla tych, którzy chcą sami wybrać backend i opcje kompilacji.
Proces różni się w zależności od posiadanego GPU.
Apple Silicon (Metal jest na macOS włączony domyślnie, osobna flaga nie jest potrzebna):
cmake -B build
cmake --build build --config Release -j Nvidia (CUDA):
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j AMD (ROCm na Linuksie; flagą -DGPU_TARGETS=gfx… ograniczysz kompilację do swojej karty):
HIPCXX="$(hipconfig -l)/clang" HIP_PATH="$(hipconfig -R)" \
cmake -S . -B build -DGGML_HIP=ON -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release -j Minimalnie musisz wskazać model:
./build/bin/llama-server -m /sciezka/do/modelu.gguf -c 4096 -ngl 99 -m, --model [SCIEZKA] — wymagane: ścieżka do pliku modelu GGUF.-hf, --hf-repo <user>/<model>[:quant]: alternatywa dla -m: pobiera i uruchamia model GGUF prosto z Hugging Face, bez ręcznego ściągania pliku.-ngl, --n-gpu-layers [LICZBA|auto|all] — krytyczne: ile warstw modelu trafia do VRAM GPU. Domyślnie jest auto, a przy włączonym domyślnie --fit serwer sam dopasowuje nieustawione parametry, w tym warstwy i kontekst, do wolnej pamięci karty. Konkretną liczbę (np. 99) albo all podajesz wtedy, gdy chcesz wymusić własny podział.--cpu-moe, -cmoe / --n-cpu-moe, -ncmoe [N]: dla modeli MoE: trzyma wagi ekspertów w RAM zamiast w VRAM (wariant z N dotyczy tylko pierwszych N warstw). Tym sposobem odpalisz duży model MoE na karcie, która inaczej by go nie pomieściła.-fa, --flash-attn [on|off|auto]: Flash Attention; domyślnie auto, więc serwer sam włącza je, gdy sprzęt to wspiera.-np, --parallel [LICZBA]: ile zapytań (slotów) może być przetwarzanych równolegle; domyślnie -1, czyli serwer dobiera tę liczbę sam.--host / --port: adres i port nasłuchu. Domyślnie 127.0.0.1 i 8080, czyli tylko lokalnie; 0.0.0.0 otwiera serwer na sieć.--api-key KLUCZ / --api-key-file PLIK: serwer przyjmuje tylko zapytania z właściwym kluczem. Bez tego model obsłuży każdego, kto dosięgnie portu, więc przy --host 0.0.0.0 ustaw klucz od razu.Continuous batching domyślnie włączone: nie musisz już podawać --cont-batching. Aby wyłączyć, użyj -nocb lub --no-cont-batching.
Aktualizacja — tryb routera (wiele modeli na jednym serwerze): odpal llama-server bez -m, a wystartuje jako router. Zamiast jednego modelu na sztywno obsłuży wiele i ładuje je na żądanie. --models-dir wskazuje katalog z plikami GGUF, a --models-preset opisuje konfiguracje poszczególnych modeli w pliku .ini. Każde zapytanie trafia do właściwego modelu samo, więc przełączasz model bez restartu serwera. Ile modeli siedzi w pamięci naraz, ustawiasz przez --models-max (domyślnie 4).
./build/bin/llama-server \
-m ./modele/Mistral-7B-v0.1.Q4_K_M.gguf \
-c 4096 \
-ngl 99 \
--host 0.0.0.0 \
--port 8080 \
--parallel 4 Otwórz przeglądarkę i wejdź na http://127.0.0.1:8080. Dostaniesz: rozmowę z modelem, statystyki na żywo (tokeny/s) oraz ustawienia (temperatura, top-k).
Dzięki continuous batching i fladze --parallel serwer nie blokuje się na jednym zapytaniu. Możesz otworzyć wiele kart w przeglądarce lub wysłać wiele zapytań API jednocześnie. Serwer inteligentnie rozdzieli zasoby GPU i przetworzy wszystkie równolegle.
llama-server automatycznie udostępnia API zgodne ze standardem OpenAI (endpoint /v1/). Oznacza to, że podłączysz setki narzędzi (LangChain, Open WebUI, skrypty Python) do lokalnego serwera. Wystarczy ustawić adres API na http://127.0.0.1:8080/v1/. Poza Chat Completions serwer wystawia też /v1/responses (Responses API) i /v1/embeddings, a pod /v1/messages odpowiada w formacie Anthropic Messages API.
Tool calling działa bez dodatkowych flag. Od listopada 2025 silnik szablonów Jinja (--jinja) jest włączony domyślnie, więc serwer bierze szablon czatu wbudowany w plik GGUF, na /v1/chat/completions parsuje wywołania narzędzi do pola tool_calls i wydziela rozumowanie do osobnego pola reasoning_content. Gdy szablon zapisany w modelu jest wadliwy, podmienisz go flagą --chat-template-file. Flaga --no-jinja wyłącza cały mechanizm, ale przy agentach nie ma ku temu powodu.
Wydajność zależy od flagi -ngl. Jeśli serwer działa wolno, prawdopodobnie część modelu została przeniesiona do RAM zamiast VRAM.
Projekt llama.cpp rozwija się bardzo szybko: buildy bNNNNN z gałęzi master wychodzą po kilka dziennie. Od sierpnia 2026 są też wydania z numeracją semver (tagi v0.x, ostatni v0.5.0 z 23 września 2026), więc serwer w firmie lepiej przypiąć do tagu niż do mastera. Aktualizacja ze źródeł:
git fetch --tags
git checkout v0.5.0 # albo nowszy tag
cmake --build build --config Release -j Wszystkie dostępne endpointy (/completion, /chat/completions) znajdziesz w oficjalnej dokumentacji projektu na github.com/ggml-org/llama.cpp.
Akademia to materiały. Projekt i wdrożenie lokalnego serwera LLM prowadzimy z Waszym zespołem, od doboru sprzętu po produkcję. Audyt 90 minut wystarczy, żeby sprawdzić, czy ma to u Was sens.