Jeder Aufruf einer gehosteten LLM-API schickt Ihren Prompt an den Server von jemand anderem und berechnet Ihnen Kosten pro Token. Fällt das Netzwerk aus, antwortet sie nicht mehr. Ollama beseitigt beide Probleme: Es lädt ein Modell mit offenen Gewichten auf Ihren Rechner und stellt es über eine REST-API auf localhost:11434 bereit. Eine einzige Binärdatei ist Modellverwaltung, Chat-Client und Server zugleich.

Was Ollama tatsächlich macht

Ollama kapselt llama.cpp und ähnliche Inferenz-Engines, sodass Sie nie ein Compiler-Flag oder einen CUDA-Bibliothekspfad anfassen müssen. ollama pull llama3.2 lädt eine quantisierte Modelldatei (GGUF-Format) aus Ollamas eigener Registry herunter statt von Hugging Face, kann aber auch GGUF-Dateien von dort importieren. Beim Ausführen des Modells übergibt Ollama diese Gewichte an einen Hintergrundserver, der sie in den RAM (oder VRAM, falls eine kompatible GPU gefunden wird) lädt, sie einige Minuten nach der letzten Anfrage im Speicher hält, damit die nächste Anfrage schnell beantwortet wird, und sie entlädt, sobald keine Anfragen mehr kommen.

CLI, API und das Modelfile-System bauen alle auf derselben Aufgabe auf: Gewichte in den Speicher laden, Anfragen an sie weiterleiten.

Wie Sie Ollama installieren und Ihr erstes Modell ausführen

Unter Linux oder macOS:

1
curl -fsSL https://ollama.com/install.sh | sh

Unter Windows führen Sie den Installer von ollama.com aus, oder verwenden Sie:

1
irm https://ollama.com/install.ps1 | iex

In beiden Fällen erhalten Sie die ollama-CLI und einen Hintergrundserver, der auf Port 11434 lauscht. Laden Sie ein kleines Modell herunter und sprechen Sie mit ihm:

1
2
ollama pull llama3.2
ollama run llama3.2

ollama run öffnet einen interaktiven Prompt. Stellen Sie eine Frage, lesen Sie die Antwort, /bye zum Verlassen. Drei weitere Befehle, die Sie ständig brauchen werden:

1
2
3
ollama list   # heruntergeladene Modelle, mit ihrer Größe auf der Festplatte
ollama ps     # aktuell im Speicher geladene Modelle
ollama rm llama3.2   # gibt den Festplattenspeicher wieder frei

llama3.2 ist ein guter erster Download: etwa 2 GB, schnell genug für die CPU eines Laptops. Es ist nicht das stärkste Modell seiner Größenklasse. gemma4 ist aktuell das führende Modell in dieser Größenklasse und verarbeitet zusätzlich Bilder, qwen3-coder ist die bessere Wahl, wenn Sie es fürs Programmieren einsetzen wollen. Starten Sie trotzdem mit llama3.2, weil es beweist, dass Ihr Setup funktioniert, bevor Sie sich auf einen 20-GB-Download einlassen.

Wie Sie mit der REST-API von Ollama sprechen

Der interaktive Prompt zeigt nur, ob alles läuft. Alles, was Sie bauen, ruft stattdessen die API auf. Das native Format von Ollama sieht so aus:

1
2
3
4
5
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "Write a one-line commit message for a typo fix in README.md",
  "stream": false
}'

Mit "stream": false erhalten Sie ein einziges JSON-Objekt zurück, das eval_count und eval_duration enthält — genug, um Tokens pro Sekunde auf Ihrer eigenen Hardware zu messen. Setzen Sie es auf true, erhalten Sie stattdessen eine Folge von Teilantwort-Objekten — genau das, was eine Chat-Oberfläche braucht.

Für mehrstufige Unterhaltungen nimmt /api/chat ein messages-Array im selben Format entgegen, das auch die API von OpenAI verwendet:

1
2
3
4
5
6
7
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    {"role": "user", "content": "What port does Ollama listen on by default?"}
  ],
  "stream": false
}'

Ollama spricht unter /v1 auch nativ das API-Format von OpenAI, sodass die offiziellen OpenAI-SDKs unverändert damit funktionieren:

1
2
3
4
5
6
7
8
9
from openai import OpenAI

client = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")

response = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "Summarize this changelog in two sentences."}],
)
print(response.choices[0].message.content)

Ollama ignoriert api_key, aber der Konstruktor des SDKs verlangt einen, also reicht jede nicht-leere Zeichenkette. Das macht es zum schnellsten Weg, ein bereits auf OpenAI basierendes Tool auf ein lokales Modell umzustellen: Sie ändern base_url und lassen den Rest des Codes unangetastet.

Ein weiterer Endpunkt wird wichtig, sobald Sie eine Retrieval-Augmented-Generation-Pipeline lokal aufbauen. POST /api/embed wandelt Text mit einem Embedding-Modell (nomic-embed-text ist die übliche Wahl) in Vektoren um — etwas, das ein reines Chat-Modell Ihnen nicht liefert.

Wie Sie Ollama in Docker ausführen

Wenn auf dem Rechner sonst schon alles ein Container ist, liefert Ollama ein offizielles Image, sodass Sie nichts auf dem Host installieren müssen:

1
2
3
4
5
docker run -d \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama

Das benannte Volume ist in der Praxis nicht optional: Ohne es verschwindet jedes heruntergeladene Modell in dem Moment, in dem der Container entfernt wird. Um ein Modell im laufenden Container herunterzuladen und auszuführen:

1
docker exec -it ollama ollama run llama3.2

Auf einem Rechner mit NVIDIA-GPU installieren Sie zuerst das NVIDIA Container Toolkit auf dem Host und fügen dann ein einziges Flag hinzu:

1
2
3
4
5
docker run -d --gpus=all \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama

AMD-GPUs verwenden ein eigenes Image-Tag und Device-Mounts statt --gpus:

1
2
3
4
5
docker run -d --device /dev/kfd --device /dev/dri \
  -v ollama:/root/.ollama \
  -p 11434:11434 \
  --name ollama \
  ollama/ollama:rocm

Als Docker-Compose-Dienst sieht dasselbe Setup so aus — nur Port und Volume, sonst nichts:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
services:
  ollama:
    image: ollama/ollama
    ports:
      - "11434:11434"
    volumes:
      - ollama:/root/.ollama

volumes:
  ollama:

Diesen Container über localhost hinaus zugänglich zu machen, ist Aufgabe eines Reverse Proxy mit TLS davor, genau wie bei jedem anderen Backend-Dienst. Ollama hat keine eigene Authentifizierung, daher ist ein aus dem Netzwerk erreichbarer Port 11434 ein Modellserver, den jeder benutzen kann.

Wie Sie ein Modell mit einem Modelfile anpassen

Ein Modelfile legt für ein bestehendes Modell einen System-Prompt, eine Temperatur und eine Stop-Sequenz fest, ohne es neu zu trainieren. Erstellen Sie eine Datei namens Modelfile:

1
2
3
4
5
6
7
8
FROM llama3.2

PARAMETER temperature 0.3

SYSTEM """
You are a terse code reviewer. Reply with the diff and one sentence of
rationale. Never restate the code you were not asked to change.
"""

Dann bauen und starten Sie es:

1
2
ollama create code-reviewer -f Modelfile
ollama run code-reviewer

code-reviewer erscheint jetzt als eigener Eintrag in ollama list, obwohl die Gewichte genau die von llama3.2 sind. Nur der System-Prompt und die Sampling-Einstellungen sind fest eingebacken. Der Vorteil: Jeder Client, der diesen Namen aufruft, erbt die Konfiguration, ohne sie mitzuschicken.

Welche Modellgröße zu Ihrem RAM passt

Die Zahl im Namen eines Modells ist seine Parameteranzahl, und sie sagt recht gut voraus, wie viel RAM (oder VRAM, für Inferenz auf der GPU) Sie brauchen:

ModellgrößeMinimaler RAM/VRAMRealistisch auf
1-3B4-8 GBJedem aktuellen Laptop, nur CPU
7-9B8-16 GBEinem Laptop mit 16 GB RAM, langsam nur mit CPU
13-14B16-24 GBEiner dedizierten GPU mit 12+ GB VRAM
30B+24-48 GB+Einer GPU mit 24+ GB VRAM, oder einer Cloud-GPU-Instanz

Diese Zahlen gehen von der 4-Bit-Quantisierung aus, die Ollama standardmäßig herunterlädt und die einen kleinen Teil der Ausgabequalität gegen einen etwa viermal kleineren Download und Speicherbedarf eintauscht, verglichen mit den Gewichten in voller Präzision. Beim Zusammenfassen von Text oder beim Formulieren von Commit-Messages werden Sie die Quantisierung kaum bemerken. Wenn der RAM ausgeht, dagegen schon. Sobald das Modell in den Festplatten-Swap ausweicht, wird es nicht einfach langsamer, sondern unbenutzbar — ein weit größerer Unterschied als ein Punkt Genauigkeit.

Wann Ollama nicht das richtige Werkzeug ist

Ollama ist für einen einzelnen Nutzer gedacht, der mit einem Modell auf einer Maschine spricht. Es bietet kein Request-Batching und kein Scheduling, das einer GPU erlaubt, effizient Dutzende gleichzeitiger Nutzer zu bedienen — dafür sind vLLM, TGI oder eine gehostete API gedacht. Wenn Sie ein lokales Modell vor echten Traffic stellen, messen Sie den Durchsatz von Ollama unter gleichzeitiger Last, bevor Sie sich festlegen: Eine einzelne Instanz bricht deutlich früher zusammen, als es ein richtig gebatchter Server tun würde.

Es ist auch kein Fine-Tuning-Werkzeug. Ein Modelfile ändert einen System-Prompt und Sampling-Parameter, niemals die Gewichte. Einem Modell aus Ihren Beispielen ein neues Verhalten beizubringen, ist eine eigene Pipeline.

Keine der beiden Grenzen betrifft einen einzelnen Entwickler auf einem Laptop. Laden Sie ein Modell herunter, das bequem unter Ihre RAM-Obergrenze passt, führen Sie es einmal über die CLI aus und rufen Sie dann /api/generate mit curl auf. Kommt die Antwort in ein paar Sekunden zurück und liest sich so, wie Sie es erwartet haben, haben Sie einen lokalen Inferenzserver, den jedes OpenAI-kompatible Tool ansprechen kann.

Verwandte Artikel