Akademia · Lokalne modele

Lokalny LLM w firmie — llama-server od podstaw.

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:

Continuous batchingwiele zapytań równolegle, domyślnie
GGUF + GPUCUDA, Metal lub ROCm
OpenAI APIendpoint /v1/ na localhost:8080

01 / Wprowadzenie · Dlaczego llama-server

Prawdziwa współbieżność, nie obsługa po kolei.

Na rynku istnieje wiele narzędzi do uruchamiania lokalnych modeli językowych. Jeśli jednak zależy Ci na maksymalnej wydajności, elastyczności i — co najważniejsze — prawdziwej współbieżności, odpowiedź jest jedna: llama-server z projektu llama.cpp.

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.

02 / Sprzęt · GPU i format GGUF

Wydajność zależy od akceleracji GPU.

1. Sprzęt (GPU)

  • Nvidia — najlepsze wsparcie dzięki CUDA.
  • Apple Silicon (M1/M2/M3/M4) — doskonała wydajność dzięki akceleracji Metal.
  • AMD — wsparcie przez ROCm (wymaga dodatkowej konfiguracji).
  • CPU — możliwe, ale bardzo powolne do celów serwerowych.

2. Modele w formacie GGUF

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.

  • Szukaj oznaczeń Q4_K_M, Q5_K_M lub Q8_0.
  • Q4_K_M jest powszechnie uważany za najlepszy kompromis między wydajnością a jakością.
  • Modele znajdziesz na Hugging Face — filtruj po „GGUF"; wiele osób kwantyzuje popularne modele.

03 / Instalacja · Klonowanie i kompilacja

Budujemy ze źródła pod własny sprzęt.

Budujemy oprogramowanie bezpośrednio ze źródła, aby zapewnić maksymalną optymalizację dla sprzętu. Potrzebujesz git, cmake i odpowiedniego zestawu narzędzi deweloperskich.

1. Klonowanie repozytorium

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.

2. Kompilacja

Proces różni się w zależności od posiadanego GPU.

Apple Silicon (Metal):

cmake -B build -DGGML_METAL=ON
cmake --build build --config Release -j

Nvidia (CUDA):

cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j

AMD (ROCm):

cmake -B build -DGGML_HIP=ON
cmake --build build --config Release -j

04 / Konfiguracja · Uruchomienie serwera

Najważniejsze flagi i przykład pełnego polecenia.

Minimalnie musisz wskazać model:

./build/bin/llama-server -m /sciezka/do/modelu.gguf -c 4096 -ngl 99

Najważniejsze flagi

  • -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]krytyczne: ile warstw modelu trafia do VRAM GPU. Ustawiaj wysoko (np. 99), aby załadować jak najwięcej na GPU. Flaga przyjmuje też auto i all — przy auto serwer sam dobiera liczbę warstw pod dostępną pamięć.
  • --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.
  • --parallel [LICZBA] — ile zapytań (slotów) może być przetwarzanych równolegle.
  • --host / --port — adres i port nasłuchu (np. 0.0.0.0 i 8080).

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 — przełączasz model bez restartu serwera.

Przykład pełnego polecenia

./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

05 / Użycie · WebUI i API

Interfejs w przeglądarce i API zgodne z OpenAI.

1. Wbudowany interfejs WebUI

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).

2. Prawdziwa współbieżność

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.

3. API zgodne z OpenAI

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/.

Jeśli zależy Ci na tool callingu, dodaj flagę --jinja. Każe ona serwerowi użyć szablonu czatu wbudowanego w model GGUF. To ona odblokowuje na /v1/chat/completions poprawne parsowanie wywołań narzędzi (pole tool_calls) i wydzielanie treści rozumowania do osobnego pola reasoning_content. Bez niej serwer zgaduje format heurystycznie i często przepuszcza znaczniki jako zwykły tekst.

06 / Best practices · Dobre praktyki

VRAM to wszystko, a projekt rozwija się szybko.

Pamięć VRAM to wszystko

Wydajność zależy od flagi -ngl. Jeśli serwer działa wolno, prawdopodobnie część modelu została przeniesiona do RAM zamiast VRAM.

Aktualizacje

Projekt llama.cpp rozwija się bardzo szybko. Co tydzień uruchamiaj:

git pull
cmake --build build --config Release -j

Dokumentacja

Wszystkie dostępne endpointy (/completion, /chat/completions) znajdziesz w oficjalnej dokumentacji projektu na github.com/ggml-org/llama.cpp.

Wdrożenie u Was

Chcecie własny serwer modeli na infrastrukturze firmy?

Akademia to materiały. Projekt i wdrożenie lokalnego serwera LLM prowadzimy z Waszym zespołem — od doboru sprzętu po produkcję. 30 minut wystarczy, żeby sprawdzić, czy ma to u Was sens.