Snelstart van llama.cpp met CLI en server
Hoe u OpenCode installeert, configureert en gebruikt
Ik keer steeds terug naar llama.cpp voor lokale inferentie: het geeft je controle die Ollama en anderen abstracteren, en het werkt gewoon. Het is eenvoudig om GGUF-modellen interactief uit te voeren met llama-cli of een OpenAI-compatibele HTTP-API bloot te stellen met llama-server.
Als je nog steeds besluit tussen lokale, zelf-gehoste en cloud-aanpakken, begin dan met de pijlergids LLM-hosting in 2026: Lokaal, zelf-gehost en cloud-infrastructure vergeleken.
Waarom llama.cpp in 2026
llama.cpp is een lichtgewicht inferentie-engine met een voorkeur voor:
- portabiliteit over CPUs en meerdere GPU-backends,
- voorspelbare latentie op een enkele machine,
- flexibiliteit in implementatie, van laptops tot on-prem nodes.
Het blinkt uit als je privacy en offline-werkzaamheid wilt, als je deterministische controle nodig hebt over runtime-vlaggen, of als je inferentie wilt integreren in een groter systeem zonder een volledige Python-zware stack te draaien.
Het is ook nuttig om llama.cpp te begrijpen, zelfs als je later kiest voor een server-runtime met hogere doorvoer. Als je doel bijvoorbeeld maximale server-doorvoer op GPUs is, kun je het ook vergelijken met vLLM via:
vLLM Quickstart: High-Performance LLM Serving
en je kunt toolkeuzes benchmarken in:
Ollama vs vLLM vs LM Studio: Beste manier om LLM’s lokaal uit te voeren in 2026?.

Installeer llama.cpp op Windows, macOS en Linux
Er zijn drie praktische installatiemethoden, afhankelijk van of je gemak, portabiliteit of maximale prestaties wilt.
Installeren via pakketmanagers
Dit is de snelste “het draaien” optie.
# macOS of Linux
brew install llama.cpp
# Windows
winget install llama.cpp
# macOS (MacPorts)
sudo port install llama.cpp
# macOS of Linux (Nix)
nix profile install nixpkgs#llama-cpp
Tip: controleer na installatie of de tools bestaan:
llama-cli --version
llama-server --version
Installeren via vooraf gemaakte binaries
Als je een schone installatie wilt zonder compilers, gebruik dan de officiële vooraf gemaakte binaries die in de llama.cpp GitHub-releases zijn gepubliceerd. Deze dekken doorgaans meerdere OS-doelen en meerdere backends (CPU-only en GPU-geschakelde varianten).
Een gebruikelijke workflow:
# 1) Download het juiste archief voor je OS en backend
# 2) Pak het uit
# 3) Voer het uit in de uitgepakte map
./llama-cli --help
./llama-server --help
Bouwen vanuit bron voor je exacte hardware
Als je erop uit bent om de beste prestaties uit je CPU/GPU-backend te halen, bouw dan vanuit de bron met CMake.
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# CPU-build
cmake -B build
cmake --build build --config Release
Na het bouwen bevinden de binaries zich doorgaans hier:
ls -la ./build/bin/
GPU-builds in één commando
Schakel de backend in die bij je hardware hoort (voorbeelden getoond voor CUDA en Vulkan):
# NVIDIA CUDA
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
# Vulkan
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release
Ubuntu 24.04 + NVIDIA GPU: volledige build-walkthrough
Op Ubuntu 24.04 met een NVIDIA GPU heb je de CUDA-toolkit en OpenSSL nodig voordat je begint. Hier is een geteste volgorde:
1. Installeer CUDA-toolkit 13.1
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/x86_64/cuda-ubuntu2404.pin
sudo mv cuda-ubuntu2404.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/13.1.1/local_installers/cuda-repo-ubuntu2404-13-1-local_13.1.1-590.48.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2404-13-1-local_13.1.1-590.48.01-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2404-13-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-13-1
2. Voeg CUDA toe aan je omgeving (voeg toe aan ~/.bashrc):
# cuda toolkit
export PATH=/usr/local/cuda-13.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-13.1/lib64:$LD_LIBRARY_PATH
Voer vervolgens source ~/.bashrc uit of open een nieuw terminalvenster.
3. Installeer OpenSSL-development-headers (vereist voor een schone build):
sudo apt update
sudo apt install libssl-dev
4. Bouw llama.cpp (vanuit de map die je llama.cpp-clone bevat, met CUDA ingeschakeld):
cmake llama.cpp -B llama.cpp/build -DBUILD_SHARED_LIBS=OFF -DGGML_CUDA=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-cli llama-mtmd-cli llama-server llama-gguf-split llama-embedding
cp llama.cpp/build/bin/llama-* llama.cpp
Dit produceert llama-cli, llama-mtmd-cli, llama-server, llama-embedding en llama-gguf-split in de llama.cpp-map.
Je kunt ook meerdere backends compileren en apparaten tijdens runtime kiezen. Dit is handig als je dezelfde build op heterogene machines implementeert.
Kies een GGUF-model en een kwantisatie
Om inferentie uit te voeren, heb je een GGUF-modelbestand (*.gguf) nodig. GGUF is een enkel-bestandsformaat dat modelgewichten bundelt plus gestandaardiseerde metadata die nodig is voor engines zoals llama.cpp.
Twee manieren om een model te krijgen
Optie A: Gebruik een lokaal GGUF-bestand
Download of kopieer een GGUF naar ./models/:
mkdir -p models
# Plaats je GGUF op models/my-model.gguf
Voer het vervolgens uit via pad:
llama-cli -m models/my-model.gguf -p "Hello! Leg uit wat llama.cpp is." -n 128
Optie B: Laat llama.cpp downloaden van Hugging Face
Moderne llama.cpp-builds kunnen downloaden van Hugging Face en bestanden in een lokale cache houden. Dit is vaak de eenvoudigste workflow voor snelle experimenten.
# Download een model van HF en voer een prompt uit
llama-cli \
--hf-repo ggml-org/tiny-llamas \
--hf-file stories15M-q4_0.gguf \
-p "Eens in een tijd," \
-n 200
Je kunt ook de kwantisatie specificeren in de repo-selector en de tool een overeenkomend bestand laten selecteren:
llama-cli \
--hf-repo unsloth/phi-4-GGUF:q4_k_m \
-p "Samenvatten van het concept van kwantisatie in één alinea." \
-n 160
Als je later een volledig offline-werkflow nodig hebt, forceert --offline het gebruik van de cache en voorkomt toegang tot het netwerk.
Kwantisatiekeuze voor lokale inferentie
Kwantisatie is het praktische antwoord op de vraag “Welke GGUF-kwantisatie moet je kiezen voor lokale inferentie” omdat het direct afweegt tussen kwaliteit, modelgrootte en snelheid.
Een pragmatisch startpunt:
- begin met een Q4- of Q5-variant voor CPU-first machines,
- ga over naar hogere precisie (of minder agressieve kwantisatie) als je de RAM of VRAM kunt betalen,
- als het model “dom” voelt voor je taak, is de oplossing vaak een beter model of een minder agressieve kwantisatie, niet alleen sampling-tweaks.
Onthoud ook dat contextvenster belangrijk is: grotere contextgroottes verhogen het geheugengebruik (soms dramatisch), zelfs als het GGUF-bestand zelf past.
llama-cli quickstart en belangrijke parameters
llama-cli is de snelste manier om te valideren dat je model laadt, je backend werkt en je prompts zich gedragen zoals verwacht.
Minimale run
llama-cli \
-m models/my-model.gguf \
-p "Schrijf een korte TCP vs UDP-vergelijking." \
-n 200
Interactieve chat-run
Gespreksmodus is ontworpen voor chat-templates. Het schakelt doorgaans interactief gedrag in en formatteert prompts volgens de template van het model.
llama-cli \
-m models/my-model.gguf \
--conversation \
--system-prompt "Je bent een bondige systeemengineer-assistent." \
--ctx-size 4096
Om generatie te beëindigen wanneer het model een specifieke sequentie afdrukt, gebruik je een reverse-prompt. Dit is vooral nuttig in interactieve modus.
Belangrijkste llama-cli-vlaggen
In plaats van 200 vlaggen te onthouden, focus op degenen die correctheid, latentie en geheugen domineren.
Model en download
| Doel | Vlaggen | Wanneer te gebruiken |
|---|---|---|
| Lokaal bestand laden | -m, --model |
Je hebt al *.gguf |
| Downloaden van Hugging Face | --hf-repo, --hf-file, --hf-token |
Snelle experimenten, geautomatiseerde caching |
| Offline cache forceren | --offline |
Airgapped of reproduceerbare runs |
Context en doorvoer
| Doel | Vlaggen | Praktische opmerking |
|---|---|---|
| Context vergroten of verkleinen | -c, --ctx-size |
Grotere contexten kosten meer RAM of VRAM |
| Promptverwerking verbeteren | -b, --batch-size en -ub, --ubatch-size |
Batchgroottes beïnvloeden snelheid en geheugen |
| CPU-parallelisme aanpassen | -t, --threads en -tb, --threads-batch |
Stem af op je CPU-kernen en geheugenbandbreedte |
GPU-offload en hardwareselectie
| Doel | Vlaggen | Praktische opmerking |
|---|---|---|
| Beschikbare apparaten tonen | --list-devices |
Nuttig als er meerdere backends zijn gecompileerd |
| Apparaten kiezen | --device |
Schakelt CPU plus GPU-hybride keuzes in |
| Laagjes offladen | -ngl, --n-gpu-layers |
Een van de grootste snelheidshefbomen |
| Multi-GPU-logica | --split-mode, --tensor-split, --main-gpu |
Nuttig voor multi-GPU-hosts of oneven VRAM |
Sampling en outputkwaliteit
| Doel | Vlaggen | Goede standaarden om mee te beginnen |
|---|---|---|
| Creativiteit | --temp |
0.2 tot 0.9 afhankelijk van taak |
| Nucleus sampling | --top-p |
0.9 tot 0.98 gebruikelijk |
| Token cutoff | --top-k |
40 is een klassiek baseline |
| Herhaling verminderen | --repeat-penalty en --repeat-last-n |
Vooral handig voor kleine modellen |
Voorbeeldwerklasten met llama-cli
Samenvatten van een bestand, niet alleen een prompt
llama-cli \
-m models/my-model.gguf \
--system-prompt "Je vat technische documenten samen. Maximaal vijf bullets." \
--file ./docs/incident-report.txt \
-n 300
Maak resultaten reproduceerbaarder
Wanneer je prompts debugt, fix de seed en verminder willekeur:
llama-cli \
-m models/my-model.gguf \
-p "Haal belangrijke risico's uit deze ontwerpnoot." \
-n 200 \
--seed 42 \
--temp 0.2
llama-server quickstart met OpenAI-compatibele API
llama-server is een ingebouwde HTTP-server die kan blootstellen:
- OpenAI-compatibele endpoints voor chat, completions, embeddings en responses,
- een Web UI voor interactief testen,
- optionele monitoring-endpoints voor productie-inzicht.
Start een server met een lokaal model
llama-server \
-m models/my-model.gguf \
-c 4096
Standaard luistert het op 127.0.0.1:8080.
Om extern te binden (bijvoorbeeld binnen Docker of een LAN), specificeer host en poort:
llama-server \
-m models/my-model.gguf \
-c 4096 \
--host 0.0.0.0 \
--port 8080
Optionele maar belangrijke server-vlaggen
| Doel | Vlaggen | Waarom het belangrijk is |
|---|---|---|
| Concurrentie | --parallel |
Beheert serverslots voor parallelle verzoeken |
| Betere doorvoer onder last | --cont-batching |
Schakelt continue batching in |
| Toegang beperken | --api-key of --api-key-file |
Authenticatie voor API-verzoeken |
| Prometheus-metrieken inschakelen | --metrics |
Nodig om /metrics te blootstellen |
| Risico van prompt-herverwerking verminderen | --cache-prompt |
Prompt-cachegedrag voor latentie |
Als je in containers draait, kunnen veel instellingen ook worden gecontroleerd via LLAMA_ARG_*-omgevingsvariabelen.
Voorbeeld API-aanroepen
Chat completions met curl
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"model": "gpt-3.5-turbo",
"messages": [
{ "role": "system", "content": "Je bent een behulpzame assistent." },
{ "role": "user", "content": "Geef me een snelle llama.cpp-checklist." }
],
"temperature": 0.7
}'
Tip voor echte implementaties: als je --api-key instelt, kun je deze sturen via een x-api-key-header (of blijven Authorization-headers gebruiken, afhankelijk van je gateway).
OpenAI Python-client gericht op llama-server
Met een OpenAI-compatibele server kunnen veel clients werken door alleen base_url te wijzigen.
import openai
client = openai.OpenAI(
base_url="http://localhost:8080/v1",
api_key="sk-no-key-required",
)
resp = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "Je bent een bondige assistent."},
{"role": "user", "content": "Leg threads vs batch size uit in llama.cpp."},
],
)
print(resp.choices[0].message.content)
Embeddings
OpenAI-compatibele embeddings zijn beschikbaar op /v1/embeddings, maar het model moet een embedding-poolingmodus ondersteunen die niet none is.
curl http://localhost:8080/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"input": ["hello", "world"],
"model": "GPT-4",
"encoding_format": "float"
}'
Als je een dedicated embedding-model draait, overweeg dan om de server in embeddings-only-modus te starten:
llama-server \
-m models/Qwen3-Embedding-0.6B-Q8_0.gguf \
--embeddings \
--host 127.0.0.1 \
--pooling last \
--port 8080
of als je llama-cpp met embedding-model op CPU wilt draaien:
CUDA_VISIBLE_DEVICES="" llama-server \
-m models/Qwen3-Embedding-0.6B-Q8_0.gguf \
--embeddings \
--host 127.0.0.1 \
--pooling last \
--port 8080
probeer het zo:
CUDA_VISIBLE_DEVICES="" llama-embedding \
-m /path/to/Qwen3-Embedding-0.6B-Q8_0.gguf \
-p "je tekst hier" \
--pooling last \
--verbose-prompt
Meerdere modellen serveren vanuit één proces
De bovenstaande voorbeelden binden llama-server bij het opstarten aan één model. Als je per verzoek tussen modellen moet schakelen — zonder het proces te herstarten — is dat waar routermodus voor is. Zie
llama-server routermodus: dynamisch modelwisselen zonder herstarts.
Prestaties, monitoring en productie-harding
De FAQ-vraag “Welke llama.cpp-commandoregelopties zijn het belangrijkst voor snelheid en geheugen” wordt veel eenvoudiger als je inferentie als een systeem behandelt:
- Geheugencel is meestal de eerste beperking (RAM op CPU, VRAM op GPU).
- Contextgrootte is een grote geheugenvermenigvuldiger.
- GPU-laag offload is vaak de snelste weg naar meer tokens per seconde.
- Batchgroottes en threads kunnen doorvoer verbeteren, maar kunnen ook de geheugendruk verhogen.
Voor een dieper, engineering-first perspectief, zie: LLM-prestaties in 2026: Benchmarks, Bottlenecks & Optimalisatie.
Als je gemeten llama-cli-stijl resultaten wilt op een GPU van de 16 GB-klasse — tokens per seconde, VRAM en GPU-belasting terwijl je context (19K / 32K / 64K) scant over dichte en MoE-GGUF’s — zie 16 GB VRAM LLM-benchmarks met llama.cpp (snelheid en context).
Monitoring van llama-server met Prometheus en Grafana
llama-server kan Prometheus-compatibele metriken blootstellen op /metrics wanneer --metrics is ingeschakeld. Dit past natuurlijk bij Prometheus scrap-configs en Grafana-dashboards.
Voor dashboards en alerts specifiek voor llama.cpp (en vLLM, TGI): Monitor LLM-inferentie in productie (2026): Prometheus & Grafana voor vLLM, TGI, llama.cpp. Brede gidsen: Observabiliteit: Monitoring, Metrieken, Prometheus & Grafana Gids en Observabiliteit voor LLM-systemen.
Basis hardening-checklist
Wanneer je llama-server bereikbaar is buiten localhost:
- gebruik
--api-key(of--api-key-file) zodat verzoeken geauthenticeerd zijn, - vermijd binding aan
0.0.0.0tenzij je het nodig hebt, - overweeg TLS via de SSL-vlaggen van de server of beëindig TLS bij een reverse proxy,
- beperk concurrentie met
--parallelom latentie onder last te beschermen.
Snelle oplossingen voor probleemoplossing
Het model laadt maar antwoorden zijn vreemd in chat
Chat-endpoints zijn het beste als het model een ondersteunde chat-template heeft. Als outputs ongeordend lijken, probeer:
llama-cli --conversationplus een expliciete--system-promptte gebruiken,- te verifiëren dat je model een instructie- of chat-gefineerde variant is,
- te testen met de server Web UI voordat je het in een app integreert.
Je stuit op out-of-memory
Verklein de context of kies een kleinere kwantisatie:
- verlaag
--ctx-size, - verlaag
--n-gpu-layersals VRAM het probleem is, - schakel over naar een kleiner model of een meer gecomprimeerde kwantisatie.
Het is traag op CPU
Begin met:
--threadsgelijk aan je fysieke kernen,- matige batchgroottes,
- valideren dat je een build hebt geïnstalleerd die bij je machine past (CPU-functies en backend).