Skip to content
BotServBotServ
OllamaBenchmarkPerformanceTokensMetriken

Ollama-Modelle benchmarken

Ollama-Modelle mit eigenen Skripts und Tools benchmarken. Tokens pro Sekunde, VRAM und Qualität prüfen.

S

schutzgeist

3 min read
Ollama-Modelle benchmarken

Ollama-Modelle benchmarken

Was dieser Artikel über Ollama-Benchmarks behandelt

  • Warum Benchmarks wichtig sind.
  • Welche Metriken gemessen werden.
  • Wie man Tokens pro Sekunde ermittelt.
  • Wie man VRAM und RAM misst.
  • Vergleich von Modellen mit unterschiedlicher Quantisierung.

Einleitung: Ollama-Modelle benchmarken

Lokale Modelle gibt es in vielen Grössen, Quanten und Architekturen. Nicht jedes Modell läuft auf jeder Hardware gleich schnell oder liefert dieselbe Qualität. Benchmarks helfen, zu messen, welches Modell für einen bestimmten Anwendungsfall und eine bestimmte Hardware passt. Wichtig sind Geschwindigkeit, Speicherverbrauch und Antwortqualität.

Dieser Artikel zeigt, wie man Ollama-Modelle einfach selbst benchmarkt.

Wichtige Begriffe

  • Throughput: Anzahl Tokens pro Sekunde.
  • Latency: Zeit bis zur ersten Antwort.
  • TTFT: Time To First Token.
  • VRAM: Videospeicher der GPU.
  • Quantisierung: Reduktion der Modellpräzision.
  • Prompt-Tokens: Tokens im Eingabetext.
  • Completion-Tokens: Tokens im Antworttext.
  • Perplexity: Mass für Modellunsicherheit.

Was man messen sollte

  • Tokens pro Sekunde (total): Gesamtgeschwindigkeit.
  • Prompt-Eval-Zeit: Zeit, den Kontext zu verarbeiten.
  • Eval-Zeit: Zeit, Antwort-Tokens zu generieren.
  • VRAM-Verbrauch: Wird genug VRAM frei?
  • RAM-Verbrauch: Bei rein CPU-basiertem Betrieb.
  • Qualität: Antwort auf vorbereitete Fragen prüfen.

Einfacher Python-Benchmark

import requests
import time

url = "http://localhost:11434/api/generate"

prompt = "Erkläre kurz, was ein neuronales Netz ist."
model = "llama3.1"

payload = {
    "model": model,
    "prompt": prompt,
    "stream": False,
    "options": {
        "num_predict": 100
    }
}

start = time.time()
response = requests.post(url, json=payload)
end = time.time()

data = response.json()
duration = end - start
tokens = data.get("eval_count", 0)
tps = tokens / duration if duration > 0 else 0

print(f"Dauer: {duration:.2f} s")
print(f"Tokens: {tokens}")
print(f"Tokens/s: {tps:.2f}")
print(f"VRAM: prüfe mit nvidia-smi")

Antwort auswerten

print(data["response"])

Mehrere Modelle vergleichen

models = ["llama3.1", "qwen2.5:7b", "mistral:7b"]
prompt = "Was ist Docker?"

for model in models:
    payload = {
        "model": model,
        "prompt": prompt,
        "stream": False,
        "options": {"num_predict": 100}
    }
    start = time.time()
    r = requests.post(url, json=payload)
    end = time.time()
    data = r.json()
    duration = end - start
    tokens = data.get("eval_count", 0)
    print(f"{model}: {tokens/duration:.2f} tokens/s")

Prompt-Eval vs. Completion-Eval

Ollama liefert im Modus stream: false Felder wie prompt_eval_count und eval_count. Daraus lassen sich gezieltere Kennzahlen berechnen:

  • prompt eval time: Zeit für den Kontext.
  • eval time: Zeit für die Antwort.

VRAM messen

nvidia-smi --query-gpu=memory.used --format=csv -l 1

Oder für AMD:

rocm-smi --showmeminfo vram

Testfragen für Qualität

Benchmarks zur Geschwindigkeit sagen noch nichts über Qualität. Vorbereitete Fragen helfen:

  • Zusammenfassung eines Textes.
  • Erklärung eines Konzepts.
  • Übersetzung.
  • Code-Generierung.
  • Logisches Rätsel.

Quantisierung vergleichen

QuantTokens/sQualitätVRAM
Q4_0hochniedrigerwenig
Q4_K_Mhochgutwenig
Q5_K_Mmittelsehr gutmittel
Q8_0niedrigerhochviel

Empfehlung: Die kleinste Quantisierung suchen, bei der die Qualität noch ausreicht.

Automatisierter Benchmark

import json
import time
import requests

def benchmark(model, prompt, num_predict=100):
    url = "http://localhost:11434/api/generate"
    start = time.time()
    r = requests.post(url, json={
        "model": model,
        "prompt": prompt,
        "stream": False,
        "options": {"num_predict": num_predict}
    })
    end = time.time()
    data = r.json()
    return {
        "model": model,
        "duration": end - start,
        "tokens": data.get("eval_count", 0),
        "tps": data.get("eval_count", 0) / (end - start)
    }

results = [benchmark(m, "Erkläre KI in drei Sätzen.") for m in ["llama3.1", "qwen2.5"]]
print(json.dumps(results, indent=2))

Tipps

  • Vor jedem Lauf Ollama neu starten, damit keine alten Daten den Cache beeinflussen.
  • Denselben Prompt und dieselbe num_predict verwenden.
  • Mehrere Läufe durchführen und Mittelwert bilden.
  • Temperatur auf 0 setzen, um reproduzierbare Ergebnisse zu erhalten.
  • Hardware-Temperatur beobachten, um Drosselung zu vermeiden.

Typische Stolpersteine

  • Erster Lauf ist langsamer: Modell muss geladen werden.
  • Unterschiedliche Prompt-Länge: Beeinflusst Zeiten.
  • Streaming: Synchrones Messen schwierig.
  • GPU-Drosselung: Nach langer Last langsamer.
  • Falsche Quantisierung: Modell passt nicht auf VRAM.
  • Cache-Effekte: Modell bleibt im Speicher.

FAQ: Ollama-Benchmarks

Was ist eine gute Tokens-pro-Sekunde-Zahl? Das hängt vom Modell und der Hardware ab. 10-30 tokens/s sind für lokale 7B-Modelle typisch.

Soll ich immer die höchste Quantisierung nehmen? Nein, wenn die Qualität für den Einsatzzweck ausreicht, ist eine niedrigere Quantisierung schneller.

Wie messe ich VRAM? Mit nvidia-smi oder rocm-smi während der Ausführung.

Warum ist der zweite Lauf schneller? Weil das Modell bereits im Speicher ist.

Kann ich Qualität automatisch benchmarken? Nur eingeschränkt. Am besten vorbereitete Fragen und manuelle Bewertung.

Quellen und weiterführende Literatur

Zusammenfassung: Ollama-Modelle benchmarken

Benchmarks sind unverzichtbar, um passende Ollama-Modelle für eigene Hardware und Anwendungsfälle zu finden. Tokens pro Sekunde, TTFT, VRAM- und RAM-Verbrauch sowie Antwortqualität sollten gemessen werden. Mit einfachen Python-Skripten lassen sich Modelle und Quantisierungen systematisch vergleichen. Wer mehrere Läufe mit gleichem Prompt durchführt, bekommt reproduzierbare Ergebnisse und kann gezielt die beste Balance aus Geschwindigkeit und Qualität wählen.

Zurück zum KI Blog
Share:

Ähnliche Beiträge