Schnellstart mit llama.cpp: CLI und Server
Installation, Konfiguration und Nutzung von OpenCode
Ich komme immer wieder zu llama.cpp für die lokale Inferenz zurück – es gibt Ihnen Kontrolle, die Ollama und andere abstrahieren, und es funktioniert einfach. Das interaktive Ausführen von GGUF-Modellen mit llama-cli oder das Bereitstellen einer OpenAI-kompatiblen HTTP-API mit llama-server ist einfach.
Falls Sie sich noch zwischen lokalen, selbst gehosteten und Cloud-Ansätzen entscheiden müssen, beginnen Sie mit dem Leitfaden LLM-Hosting 2026: Lokale, selbst gehostete und Cloud-Infrastrukturen im Vergleich.
Warum llama.cpp im Jahr 2026
llama.cpp ist eine leichtgewichtige Inferenz-Engine mit einer Neigung zu:
- Portabilität über CPUs und mehrere GPU-Backends hinweg,
- vorhersehbare Latenz auf einer einzelnen Maschine,
- Flexibilität bei der Bereitstellung, von Laptops bis hin zu On-Premise-Knoten.
Es glänzt, wenn Sie Datenschutz und Offline-Betrieb wünschen, wenn Sie deterministische Kontrolle über Laufzeitflags benötigen oder wenn Sie Inferenz in ein größeres System einbetten möchten, ohne eine vollständige Python-lastige Stack zu betreiben.
Es ist auch hilfreich, llama.cpp zu verstehen, auch wenn Sie später einen Server-Laufzeit mit höherem Durchsatz wählen. Wenn Ihr Ziel maximaler Serving-Durchsatz auf GPUs ist, möchten Sie es möglicherweise mit vLLM vergleichen, indem Sie verwenden:
vLLM-Schnellstart: Hochleistungs-LLM-Serving
und Sie können Tool-Entscheidungen in folgenden Bereichen benchmarken:
Ollama vs. vLLM vs. LM Studio: Beste Art, LLMs lokal im Jahr 2026 auszuführen?.

Installieren Sie llama.cpp auf Windows, macOS und Linux
Es gibt drei praktische Installationspfade, je nachdem, ob Sie Bequemlichkeit, Portabilität oder maximale Leistung wünschen.
Installation über Paketmanager
Dies ist die schnellste Option, um „es laufen zu lassen".
# macOS oder Linux
brew install llama.cpp
# Windows
winget install llama.cpp
# macOS (MacPorts)
sudo port install llama.cpp
# macOS oder Linux (Nix)
nix profile install nixpkgs#llama-cpp
Tipp: Überprüfen Sie nach der Installation, ob die Tools vorhanden sind:
llama-cli --version
llama-server --version
Installation über vorgefertigte Binärdateien
Wenn Sie eine saubere Installation ohne Compiler wünschen, verwenden Sie die offiziellen vorgefertigten Binärdateien, die in den llama.cpp GitHub-Releases veröffentlicht wurden. Sie decken in der Regel mehrere Betriebssystemziele und mehrere Backends ab (nur CPU und GPU-fähige Varianten).
Ein üblicher Workflow:
# 1) Laden Sie das richtige Archiv für Ihr Betriebssystem und Backend herunter
# 2) Extrahieren Sie es
# 3) Führen Sie es aus dem extrahierten Ordner aus
./llama-cli --help
./llama-server --help
Kompilieren aus dem Quellcode für Ihre exakte Hardware
Wenn es Ihnen darauf ankommt, das Beste aus Ihrem CPU/GPU-Backend herauszuholen, kompilieren Sie aus dem Quellcode mit CMake.
git clone https://github.com/ggml-org/llama.cpp
cd llama.cpp
# CPU-Build
cmake -B build
cmake --build build --config Release
Nach dem Build befinden sich die Binärdateien typischerweise hier:
ls -la ./build/bin/
GPU-Builds in einem Befehl
Aktivieren Sie das Backend, das Ihrer Hardware entspricht (Beispiele für CUDA und 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: Vollständiger Build-Leitfaden
Unter Ubuntu 24.04 mit einer NVIDIA-GPU benötigen Sie das CUDA-Toolkit und OpenSSL, bevor Sie kompilieren. Hier ist eine getestete Sequenz:
1. Installieren Sie das 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. Fügen Sie CUDA Ihrer Umgebung hinzu (an ~/.bashrc anhängen):
# cuda toolkit
export PATH=/usr/local/cuda-13.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-13.1/lib64:$LD_LIBRARY_PATH
Führen Sie dann source ~/.bashrc aus oder öffnen Sie ein neues Terminal.
3. Installieren Sie OpenSSL-Entwicklungsheader (für einen sauberen Build erforderlich):
sudo apt update
sudo apt install libssl-dev
4. llama.cpp kompilieren (aus dem Verzeichnis, das Ihren llama.cpp-Clone enthält, mit aktiviertem CUDA):
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
Dies erzeugt llama-cli, llama-mtmd-cli, llama-server, llama-embedding und llama-gguf-split im Verzeichnis llama.cpp.
Sie können auch mehrere Backends kompilieren und Geräte zur Laufzeit auswählen. Dies ist nützlich, wenn Sie dasselbe Build auf heterogene Maschinen bereitstellen.
Wählen Sie ein GGUF-Modell und eine Quantisierung
Um Inferenz auszuführen, benötigen Sie eine GGUF-Modelldatei (*.gguf). GGUF ist ein Single-File-Format, das Modellgewichte plus standardisierte Metadaten bündelt, die von Engines wie llama.cpp benötigt werden.
Zwei Möglichkeiten, ein Modell zu erhalten
Option A: Eine lokale GGUF-Datei verwenden
Laden Sie eine GGUF-Datei herunter oder kopieren Sie sie in ./models/:
mkdir -p models
# Platzieren Sie Ihre GGUF unter models/my-model.gguf
Führen Sie es dann über den Pfad aus:
llama-cli -m models/my-model.gguf -p "Hallo! Erkläre, was llama.cpp ist." -n 128
Option B: Lassen Sie llama.cpp von Hugging Face herunterladen
Moderne llama.cpp-Builds können von Hugging Face herunterladen und Dateien in einem lokalen Cache speichern. Dies ist oft der einfachste Workflow für schnelle Experimente.
# Ein Modell von HF herunterladen und einen Prompt ausführen
llama-cli \
--hf-repo ggml-org/tiny-llamas \
--hf-file stories15M-q4_0.gguf \
-p "Es war einmal," \
-n 200
Sie können auch die Quantisierung im Repo-Selektor angeben und das Tool eine passende Datei auswählen lassen:
llama-cli \
--hf-repo unsloth/phi-4-GGUF:q4_k_m \
-p "Fasse das Konzept der Quantisierung in einem Absatz zusammen." \
-n 160
Wenn Sie später einen vollständig offline Workflow benötigen, zwingt --offline die Nutzung des Caches und verhindert den Netzwerkzugriff.
Quantisierungswahl für lokale Inferenz
Quantisierung ist die praktische Antwort auf die Frage „Welche GGUF-Quantisierung sollten Sie für die lokale Inferenz wählen", da sie direkt Qualität, Modellgröße und Geschwindigkeit abwägt.
Ein pragmatischer Ausgangspunkt:
- beginnen Sie mit einer Q4- oder Q5-Variante für CPU-First-Maschinen,
- wechseln Sie zu höherer Präzision (oder weniger aggressiver Quantisierung), wenn Sie den RAM oder VRAM aufbringen können,
- wenn das Modell für Ihre Aufgabe „dumm" wirkt, ist die Lösung oft entweder ein besseres Modell oder eine weniger aggressive Quantisierung, nicht nur Sampling-Anpassungen.
Denken Sie auch daran, dass die Kontextfenstergröße eine Rolle spielt: Größere Kontextgrößen erhöhen den Speicherverbrauch (manchmal drastisch), selbst wenn die GGUF-Datei selbst passt.
llama-cli Schnellstart und wichtige Parameter
llama-cli ist der schnellste Weg, um zu validieren, dass Ihr Modell geladen wird, Ihr Backend funktioniert und Ihre Prompts sich richtig verhalten.
Minimaler Lauf
llama-cli \
-m models/my-model.gguf \
-p "Schreibe einen kurzen TCP vs. UDP-Vergleich." \
-n 200
Interaktiver Chat-Lauf
Der Konversationsmodus ist für Chat-Vorlagen konzipiert. Er aktiviert typischerweise interaktives Verhalten und formatiert Prompts entsprechend der Vorlage des Modells.
llama-cli \
-m models/my-model.gguf \
--conversation \
--system-prompt "Sie sind ein präziser Systemengineering-Assistent." \
--ctx-size 4096
Um die Generierung zu beenden, wenn das Modell eine bestimmte Sequenz ausgibt, verwenden Sie einen Reverse-Prompt. Dies ist besonders im interaktiven Modus nützlich.
Wichtige llama-cli-Flags
Anstatt sich 200 Flags zu merken, konzentrieren Sie sich auf diejenigen, die Korrektheit, Latenz und Speicher dominieren.
Modell und Download
| Ziel | Flags | Wann verwenden |
|---|---|---|
| Lokale Datei laden | -m, --model |
Sie haben bereits *.gguf |
| Von Hugging Face herunterladen | --hf-repo, --hf-file, --hf-token |
Schnelle Experimente, automatisches Caching |
| Offline-Cache erzwingen | --offline |
Airgapped oder reproduzierbare Läufe |
Kontext und Durchsatz
| Ziel | Flags | Praktischer Hinweis |
|---|---|---|
| Kontext erhöhen oder reduzieren | -c, --ctx-size |
Größere Kontexte kosten mehr RAM oder VRAM |
| Promptverarbeitung verbessern | -b, --batch-size und -ub, --ubatch-size |
Batch-Größen beeinflussen Geschwindigkeit und Speicher |
| CPU-Parallelität einstellen | -t, --threads und -tb, --threads-batch |
Passen Sie Ihre CPU-Kerne und Speicherbandbreite an |
GPU-Offloading und Hardwareauswahl
| Ziel | Flags | Praktischer Hinweis |
|---|---|---|
| Verfügbare Geräte auflisten | --list-devices |
Hilfreich, wenn mehrere Backends kompiliert sind |
| Geräte auswählen | --device |
Ermöglicht CPU- und GPU-Hybrid-Wahlen |
| Layer offladen | -ngl, --n-gpu-layers |
Einer der größten Geschwindigkeitshebel |
| Multi-GPU-Logik | --split-mode, --tensor-split, --main-gpu |
Nützlich für Multi-GPU-Hosts oder ungleichen VRAM |
Sampling und Ausgabequalität
| Ziel | Flags | Gute Standardwerte zum Starten |
|---|---|---|
| Kreativität | --temp |
0,2 bis 0,9 je nach Aufgabe |
| Nucleus-Sampling | --top-p |
0,9 bis 0,98 üblich |
| Token-Cutoff | --top-k |
40 ist eine klassische Basislinie |
| Wiederholung reduzieren | --repeat-penalty und --repeat-last-n |
Besonders hilfreich für kleine Modelle |
Beispiel-Workloads mit llama-cli
Eine Datei zusammenfassen, nicht nur einen Prompt
llama-cli \
-m models/my-model.gguf \
--system-prompt "Sie fassen technische Dokumente zusammen. Ausgabe maximal fünf Stichpunkte." \
--file ./docs/incident-report.txt \
-n 300
Ergebnisse reproduzierbarer machen
Wenn Sie Prompts debuggen, setzen Sie den Seed fest und reduzieren Sie die Zufälligkeit:
llama-cli \
-m models/my-model.gguf \
-p "Extrahieren Sie die wichtigsten Risiken aus dieser Designnotiz." \
-n 200 \
--seed 42 \
--temp 0.2
llama-server Schnellstart mit OpenAI-kompatibler API
llama-server ist ein integrierter HTTP-Server, der Folgendes bereitstellen kann:
- OpenAI-kompatible Endpunkte für Chat, Vervollständigungen, Embeddings und Antworten,
- eine Web-Benutzeroberfläche für interaktive Tests,
- optionale Überwachungsendpunkte für Produktions-Sichtbarkeit.
Starten eines Servers mit einem lokalen Modell
llama-server \
-m models/my-model.gguf \
-c 4096
Standardmäßig hört es auf 127.0.0.1:8080.
Um extern zu binden (z. B. in Docker oder einem LAN), geben Sie Host und Port an:
llama-server \
-m models/my-model.gguf \
-c 4096 \
--host 0.0.0.0 \
--port 8080
Optionale, aber wichtige Server-Flags
| Ziel | Flags | Warum es wichtig ist |
|---|---|---|
| Parallelität | --parallel |
Steuert Server-Slots für parallele Anfragen |
| Besserer Durchsatz unter Last | --cont-batching |
Aktiviert kontinuierliches Batching |
| Zugriff einschränken | --api-key oder --api-key-file |
Authentifizierung für API-Anfragen |
| Prometheus-Metriken aktivieren | --metrics |
Erforderlich, um /metrics bereitzustellen |
| Risiko der Prompt-Neuverarbeitung reduzieren | --cache-prompt |
Prompt-Cache-Verhalten für Latenz |
Wenn Sie in Containern laufen, können viele Einstellungen auch über LLAMA_ARG_*-Umgebungsvariablen gesteuert werden.
Beispiel-API-Aufrufe
Chat-Vervollständigungen mit 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": "Sie sind ein hilfreicher Assistent." },
{ "role": "user", "content": "Geben Sie mir eine schnelle llama.cpp-Checkliste." }
],
"temperature": 0.7
}'
Tipp für echte Bereitstellungen: Wenn Sie --api-key setzen, können Sie es über einen x-api-key-Header senden (oder je nach Gateway weiterhin Authorization-Header verwenden).
OpenAI-Client in Python, der auf llama-server abzielt
Mit einem OpenAI-kompatiblen Server können viele Clients arbeiten, indem nur base_url geändert wird.
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": "Sie sind ein präziser Assistent."},
{"role": "user", "content": "Erkläre Threads vs. Batch-Größe in llama.cpp."},
],
)
print(resp.choices[0].message.content)
Embeddings
OpenAI-kompatible Embeddings werden unter /v1/embeddings bereitgestellt, aber das Modell muss einen Embedding-Pooling-Modus unterstützen, der nicht none ist.
curl http://localhost:8080/v1/embeddings \
-H "Content-Type: application/json" \
-H "Authorization: Bearer no-key" \
-d '{
"input": ["hallo", "welt"],
"model": "GPT-4",
"encoding_format": "float"
}'
Wenn Sie ein dediziertes Embedding-Modell ausführen, erwägen Sie, den Server im Embedding-Only-Modus zu starten:
llama-server \
-m models/Qwen3-Embedding-0.6B-Q8_0.gguf \
--embeddings \
--host 127.0.0.1 \
--pooling last \
--port 8080
oder wenn Sie llama-cpp mit Embedding-Modell auf CPU ausführen möchten:
CUDA_VISIBLE_DEVICES="" llama-server \
-m models/Qwen3-Embedding-0.6B-Q8_0.gguf \
--embeddings \
--host 127.0.0.1 \
--pooling last \
--port 8080
Probieren Sie es so aus:
CUDA_VISIBLE_DEVICES="" llama-embedding \
-m /path/to/Qwen3-Embedding-0.6B-Q8_0.gguf \
-p "Ihr Text hier" \
--pooling last \
--verbose-prompt
Bedienen mehrerer Modelle aus einem Prozess
Die Beispiele oben binden llama-server beim Start an ein einzelnes Modell. Wenn Sie zwischen Modellen pro Anfrage wechseln müssen – ohne den Prozess neu zu starten –, ist das der Router-Modus. Siehe
llama-server-Router-Modus: Dynamisches Modellwechseln ohne Neustarts.
Leistung, Überwachung und Produktionshärte
Die FAQ-Frage „Welche llama.cpp-Kommandozeilenoptionen sind für Geschwindigkeit und Speicher am wichtigsten" wird viel einfacher, wenn Sie Inferenz wie ein System behandeln:
- Speichergrenze ist meist die erste Einschränkung (RAM auf CPU, VRAM auf GPU).
- Kontextgröße ist ein wichtiger Speichervervielfacher.
- GPU-Layer-Offloading ist oft der schnellste Weg zu höheren Tokens pro Sekunde.
- Batch-Größen und Threads können den Durchsatz verbessern, erhöhen aber auch den Speicherdruck.
Für eine tiefere, engineering-first-Perspektive, sehen Sie: LLM-Leistung 2026: Benchmarks, Engpässe und Optimierung.
Wenn Sie gemessene Ergebnisse im llama-cli-Stil auf einer 16-GB-Klasse-GPU wünschen – Tokens pro Sekunde, VRAM und GPU-Last beim Durchwischen des Kontexts (19K / 32K / 64K) über dichte und MoE-GGUFs – sehen Sie 16-GB-VRAM-LLM-Benchmarks mit llama.cpp (Geschwindigkeit und Kontext).
Überwachung von llama-server mit Prometheus und Grafana
llama-server kann Prometheus-kompatible Metriken unter /metrics bereitstellen, wenn --metrics aktiviert ist. Dies passt natürlich zu Prometheus-Scrape-Konfigurationen und Grafana-Dashboards.
Für Dashboards und Alarme, die spezifisch für llama.cpp (und vLLM, TGI) sind: LLM-Inferenz in der Produktion überwachen (2026): Prometheus & Grafana für vLLM, TGI, llama.cpp. Umfassendere Leitfäden: Observability: Monitoring, Metriken, Prometheus & Grafana-Leitfaden und Observability für LLM-Systeme.
Grundlegendes Härte-Checkliste
Wenn Ihr llama-server über localhost hinaus erreichbar ist:
- verwenden Sie
--api-key(oder--api-key-file), damit Anfragen authentifiziert werden, - vermeiden Sie die Bindung an
0.0.0.0, es sei denn, Sie benötigen sie, - erwägen Sie TLS über die SSL-Flags des Servers oder beenden Sie TLS an einem Reverse-Proxy,
- beschränken Sie die Parallelität mit
--parallel, um die Latenz unter Last zu schützen.
Schnelle Troubleshooting-Erfolge
Das Modell lädt, aber die Antworten im Chat sind seltsam
Chat-Endpunkte sind am besten, wenn das Modell eine unterstützte Chat-Vorlage hat. Wenn die Ausgaben unstrukturiert aussehen, versuchen Sie:
llama-cli --conversationplus einen expliziten--system-promptzu verwenden,- zu überprüfen, ob Ihr Modell eine instruktions- oder chat-gestimmte Variante ist,
- mit der Server-Web-Benutzeroberfläche zu testen, bevor Sie es in eine App einbinden.
Sie stoßen auf Speichermangel (Out of Memory)
Reduzieren Sie den Kontext oder wählen Sie eine kleinere Quantisierung:
- senken Sie
--ctx-size, - reduzieren Sie
--n-gpu-layers, wenn VRAM das Problem ist, - wechseln Sie zu einem kleineren Modell oder einer stärker komprimierten Quantisierung.
Es ist auf der CPU langsam
Beginnen Sie mit:
--threadsgleich Ihren physischen Kernen,- moderaten Batch-Größen,
- validieren Sie, dass Sie einen Build installiert haben, der zu Ihrer Maschine passt (CPU-Features und Backend).