Skip to content
BotServBotServ
OllamaKontextnum_ctxTokenVRAM

Kontextlänge in Ollama verstehen

Kontextlänge, Token-Limits und num_ctx in Ollama. VRAM, Geschwindigkeit und Qualität im Gleichgewicht.

S

schutzgeist

3 min read
Kontextlänge in Ollama verstehen

Kontextlänge in Ollama verstehen

Was dieser Artikel über Kontextlänge behandelt

  • Was Kontextlänge bedeutet.
  • Wie Tokens gezählt werden.
  • Wie num_ctx in Ollama funktioniert.
  • Zusammenhang zwischen Kontext, VRAM und Geschwindigkeit.
  • Wie man die richtige Länge wählt.

Einleitung: Kontextlänge in Ollama verstehen

Die Kontextlänge beschreibt, wie viele Tokens ein Modell auf einmal verarbeiten kann. Darunter fallen System-Prompt, Frage, Chat-Verlauf und RAG-Dokumente. Je grösser der Kontext, desto mehr Hintergrund kann das Modell nutzen. Allerdings braucht ein längerer Kontext mehr VRAM und Rechenzeit. Wer die Kontextlänge zu hoch setzt, riskiert langsames Verhalten oder Abstürze.

Dieser Artikel erklärt, wie Ollama die Kontextlänge handhabt und wie man sie optimal konfiguriert.

Wichtige Begriffe

  • Token: Kleine Texteinheit, etwa ein Wortteil.
  • Kontextlänge: Anzahl Tokens, die das Modell verarbeitet.
  • num_ctx: Ollama-Parameter für Kontextlänge.
  • VRAM: Videospeicher der GPU.
  • Prompt-Eval: Verarbeitung des Eingabekontexts.
  • KV-Cache: Zwischenspeicher für Aufmerksamkeitswerte.
  • Truncation: Abschneiden zu langer Kontexte.
  • Sliding Window: Begrenztes Fenster für ältere Tokens.

Tokens zählen

Tokens sind keine Wörter. Ein Wort kann in mehrere Tokens aufgeteilt sein. Kurze Wörter sind oft ein Token, lange oder zusammengesetzte Wörter mehrere. Deutsche Umlaute und Sonderzeichen können zusätzliche Tokens erzeugen.

Beispiel:

  • “Hallo” = 1-2 Tokens.
  • “BotServ.de” = 3-4 Tokens.
  • “Künstliche Intelligenz” = ca. 4-6 Tokens.

num_ctx in Ollama

num_ctx legt die maximale Kontextlänge fest:

ollama run llama3.1
>>> /set parameter num_ctx 8192

Oder per Modelfile:

PARAMETER num_ctx 8192

Oder per API:

{
  "model": "llama3.1",
  "prompt": "...",
  "options": {
    "num_ctx": 8192
  }
}

Standardkontext

Viele Modelle haben einen Standardwert, oft 2048 oder 4096. Das spart VRAM, beschränkt aber den Kontext. In Ollama kann num_ctx oft weit über den Standardwert gesetzt werden, wenn das Modell und die Hardware mitmachen.

VRAM-Bedarf

Kontextlänge und VRAM hängen zusammen:

VRAM ~ Modellgrösse + KV-Cache
KV-Cache wächst mit num_ctx * (layer + hidden_size)

Ein doppelt so langer Kontext braucht deutlich mehr Speicher. Bei 7B-Modellen und 4096 Tokens reichen oft 8-12 GB. Bei 32k Tokens können 20-30 GB nötig sein.

Geschwindigkeit

Ein langer Kontext verlangsamt vor allem die Prompt-Evaluierung. Die Generierung selbst kann auch langsamer werden, weil mehr KV-Cache pro Layer gelesen werden muss. Für Echtzeit-Chats sollte der Kontext nicht unnötig gross sein.

Wann viel Kontext?

  • Lange Dokumente zusammenfassen.
  • Chat mit langem Verlauf.
  • RAG mit vielen Chunk-Überlappungen.
  • Code-Reviews über mehrere Dateien.

Wann wenig Kontext?

  • Kurze Frage-Antwort-Szenarien.
  • Schnelle Chatbots.
  • Speicher knapp.
  • Schnelle Antworten wichtiger als Hintergrund.

Praktische Werte

Anwendungnum_ctx
Kurzer Chat2048
Langer Chat4096-8192
Dokumenten-RAG8192-16384
Lange Code-Review16384-32768
Sehr lange Dokumente32768+

Nicht jedes Modell unterstützt jede Länge. Modellbeschreibungen prüfen.

Kontext zu gross

Folgen:

  • Langsame Antwort.
  • OOM, Modell stürzt ab.
  • Fehlermeldung wegen zu geringem VRAM.
  • Schlechte Qualität, weil das Modell alte Teile vergisst.

Kontext begrenzen

  • Nur relevante Dokumente in den Prompt.
  • Chunk-Grösse reduzieren.
  • Chat-Verlauf zusammenfassen.
  • num_ctx realistisch setzen.

Zählen und testen

curl http://localhost:11434/api/generate -d '{
  "model": "llama3.1",
  "prompt": "...langer Text...",
  "options": {
    "num_ctx": 8192
  },
  "stream": false
}'

VRAM während des Aufrufs beobachten:

watch -n 1 nvidia-smi

Tipps

  • num_ctx nicht grösser als nötig.
  • Modellgrenzen respektieren.
  • Tokens vorher abschätzen.
  • Lange Dokumente in Chunks aufteilen.
  • Chat-Verlauf regelmässig zusammenfassen.
  • Benchmarks mit verschiedenen Längen fahren.

FAQ: Kontextlänge in Ollama

Was ist num_ctx? Ollama-Parameter für maximale Kontextlänge.

Wie viel Tokens passen in 8 GB VRAM? Bei einem 7B-Modell mit Q4 Quantisierung je nach Modell 2k-8k.

Kann ich num_ctx beliebig erhöhen? Nur bis zur vom Modell und der Hardware unterstützten Grenze.

Warum wird das Modell bei langem Kontext langsam? Weil mehr KV-Cache berechnet und gelesen werden muss.

Wie viele Tokens hat mein Prompt? Mit ollama show oder externen Tokenizer-Tools prüfen.

Quellen und weiterführende Literatur

Zusammenfassung: Kontextlänge in Ollama verstehen

Die Kontextlänge entscheidet, wie viel Hintergrund Ollama berücksichtigen kann. Mehr Kontext hilft bei langen Dokumenten oder Chat-Verläufen, kostet aber VRAM und Zeit. Der num_ctx-Parameter erlaubt eine einfache Steuerung. Wer Kontext, Modellgrösse und Hardwarebedarf im Gleichgewicht hält, bekommt gute Ergebnisse ohne unerwartete Performance-Einbrüche.

Zurück zum KI Blog
Share:

Ähnliche Beiträge