LLM-Server-Software im Vergleich: Ollama, llama.cpp, vLLM und LM Studio für GPU-Selbsthoster
Du hast ein GPU-Server oder einen PCs mit einer brauchbaren Grafikkarte, und du möchtest ein offenes Sprachmodell nicht nur herunterladen, sondern tatsächlich ansprechen — als API, als Web-Oberfläche, als Dienst, den mehrere Personen oder Anwendungen parallel nutzen können. Dann brauchst du nicht nur ein Modell, sondern Software, die das Modell rundum betreibt: Läd es, beantwortet Anfragen, puffert Warteschlangen, spricht eine Schnittstelle an, und verbraucht nicht die ganze GPU, während niemand fragt.
Das ist der Unterschied zwischen Modell-Download und LLM-Server: Ein Modell als GGUF- oder Safetensors-Datei ist nur das Gewicht. Ein LLM-Server ist das HALROUND-Programm, das das Gewicht lädt, Token generiert, Anfragen serialisiert oder parallelisiert, eine Schnittstelle (HTTP, gRPC, stdio) anbietet, und oft auch eine Eingabe- und Ausgaberegelung mitbringt. Ohne Server läufst du mit einem Modell in die Luft, das du nur über Python-Scripte oder CLI-Tools von Hand jagt — das funktioniert für ein einmaliges Experiment, nicht für einen Dauer-Server.
Welche Betriebssysteme spielen eine Rolle
Die meisten LLM-Server-Software läuft auf Linux und Windows. macOS kommt als Entwicklerplattform infrage, ist aber für GPU-Server-Themen weniger relevant (Metal-Unterstützung für kleinere Modelle existiert, ist aber kein Homelab-Standard).
- Linux (Debian, Ubuntu, ähnlich): Der natürliche Betriebshoste für Server-Software. Ollama liefert ein einzelnes Installationsskript für Linux, das keine zusätzliche Container-Laufzeit erfordert (es bringt eigene Backend-Abhängigkeiten mit). llama.cpp compiliert auf Linux direkt (Makefile, CMake) oder per Paket. vLLM läuft auf Linux mit Python/Umgebung (pip, virtualenv, container). Für GPU-Unterstützung auf Linux brauchst du die treiber (NVIDIA Kernel-Module, ROCm für AMD, IOPklad wo relevant), und die wird oft vor die Server-Software installiert.
- Windows: Ollama hat ein offizielles Windows-Binary (ein einzelnes .exe, das die gleichen CLI-Befehle wie die Linux-Version akzeptiert, mit einem systemd-ähnlichen Hintergrunddienst über den Windows-Service-Manager). llama.cpp läuft unter Windows über vorkompilierte Binarys oder CMake-Builds; der Server-Modus (./server) ist ebenfalls verfügbar. vLLM auf Windows ist möglich, aber die Installationspfade sind weniger sanft wegen der CUDA/ROCm-Abhängigkeiten; Docker-basiertes vLLM ist unter Windows über WSL2 möglich, was aber wieder eine Linux-Schicht einführt. LM Studio ist eine Windows-native Desktop-App.
- macOS: Ollama und LM Studio unterstützen macOS (Apple Silicon mit Metal-Acceleration für kleinere Modelle). llama.cpp compiliert mit Metal-Backend. vLLM ist auf macOS nicht die erste Wahl für Inference (kein CUDA, ROCm auch nicht nativ), mehr für Tests.
Faustregel: Wenn der Server dauerhaft laufen soll, auf dem ein GPU-Infrastruktur läuft, ist Linux der Standard-CL. Wenn du Windows als Host nutzt und eine GPU dauerhaft zum Server gehören soll, ist Ollama die glatteste Einzel-Software (Windows-Service bringt), und vLLM mit WSL2/Docker ist möglich, aber komplexer.
Vergleichstabelle
Die folgende Tabelle vergleicht die vier Software-Optionen nach Kriterien, die für Homelab- und kleine-Firmen-Betrachtungen relevant sind: Bedienoberfläche, Betriebssystem, GPU- und CPU-Betrieb, GGUF-Unterstützung, llama.cpp-Kompatibilität, parallele Anfragen und Warteschlange, Open-WebUI-Einbindung, Leerlauf-Verbrauch.
| Kriterium | Ollama | llama.cpp server | vLLM | LM Studio |
|---|---|---|---|---|
| Bedienoberfläche | CLI (ollama run, ollama list, ollama ps) + optional eigene Weboberfläche über Drittsoftware; keine eingebaute Web-Oberfläche | CLI-basiert (HTTP-API auf Port 8080); kein native GUI, keine Weboberfläche | CLI (vllm serve ...); kein native GUI; reine Server-Software | Eigene grafische Desktop-Oberfläche (Downloads, Chat, Modellverwaltung) |
| Betriebssystem | Linux, Windows, macOS (Apple Silicon) | Linux, Windows, macOS (plattformübergreifend, compiliert) | Linux (prime), Windows möglich über WSL2/Docker mit Einschränkungen | macOS, Windows (Desktop-App; keine Server-Widerleinung) |
| GPU-Betrieb | NVIDIA CUDA, ROCm (experimentell auf Linux), Metal (macOS) | CUDA, ROCm, Metal, DirectML (Windows), SVD-Varianten; flexibel über Build-Optionen und Backend-Selection | NVIDIA GPU primär (CUDA), MPI für Multi-GPU; ROCm ersichtlich in der Doku, weniger ausgereift als CUDA | GPU-Beschleunigung über Metal (macOS) / CUDA (Windows bei NVIDIA); keine ROCm-Option nennenswert |
| CPU-Betrieb | CPU-Inference möglich (langsam, für kleine Modelle oder Tests) | CPU-Inference (ggml-Backend, oft langsamer als CUDA, aber existiert) | CPU-Support inaktuell / nicht primär (fokussiert auf GPU) | CPU-Modus möglich, aber GPU bevorzugt |
| GGUF-Unterstützung | Native GGUF (Ollama-Modellformate basieren auf GGUF; ollama pull lädt GGUF-basierte Modelle) | Native GGUF (GGML/gguf als Kernformat; ./server dient GGUF-Dateien direkt) | Keine native GGUF-Unterstützung (fokussiert auf PyTorch/Safetensors-Checkpoint-Formate; GGUF-Konvertierung möglich, aber nicht der Standardweg); für GGUF-Nutzer sonst Ollama oder llama.cpp | Native GGUF (LM Studio lädt GGUF-Modelle, Verwaltung im UI) |
| Kompatibilität mit llama.cpp-basierten Servern | Ollama ist nicht auf llama.cpp aufgebaut (eigenes Backend), aber GGUF-format-kompatibel; Modellformate teilweise austauschbar (mit Konvertierung, nicht 1:1) | llama.cpp server ist der llama.cpp-basierte Server | Kein direktes llama.cpp-basiertes System; eigene Tensor-Parallelismus- und Scheduling-Implementierung | LM Studio nutzt llama.cpp-basiertes Backend intern (Desktop-App, nicht direkt als Server für externe Anfragen konzipiert, aber basiert auf llama.cpp-Code) |
| Parallele Anfragen / Warteschlange | Einfache Serialisierung (eine Anfrage nach der anderen im Standard; ollama serve hat keine ausgeprägte Warteschlangen-Konfiguration; parallele Anfragen möglich, aber GPU-Ressourcen teilen sich die Anfragen — kein explizites Queue-Management) | HTTP-API mit paralleler Anfrage-Akzeptanz; kein integriertes Queue-Management (Client-Seite oder externe Warteschlange nötig für Kontrolle); batch für Batch-Verarbeitung vorhanden | Explizites Scheduling, parallele Anfragen mit PagedAttention-Memory-Management; Multi-Gateway-unterstützung; Skalierung auf mehrere Anfragen gleichzeitig mit GPU-Parallelismus | Kein paralleler Server-Modus (Desktop-App; Einzelanfrage-Oberfläche) |
| Einbindung in Open WebUI | Direkte Kompatibilität: Open WebUI kann als "Ollama"-Anbieter konfiguriert werden (Host + Port, meist 11434); Open WebUI spricht die Ollama-API | Open WebUI kann einen Custom-API-Endpunkt konfigurieren, aber native llama.cpp-Integration weniger direkt als Ollama; erfordert ggf. Adapter oder Proxy | Keine native Open WebUI-Integration (Open WebUI erwartet eine OpenAI-kompatible oder Ollama-API; vLLM kann OpenAI-kompatible API ausliefern mit Konfiguration, aber nicht 1:1 eingebunden wie Ollama) | Kein Server-Modus; LM Studio als API-Server umbaubar über eigene Konfiguration (LM Studio hat einen lokalen API-Modus, aber weniger standardisiert als Ollama für Open WebUI) |
| Ressourcenverbrauch im Leerlauf | Ollama-Daemon läuft als Hintergrundprozess; verbraucht RAM für geladene Modelle (Modelle bleiben geladen, wenn sie im Speicher sind, sonst Laufzeit-Laden); GPU-Ressourcen abhängig von geladenem Modell; ohne Anfrage relativ ruhig | Server-Prozess läuft; ähnliches Laden von Modellen in RAM/VRAM; ohne Anfrage idle, aber Prozess vorhanden | vLLM-Prozess läuft, hält GPU-Speicher für den Modell-Checkpoint und Scheduling-Strukturen; ohne Anfrage idle, aber GPU-Speicher gebunden | LM Studio als Desktop-App verbraucht RAM/VRAM bei geladenem Modell; ohne Anfrage idle als App, aber nicht als Daemon |
Kurz gesagt: Wenn du eine einfache, gut dokumentierte Einsteigerlösung suchst, die eine API anbietet, die Open WebUI direkt versteht, und die auf Linux und Windows läuft — ist das Ollama. Wenn du YYUF-Modelle direkt, plattformnah, ohne Zwischenschicht von Ollama willst und bereit bist, selbst die HTTP-API-Konfiguration zu machen — ist llama.cpp der Weg. Wenn du größere Deployment-Produktion mit GPU-Parallelismus und Scheduling brauchst — ist vLLM der Kandidat. Wenn du eine Desktop-Oberfläche zum Ausprobieren und Chatten willst — ist LM Studio die Wahl.
Ollama
Was es ist: Ein Einzel-Dienst, der ein Modell (meist als GGUF-basiertes Ollama-Modellformat) lädt, eine lokale HTTP-API auf Port 11434 anbietet, und CLI-Tools zum Interagieren mitbringt (ollama run, ollama list, ollama ps, ollama pull, ollama stop). Es ist nicht auf llama.cpp aufgebaut, aber spricht GGUF-kompatible Modelle an und ist kompatibel mit Clients, die eine Ollama-API erwarten.
Stärken:
- Einrichtung: Ein einzelnes Installationsskript auf Linux (
curl -fsSL https://ollama.com/install.sh | sh), oder ein offizielles Windows-Binary, das als Windows-Service läuft. Keine Python-Umgebung, keine PyTorch-Installation, keine CUDA-Konfiguration für den Anfang. - Modellverwaltung:
ollama pull <modell>lädt Modelle aus dem Ollama-Registry (öffentliche Modelle, vorkonfiguriert).ollama list,ollama rmverwalten lokale Modelle. - API-Kompatibilität: Die Ollama-API (enthaltene HTTP-Ports) wird von Open WebUI, Cherry Studio und ähnlichen Oberflächen direkt verstanden — die Einbindung in Oberflächen ist gut dokumentiert.
- Laufzeit: Läuft als Hintergrunddienst (systemd auf Linux, Windows-Service auf Windows), startet beim Booten, wenn konfiguriert.
- Windows-Support: Offizielles Windows-Binary mit Service-Lauf — das ist für Windows-Hosts mit GPU eine praktische Einzel-Lösung.
Schwächen:
- Warteschlangen-Management: Kein explizites Queue-Management; parallele Anfragen teilen sich GPU-Ressourcen, ohne Kontrolle über Reihenfolge oder Priorität. Für Mehrbenutzer-Szenarien kann das zu unerwarteten Wartezeiten führen.
- GPU-Ressourcen: Immer wenn ein Modell geladen ist, hält es VRAM/GPU-Speicher, auch während kein Anfrage läuft. Bei mehreren Modellen, die zwischengespeichert werden, summieren sich die VRAM-Ansprüche.
- Modellformate: Ollama nutzt eigene Modellformate, die auf GGUF basieren, aber nicht jedes GGUF-Modell 1:1 übernehmen kann (ein bis zwei Konvertierungsschritte nötig für bestimmte Modelle). Für Standard-Modelle aus dem Ollama-Registry kein Problem.
- Skalierung: Für große Multi-GPU-Setups, GPU-Parallelismus über 노드-Grenzen, ist Ollama nicht die erste Wahl (vLLM ist für solche Szenarien konzipierter).
llama.cpp server
Was es ist: Ein aus fpm dem llama.cpp-Projekt stammender Serve-Modus (./server), der eine HTTP-API auf einem konfigurierbaren Port (Standard 8080) anbietet und GGUF-Modelle direkt anspricht. Es ist plattformübergreifend, compiliert aus dem Source, und bringt keine eingebaute Weboberfläche mit.
Stärken:
- Direkte GGUF-Unterstützung: Llama.cpp ist ein Native-GGUF-Tool —
./serverlädt GGUF-Dateien direkt, ohne Zwischenformat. Du platzierst eine GGUF-Datei und startest den Server mit dem Pfad. - Plattform-Flexibilität: Compiliert auf Linux, Windows, macOS; Backend-Auswahl (CUDA, ROCm, Metal, DirectML, CPU) je nach Build-Optionen. Für AMD-GPU-Besitzer auf Linux ist ROCm möglich, für Windows-Nutzer mit AMD ist DirectML ein Weg (Performance je nach Setup).
- Leichtgewichtig: Kein Python, kein PyTorch, kein Ollama-Daemon — ein Binär-Server, der GGUF anfängt und HTTP-Antwort liefert. Für Nutzer, die ihre eigene Laufzeit kompakt halten wollen, ist das ein Plus.
- Batch-Verarbeitung:
batch-Mode für Batch-Anfragen vorhanden — nützlich für Stapel-Verarbeitung, nicht für interaktiven Chat, aber für bestimmte Workflows. - Konfigurierbarkeit: Viele CLI-Parameter für Modell-Pfad, Port, GPU-Layers, Thread-Count, Kontext-Länge, und weitere Parameter direkt beim Start beeinflussbar.
Schwächen:
- Keine Weboberfläche: Keine eingebaute GUI oder Web-Oberfläche; du sprichst den Server über HTTP-API oder CLI. Für Nutzer, die eine Chat-Oberfläche wollen, ist ein externer Client (Open WebUI mit Custom-API-Konfiguration, Cherry Studio, oder ähnliches) nötig.
- Einrichtungsaufwand: Compilieren oder vorkompilierte Binarys besorgen; GPU-Backend auswählen und ggf. Build-Optionen setzen. Das ist mehr Aufwand als das Ollama-Installationsskript, aber für erfahrene Nutzer überschaubar.
- Warteschlangen-Management: Kein integriertes Queue-Management; parallele Anfragen werden angenommen, aber ohne explizite Kontrolle über Warteschlangen-Länge oder Reihenfolge. Für Mehrbenutzer-Kontrolle ist externe Warteschlangen-Software oder Client-Seiten-Logik nötig.
- Open WebUI-Integration: Open WebUI erwartet primär die Ollama-API; eine Custom-API-Konfiguration für llama.cpp server ist möglich, aber weniger direkt als die native Ollama-Integration. Das kann Freenzen erfordern.
vLLM
Was es ist: Eine Produktions-gerichtete LLM-Server-Software von B형 (vLLM-Projekt), die auf GPU-Parallelismus, PagedAttention für effiziente Memory-Verwaltung, und Scheduling von parallelen Anfragen fokussiert ist. Sie spricht PyTorch/Safetensors-Checkpoint-Formate direkt an, nicht primär GGUF. Für große Modelle auf Multi-GPU-Setups ist sie konzipiert.
Stärken:
- GPU-Parallelismus: vLLM konzipiert für parallele Anfrage-Bearbeitung mit effizienter VRAM-Nutzung (PagedAttention). Für Szenarien, in denen viele Anfragen gleichzeitig kommen und GPU-Ressourcen geteilt werden, ist das ein struktureller Vorteil gegenüber einfachen Einzel-Anfrage-Servern.
- Skalierung: Multi-GPU-Unterstützung (Tensor-Parallelismus über mehrere GPU), für größere Modelle auf Servern mit mehreren Grafikkarten.
- API-Kompatibilität: vLLM kann eine OpenAI-kompatible API ausliefern — für Anwendungen, die eine OpenAI-ähnliche Schnittstelle erwarten, ist das ein Integration-Vorteil.
- Produktions-Profil: Für Firmen- oder Homelab-Setups, die LLMs als Dauer-Service betreiben wollen, mit Vorstellungen von Load, Parallelität und Planbarkeit, ist vLLM strukturierter als Einzel-Dienste.
Schwächen:
- GGUF-Unterstützung: Keine native GGUF-Unterstützung; das bedeutet: wenn deine Modelle als GGUF vorliegen, konvertierst du oder nutzt eine andere Software (Ollama, llama.cpp). Für Nutzer, die nur GGUF-Modelle vorliegen haben, ist vLLM nicht der direkte Weg.
- GPU-Abhängigkeit: vLLM ist primär für NVIDIA-GPU+CUDA konzipiert; ROCm-Unterstützung ist in der Doku ersichtlich, aber CUDA ist der Hauptpfad. Für AMD/Selbsthoster ohne NVIDIA ist das ein Einschränkung.
- Installationskomplexität: Python-Umgebung, CUDA-Abhängigkeiten, Modell-Checkpoint-Formate — mehr Vorab-Aufwand als Ollama. Docker-Images existieren, was die Installation erleichtert, aber GPU-Passthrough in Docker auf Linux (nvidia-container-toolkit) ist ein eigener Schritt.
- Leerlauf-Verbrauch: vLLM hält GPU-Speicher für Modelle und Scheduling-Strukturen, auch ohne aktive Anfrage — vergleichbar mit anderen Server-Software, aber für kleine Setups ohne Parallelitäts-Anforderung schnell überdimensioniert.
- Open WebUI-Integration: Keine native Einbindung wie Ollama; eine OpenAI-kompatible Konfiguration kann funktionieren, ist aber nicht 1:1 wie die Ollama-Integration dokumentiert.
LM Studio
Was es ist: Eine Desktop-App (Windows/macOS) mit eigener grafischer Oberfläche zum Herunterladen, Verwalten und Chatten mit lokalen GGUF-Modellen. Intern basiert LM Studio auf llama.cpp-Code, aber als Desktop-Produkt, nicht als Server-Software für externe Anfragen.
Stärken:
- Bedienoberfläche: Eine graphische Oberfläche zum Herunterladen von Modellen, zum Konfigurieren von GPU/CPU-Parametern, und zum Chatten — ohne CLI. Für Einsteiger, die eine Oberfläche bevorzugen, ist das ein deutlicher Vorteil.
- GGUF-Native: Lädt und dient GGUF-Modelle direkt; Modellverwaltung im UI.
- Windows/macOS: Native Desktop-App für Windows und macOS; für Nutzer, die auf diesen Plattformen bleiben wollen, ohne Linux-Server, ist das ein praktischer Weg zum Ausprobieren.
- Lokaler API-Modus: LM Studio bietet einen lokalen API-Modus (ein HTTP-Endpunkt auf einem konfigurierbaren Port), der für bestimmte Anwendungen genutzt werden kann — aber nicht ganz so standardisiert wie die Ollama-API für Open WebUI.
Schwächen:
- Kein Server-Produkt: LM Studio ist eine Desktop-App, nicht konzipiert als Dauer-Server für externe Anfragen; der lokale API-Modus ist vorhanden, aber nicht das gleiche Profil wie ein Daemon-Ollama oder ein
llama.cpp server. Für einen Server, der dauerhaft läuft und mehrere Benutzer bedient, ist LM Studio weniger passend. - Keine Linux-Version: Keine Linux-Desktop-App; für Linux-Server-Nutzer ist das irrelevant (Linux-Nutzer nutzen Ollama, llama.cpp oder vLLM).
- Warteschlangen-Management: Kein Warteschlangen-Management; parallele Anfragen im lokalen API-Modus werden nicht explizit verwaltet.
- VRAM-Kontrolle: GPU-Ressourcen-Verwaltung in der Desktop-App weniger konfigurierbar als bei CLI-basierten Servern; GPU-Layers, Kontext-Länge und ähnliche Parameter sind im UI einstellbar, aber nicht so flexibel wie bei llama.cpp oder Ollama CLI.
- Open WebUI: Keine native Open WebUI-Integration; der lokale API-Modus kann konfiguriert werden, ist aber nicht der Standard-Pfad.
GGUF-Dateien und Q-Stufen: was ist sinnvoll
GGUF (GPT-Generated Unified Format) ist ein Modellformat, das von llama.cpp stammt und Weight-Quantisierung in verschiedenen Q-Stufen (Quantisierungsqualität) unterstützt. Q-Stufe bestimmt, wie viele Bit pro Gewicht verwendet werden — weniger Bit = weniger VRAM/Bedarf und oft kleinere Dateigröße, aber potenziell geringere Qualität. Die Wahl der Q-Stufe ist eine Kompromisspraktik: VRAM-Budget gegen Qualität.
Wichtige Q-Stufen (gängig bei GGUF-Modellen):
- Q4_K_M: 4-bit, mit "mittel"-Qualitäts-Kompensation. Oft der Standard-Kompromiss für 7B- und 13B-Modelle, wenn VRAM knapp ist. VRAM-Bedarf grob im Bereich mehrerer GB (je nach Modellgröße).
- Q5_K_M / Q5_K_S: 5-bit; Q5_K_S ist etwas schärfer als Q5_K_M. Sinnvoll für Modelle, bei denen etwas mehr Qualität gewünscht ist und VRAM es zulässt.
- Q6_K: 6-bit; noch höhere Qualität, größere VRAM-Ansprüche.
- Q8_0: 8-bit; nähert sich der Originalqualität an (weniger Quantisierungsverlust), aber deutlich mehr VRAM. Für größere Modelle oft unerschwinglich auf Single-GPU.
- IQ4_XS: Neuere Quantisierungs-Variante (im GGUF-kontext "IQ"-Präfix); kleinere Dateigröße bei annehmbarer Qualität für bestimmte Modelle; geeignet wenn VRAM sehr knapp ist und kleinere Modelle genutzt werden.
Keine Benchmarks erfinden: Die hier genannten VRAM-Werte sind grobe Orientierungshilfen nach Modellgröße und Q-Stufe, keine gemessenen Benchmarks. Die tatsächliche VRAM-Nutzung hängt von Kontext-Länge, GPU-Runtime, und 세부-Parametern ab. Eine grobe Orientierung:
- 7B-Modelle (z.B. ein 7B-Base-Modell): Q4_K_M oft im Bereich einiger GB VRAM; Q5_K_M etwas mehr; Q8_0 deutlich mehr. Für eine moderne GPU mit 8 GB VRAM oft machbar (Q4_K_M, Q5_K_M), für 4 GB VRAM eher IQ4_XS oder kleinere Varianten.
- 13B-Modelle: Q4_K_M mehrere GB, Q5_K_M mehr, Q8_0 noch mehr. Für 8 GB VRAM oft Q4_K_M oder Q5_K_S machbar, IQ4_XS wenn knapper.
- 30B-Modelle und größer: Q4_K_M mehrere zehn GB VRAM, oft Multi-GPU oder CPU-Offload nötig. Für Single-GPU mit 24 GB VRAM (z.B. RTX-4090) Q4_K_M oder Q5_K_M möglich, daneben Q6_K bei ausreichend VRAM. Q8_0 für 30B auf Single-GPU deutlich anspruchsvoller.
- 70B-Modelle: Single-GPU kaum machbar (VRAM-Anspruch über 24 GB hinaus); Multi-GPU oder CPU-Offload-Umgebungen nötig; Q4_K_M, Q5_K_M sind Standard-Wahl für Multi-GPU-Setups.
Faustregel ohne Benchmarks: Für Homelab-Setups mit einer Consumer-GPU (8–12 GB VRAM) sind 7B-Modelle mit Q4_K_M oder Q5_K_M der Normalfall. Für 16–24 GB VRAM kommen 13B-Modelle mit Q4_K_M in Frage, 30B-Modelle mit Q4_K_M bei ausreichender VRAM (und ggf. GPU-Offload-Konfiguration). Bei sehr knappem VRAM (unter 8 GB) sind IQ4_XS oder kleinere Q-Stufen einzusetzen, aber Qualitätseinschränkungen sind real.
Praktischer Hinweis: Eine GGUF-Datei laden und als Benchmark bezeichnen ist nicht dasselbe wie die Server-Software konfigurieren — die Server-Software (Ollama, llama.cpp server, LM Studio) muss mit der Q-Stufe, der Kontext-Länge und der GPU-Layers-Konfiguration harmonieren. Kontext-Länge (z.B. 4096, 8192, 16384 Token) erhöht den VRAM-Verbrauch während der Inferenz (KV-Cache), unabhängig von der Q-Stufe des Modells — das ist ein separater VRAM-Faktor.
Anleitung: Reines Ollama mit API-Zugriff
Dieser Weg richtet Ollama als lokalen Dienst ein, der eine API auf Port 11434 anbietet. Eine Oberfläche (z.B. Open WebUI) oder ein Client spricht die API an. Für Einbenutzer-Setup oder einfache API-Nutzung ist das der direkte Weg.
Voraussetzungen:
- Linux oder Windows mit installiertem Ollama (Linux: Installationsskript; Windows: offizielles Windows-Binary, das als Service läuft).
- GPU-Treiber installiert (NVIDIA CUDA Treiber auf Linux/Windows, oder ROCm auf Linux für AMD-GPU, oder Metal auf macOS Apple Silicon).
- VRAM-Speicher beachten: das Modell, das du laden möchtest, muss in VRAM oder RAM/VRAM-Kombination passen (je nach Modellgröße und Q-Stufe).
Schritt 1: Ollama installieren (Linux-Beispiel)
curl -fsSL https://ollama.com/install.sh | sh
Danach startet Ollama als systemd-Dienst automatisch (oder lässt sich mit systemctl start ollama starten; systemctl enable ollama für Autostart).
Schritt 2: Erster Modell-Check
ollama list
Ohne vorheriges ollama pull ist die Liste leer. Ein Modell herunterladen:
ollama pull <modellname>
Beispielsweise ein 7B-Modell aus dem Ollama-Registry (Modellname je nach verfügbarer Liste; ollama list und die Ollama-Dokumentation zeigen verfügbare Modelle).
Schritt 3: Modell starten und testen
ollama run <modellname>
Das bringt eine interaktive CLI. Zum Beenden /bye oder Strg+D. Danach läuft das Modell im Hintergrund (Ollama hält es geladen, wenn es nicht explizit gestoppt wird).
Schritt 4: API-Zugriff prüfen
Ollama spricht standardmäßig auf http://localhost:11434. Eine einfache Test-Anfrage (z.B. mit curl):
curl http://localhost:11434/api/generate -d '{"model": "<modellname>", "prompt": "Hallo, kurze Antwort bitte.", "stream": false}'
Die Antwort ist JSON mit dem generierten Text. Für streaming-Anfragen setzt man stream: true und verarbeitet die Chunk-Antworten.
Schritt 5: Open WebUI einbinden (optional)
Wenn du Open WebUI (ein separates Stück Software, z.B. über Docker oder direkt) nutzt, konfiguriere Open WebUI mit dem Ollama-Host (standardmäßig http://localhost:11434 oder die IP des Ollama-Servers, wenn Open WebUI auf einem anderen Host läuft). Open WebUI spricht die Ollama-API direkt an.
Hinweis VRAM: Das geladene Modell verbraucht VRAM, solange es im Speicher ist. Wenn mehrere Modelle zwischengespeichert sind, summieren sich die VRAM-Ansprüche. ollama stop <modellname> entlädt das Modell aus dem Speicher (ggf. VRAM freigeben). Für Systeme mit knappem VRAM ist das ein Faktor: zwischen Modellen wechseln bedeutet Laden/Unladen, was Zeit kostet.
Anleitung: Mehrbenutzer-Server mit Open WebUI
Dieser Weg kombiniert einen LLM-Server (z.B. Ollama oder llama.cpp server) mit einer Web-Oberfläche (Open WebUI), die mehrere Benutzer oder mehrere Anwendungen bedient. Open WebUI ist eine separate Weboberfläche, die eine LLM-API (Ollama-API oder Custom-API) als Backend spricht.
Voraussetzungen:
- Ein LLM-Server, der eine API anbietet (Ollama auf Port 11434, oder llama.cpp server auf einem konfigurierten Port).
- Open WebUI installiert und konfiguriert, das auf den LLM-Server zugreift.
- Netzwerk: sowohl der LLM-Server als auch Open WebUI müssen erreichbar sein (auf demselben Host oder über Netzwerk).
Schritt 1: LLM-Server vorbereiten
Richte Ollama (wie oben) oder llama.cpp server ein. Für Ollama:
# Ollama-Dienst läuft (systemd auf Linux)
systemctl status ollama
Für llama.cpp server (nach Kompilierung oder Binary-Besorgung):
./server -m <pfad/zur/gguf-datei> -c <kontextlaenge> --port 8080
(Der Port ist konfigurierbar; der Standard ist 8080.)
Schritt 2: Open WebUI installieren (Docker-Beispiel)
Open WebUI wird oft über Docker bereitgestellt. Ein Beispiel für Docker auf Linux:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
--name open-webui \
ghcr.io/open-webui/open-webui:main
Der OLLAMA_BASE_URL zeigt Open WebUI auf den Ollama-Server (hier host.docker.internal, weil Open WebUI in Docker läuft und Ollama auf dem Host). Für llama.cpp server als Backend müsste die URL entsprechend angepasst werden (Custom-API-Konfiguration in Open WebUI).
Schritt 3: Open WebUI initialisieren
Nach dem Start von Open WebUI (Docker-Container, Webinterface auf Port 3000) öffnet sich die Weboberfläche (http://localhost:3000 oder die IP des Servers). Die erste Nutzung erfordert oft eine Initialisierung (Admin-Konto, Konfiguration). Open WebUI verbindet sich mit dem konfigurierten LLM-Server und zeigt Modelle an, die dort verfügbar sind.
Schritt 4: Mehrbenutzer-Konfiguration (optional)
Open WebUI unterstützt mehrere Nutzer (Benutzerkonten, Chat-Isolation). Für ein Homelab- oder Firmen-Setup mit mehreren Personen, die den Server nutzen, sind Benutzerkonten in Open WebUI die isolierende Schicht — nicht der LLM-Server selbst (Ollama oder llama.cpp server haben keine Benutzer-Isolation; die Isolation liegt in der Open WebUI-Schicht).
Schritt 5: VRAM-Hinweis für Mehrbenutzer
Der LLM-Server (Ollama/llama.cpp server) lädt das Modell undhält es im VRAM. Parallele Anfragen aus mehreren Nutzern (über Open WebUI) teilen sich die GPU-Ressourcen des Servers — ohne explizites Queue-Management (bei Ollama und llama.cpp server) ggf. zu Wartezeiten bei hoher Last. Für mehrere gleichzeitige Nutzer auf einem Single-GPU-Setup ist das ein praktischer Faktor: Entweder die GPU ist groß genug für mehrere parallele Inferenzen, oder die Nutzer akzeptieren Warteschlangen-Verzögerungen.
Hinweis zu llama.cpp server als Backend für Open WebUI:
Open WebUI konfiguriert primär Ollama als Backend; eine Custom-API-Konfiguration für llama.cpp server ist möglich, aber weniger standardisiert. In der Open WebUI-Konfiguration gibt es einen Custom-API-Endpunkt, der auf die llama.cpp server-HTTP-API (Port 8080) zeigen kann; die Antwortformate müssen kompatibel sein (Open WebUI erwartet bestimmte API-Formate; bei Nicht-Kompatibilität funktioniert die Einbindung nicht direkt ohne Anpassung).
Häufige Fehler
1. Port 11434 (Ollama) oder Port 8080 (llama.cpp server) ins Internet freigeben
Ein häufiger Fehler: die Firewall so konfigurieren, dass der Ollama-Port (11434) oder der llama.cpp-server-Port (8080) von außen erreichbar ist — ohne Authentifizierung, ohne Access-Control. Beide Ports haben keine eingebaute Authentifizierung im Standard (Ollama: kein Passwort im Standard-Modus; llama.cpp server: keine Authentifizierung im Standard). Wer also den Port ins Internet gibt, exponiert die API ohne Schutz. Korrekt: Port nicht ins Internet geben, oder nur über einen Reverse-Proxy mit Authentifizierung (Basic Auth, OAuth, etc.) und TLS zugreifen. Für Homelab-Server, die nur lokal genutzt werden, bleibt der Port auf localhost oder im lokalen Netzwerk.
2. Ollama ohne Authentifizierung betreiben
Ollama im Standard-Modus hat keine eingebaute Authentifizierung. Auf einem Server, der von mehreren Nutzern genutzt wird, oder der über das Netzwerk erreichbar ist, bedeutet das: jeder, der den Port erreicht, spricht die API an. Für einen Single-User-Laptop ist das kein Problem; für einen Server im Netzwerk ist das ein Risiko. Korrekt: Entweder den Server auf localhost halten, oder einen Reverse-Proxy mit Authentifizierung davor setzen, oder das Netzwerk so gestalten, dass nur vertrauenswürdige Hosts zugreifen können (VLAN, Firewall-Regeln).
3. Modellwechsel zur Laufzeit ohne berücksichtigen von VRAM
Ein Modell laden, ein anderes Modell laden, ohne das erste zu entladen: beide Modelle können teilweise im VRAM verbleiben (je nach Server-Implementierung und Speicherverwaltung), was VRAM-Ansprüche summieren lässt. Korrekt: Modell explizit entladen, bevor das nächste geladen wird (Ollama: ollama stop <modellname>; llama.cpp server: Server-Neustart oder Konfiguration, die das Modell entlädt; bei vLLM: Modell-Loading/Unloading über API-Konfiguration).
4. Docker-Container ohne GPU-Durchreichen
Wenn Ollama, llama.cpp server oder vLLM in Docker läuft (z.B. für Open WebUI-Zwecke oder für isolierte Umgebungen), muss die GPU an den Container durchgereicht werden. Ohne GPU-Passthrough läuft der Server ohne GPU-Beschleunigung (CPU-Inferenz oder Fehler, je nach Software). Korrekt: Docker-GPU-Passthrough konfigurieren (NVIDIA: docker run --gpus all ..., oder nvidia-container-toolkit installieren; AMD ROCm: entsprechende Docker-Flags; WSL2 auf Windows: GPU-Passthrough in die WSL2-Umgebung). Ohne das läuft der Container ohne GPU.
5. Server läuft, aber die Härte fehlt (fail2ban, Authentifizierung, Zugriffskontrolle)
Ein LLM-Server, der im lokalen Netzwerk läuft und keine Authentifizierung hat, ist für das lokale vertrauenswürdige Netzwerk akzeptabel. Sobald der Server von mehreren Nutzern bedient wird, oder über ein Netzwerk mit unsicheren Hosts erreichbar ist, fehlt die Härte. Korrekt: Authentifizierungsschicht (Reverse-Proxy mit Basic Auth, OAuth, oder eingebaute Authentifizierungsschicht der Software, wenn vorhanden), Firewall-Regeln (nur bestimmte IPs), und ggf. fail2ban für Brute-Force-Schutz auf einem Reverse-Proxy oder Server (wenn der Server extern erreichbar ist). Für reine Homelab-Setups auf localhost oder isoliertem Netzwerk ist das weniger kritisch.
FAQ
F1: Brauche ich einen LLM-Server, wenn ich nur ein Modell heruntergeladen habe?
Nein, nicht zwingend. Ein Modell als Datei kann mit CLI-Tools oder Python-Skripten angesprochen werden. Aber für wiederkehrende Nutzung, API-Zugriff, Web-Oberfläche oder parallele Anfragen ist ein Server die praktische Wahl. Ein Modell ohne Server ist ein Datei, kein Dienst.
F2: Welche Software soll ich nehmen, wenn ich Open WebUI nutzen will?
Open WebUI ist primär für die Ollama-API konzipiert. Wenn du Open WebUI als Oberfläche willst, ist Ollama der direkte Weg (native Kompatibilität). Llama.cpp server ist mit einer Custom-API-Konfiguration möglich, aber weniger direkt. vLLM kann eine OpenAI-kompatible API liefern, ist aber nicht die 1:1-Integration wie Ollama für Open WebUI.
F3: Läuft Ollama auf AMD-GPUs?
Ollama unterstützt ROCm auf Linux (experimentell, je nach Version und GPU); auf Windows mit AMD-GPU ist die Unterstützung weniger direkt (kein CUDA, ROCm auf Windows nicht der Standardpfad). Für AMD-Selfhoster auf Linux ist Ollama mit ROCm ein Weg; für Windows-Nutzer mit AMD-GPU sind llama.cpp mit DirectML oder ROCm-Konfiguration (je nach Setup) Alternativen.
F4: Was ist der Unterschied zwischen Ollama und llama.cpp server
Ollama ist ein Dienst mit eigener Modellverwaltung, Registry, und einer API, die Open WebUI direkt versteht. Llama.cpp server ist ein Server-Modus aus dem llama.cpp-Projekt, der GGUF-Modelle direkt anspricht und eine HTTP-API anbietet, aber keine eingebaute Modell-Registry oder Weboberfläche mitbringt. Beide dienen GGUF-kompatible Modelle, aber mit unterschiedlichen Ökosystemen.
F5: Welche Q-Stufe soll ich für ein 7B-Modell auf einer GPU mit 8 GB VRAM nehmen?
Ohne Benchmarks pauschal: Q4_K_M oder IQ4_XS sind gängige Wahl für 7B auf 8 GB VRAM. Q5_K_M ist möglich, wenn VRAM es zulässt (Kontext-Länge und GPU-Runtime beeinflussen den tatsächlichen Bedarf). Q8_0 ist für 8 GB VRAM bei einem 7B-Modell oft anspruchsvoll (je nach Kontext-Länge). Eine konkrete Entscheidung erfordert Wissen über die genaue VRAM-Situation, Kontext-Länge, und Modellgröße — keine pauschale Empfehlung ohne diese Faktoren.
F6: Kann ich vLLM und Ollama gleichzeitig auf demselben Server laufen lassen?
Ja, technisch möglich, wenn sie verschiedene Ports nutzen und nicht um dieselbe GPU konkurrieren (GPU-Ressourcen-Sharing zwischen zwei Server-Software ist möglich, aber begrenzt — beide wollen GPU-Zeit). Für praktische Setups ist es üblicher, einen Server-Software-Stack zu wählen, nicht zwei parallel für dieselbe GPU, es sei denn, es gibt eine klare Architekturbedarf (z.B. verschiedene Modelle für verschiedene Anfragen). GPU-Konkurrenz zu berücksichtigen.
Kurzfassung in 5 Punkten
1. Ein LLM-Server ist die Software, die ein Modell als Dienst betreibt — API, Warteschlangen, Schnittstelle — nicht nur die Modelldatei selbst. Für wiederkehrende Nutzung, Web-Oberfläche oder parallele Anfragen ist ein Server die praktische Wahl.
2. Die drei Hauptkandidaten für Homelab- und kleine-Firmen-Betrachtungen sind Ollama (einfach, API-kompatibel mit Open WebUI, Windows-Service), llama.cpp server (direkte GGUF-Unterstützung, plattformübergreifend, ohne Weboberfläche), und vLLM (GPU-Parallelismus, Produktionsprofil, keine native GGUF-Unterstützung). LM Studio ist eine Desktop-App zum Ausprobieren, nicht ein Server-Produkt.
3. GGUF-Q-Stufen bestimmen VRAM-Budget gegen Qualität. Für 7B-Modelle auf Consumer-GPUs (8–12 GB VRAM) sind Q4_K_M oder IQ4_XS der Normalfall; für größere Modelle (13B, 30B, 70B) steigt der VRAM-Bedarf und Multi-GPU oder CPU-Offload werden nötig. Keine Benchmarks erfinden — die Werte sind grobe Orientierungshilfen.
4. Häufige Fehler: Port ins Internet geben ohne Authentifizierung, Ollama ohne Authentifizierung auf dem Netzwerk, Modellwechsel ohne VRAM-Berücksichtigung, Docker ohne GPU-Durchreichen, Server ohne Härte (fail2ban, Authentifizierung, Firewall). Für lokale Homelab-Setups auf localhost oder isoliertem Netzwerk ist das weniger kritisch.
5. Für Open WebUI als Oberfläche ist Ollama der direkteste Weg (native API-Kompatibilität). Für reine API-Nutzung ohne Weboberfläche ist Ollama oder llama.cpp server je nach Vorliebe (Registry vs. direkte GGUF-Kontrolle). Für Produktions-Profiling mit GPU-Parallelismus ist vLLM der Kandidat.
Bildvorschläge
Bild 1
- Bildtyp: Screenshot-Komposition (zwei Browser-Fenster nebeneinander)
- Inhalt: Links: Terminal mit
ollama listundcurl-API-Test; rechts: Open WebUI-Chat-Oberfläche mit demselben Modell als Backend. Visualisiert die Verbindung zwischen CLI/API und Weboberfläche. - Alt-Text: "Ollama-API im Terminal (curl-Test auf Port 11434) und Open WebUI-Chat daneben — dieselbe API, zwei Zugänge."
Bild 2
- Bildtyp: Vergleichstabelle als Infografik
- Inhalt: Die Vergleichstabelle aus dem Artikel als visuelle Matrix: Ollama, llama.cpp server, vLLM, LM Studio als Spalten; Kriterien (GPU-Betrieb, GGUF, Warteschlange, Open WebUI, Leerlauf-Verbrauch) als Zeilen; farbige Markierung der Stärken (z.B. grüne Checkzeichen für Ollama bei Open WebUI, grüne Checkzeichen für llama.cpp bei GGUF).
- Alt-Text: "Vergleichstabelle: Ollama, llama.cpp server, vLLM und LM Studio nach GPU-Betrieb, GGUF-Unterstützung, Warteschlangen-Management, Open WebUI-Einbindung und Leerlauf-Verbrauch."
Bild 3
- Bildtyp: VRAM-Skala (visuelle Vergleichsleiste)
- Inhalt: Eine horizontale Balkenskala, die VRAM-Bedarfe für verschiedene Modellgrößen (7B, 13B, 30B) und Q-Stufen (IQ4_XS, Q4_K_M, Q5_K_M, Q8_0) zeigt — eine visuelle Orientierungshilfe, kein Benchmark. Pfeile oder Farbcodierung: grün (passend für 8 GB VRAM), gelb (knapp), rot (nicht ohne Multi-GPU).
- Alt-Text: "Grobe VRAM-Orientierung: 7B-, 13B- und 30B-Modelle in verschiedenen Q-Stufen auf einer VRAM-Skala — kein Benchmark, nur Richtwerte."
Bild 4
- Bildtyp: Docker-Compose- oder Docker-Run-Befehl als Code-Snapshot
- Inhalt: Ein Screenshot des Docker-Run-Befehls für Open WebUI mit
OLLAMA_BASE_URL-Config und GPU-Passthrough-Flag (--gpus all) — visuell hervorgehoben, welche Schritte GPU-Passthrough und API-Konfiguration sind. Praktischer Referenz-Snapshot für den Mehrbenutzer-Server-Weg. - Alt-Text: "Open WebUI via Docker mit Ollama-Backend: GPU-Passthrough-Flag und OLLAMA_BASE_URL als Konfigurationsschritte."
Bild 5
- Bildtyp: Netzwerkdiagramm (semigraphisch)
- Inhalt: Ein einfaches Diagramm: Nutzer/Geräte (PC, Handy) → Reverse Proxy mit Authentifizierung → LLM-Server (Ollama/llama.cpp server) auf localhost oder internem Netzwerk → GPU. Zeigt den Schutz-Layer (Reverse Proxy, Firewall) zwischen öffentlichem Zugang und dem ungeschützten Server-Port.
- Alt-Text: "Netzwerkdiagramm: Reverse Proxy mit Authentifizierung und Firewall vor dem LLM-Server-Port — Schutz vor direktem Internetzugriff auf Port 11434 oder 8080."
Interne Verlinkungsvorschläge auf vorhandene BsN-Artikel (homelab.brillianze.de/artikel/<slug>/):
- reverse-proxy-vergleich — für Schutz-Schichten vor dem LLM-Server-Port (Authentifizierung, TLS)
- docker-vs-vm — für GPU-Passthrough in Docker-Containern und die Unterscheidung Container/VM
- vlan-netzsegmentierung — für netzwerkbasierte Zugriffskontrolle auf den LLM-Server-Port (isolierte VLANs)
- homelab-anfaenger — für Einsteiger, die einen LLM-Server in ein größeres Homelab einbetten
- fernzugriff-heimserver-tailscale-wireguard — für sicheren Remote-Zugriff auf den LLM-Server ohne Port-Freigabe ins Internet
Hinweis: Dieser Artikel ist redaktioneller Inhalt und enthält keine Affiliate- oder Partner-Links. Alle Angaben entsprechen dem Stand 2026 und können sich ändern.