Moondream2 lässt sich in Ollama als lokales Vision-Modell mit etwa 1,7 GB Paketgröße installieren. Der veröffentlichte moondream:v2-Tag unterstützt Bild- und Texteingaben bei 2K Kontext. Das genügt für kurze Bildfragen, ist aber kein guter Ausgangspunkt für lange Dokumente oder zuverlässige Texterkennung.1
Wenn du auf einem Mac mit wenig freiem Unified Memory zuerst ausprobieren willst, was lokale Bildanalyse leisten kann, ist moondream:v2 ein sinnvoller Einstieg. Für OCR, komplexe Diagramme, mehrere Bilder oder lange Dokumente solltest du direkt mit einem größeren Modell vergleichen.
Was Moondream2 ist
Die Angaben in der Tabelle stammen vom veröffentlichten Ollama-Tag moondream:v2; sie beschreiben das Paket, nicht den gesamten RAM-Bedarf bei der Ausführung.1 Die Projektdokumentation erläutert den Aufbau aus Bild-Encoder und Sprachmodell.
| Komponente | Angabe |
|---|---|
| Sprachmodell | Phi-2, 1,42 Milliarden Parameter, Q4_0 |
| Bildprojektor | CLIP, 454 Millionen Parameter, F16 |
| Paketgröße | 1,7 GB |
| Lizenz | Apache 2.0 |
| Modellklasse | Vision-Language-Modell für Edge-Geräte |
Das Modell verbindet einen kleinen Textdecoder mit einem Bildprojektor. Es kann damit visuelle Eingaben in Textantworten übersetzen, ohne dass du eine Cloud-API aufrufen musst.
Typische Aufgaben:
- einfache Bildbeschreibungen, visuelle Fragen und grobe Lokalisierung
- kurze UI-Texte oder auffällige Zustände erkennen
- Bilder für einen lokalen Workflow vorsortieren.1
Die geringe Größe ist zugleich die wichtigste Grenze. Moondream2 hat weniger Kapazität für feine Details, komplexe Anweisungen und lange visuelle Untersuchungen als Modelle mit 7, 12 oder mehr Milliarden Parametern.
Installation mit Ollama
Voraussetzungen:
- ein Mac mit Apple Silicon oder ein unterstützter Intel-Mac,
- eine aktuelle Ollama-Version,
- rund 2 GB freier SSD-Speicher für das Paket,
- Internet für den Download; danach ist lokale Nutzung möglich.
Modell laden:
ollama pull moondream:v2
Modell starten:
ollama run moondream:v2
Für einen ersten Test empfiehlt sich ein Bild mit leicht überprüfbarem Inhalt. Statt einer offenen Frage wie „Was siehst du?“ führt eine präzise Arbeitsanweisung zu verlässlicheren Resultaten:
Beschreibe die sichtbaren Bedienelemente.
Nenne danach drei Texte, die du sicher lesen kannst.
Markiere unsichere Erkennungen ausdrücklich.
So erkennst du schneller, ob das Modell Details tatsächlich gelesen oder nur plausibel ergänzt hat.
Bilder über Python senden
Installiere zunächst den Python-Client mit python3 -m pip install ollama. Voraussetzung ist, dass Ollama lokal läuft und der Tag moondream:v2 heruntergeladen wurde. Der Client nimmt einen lokalen Bildpfad in der Chat-Nachricht entgegen:
from ollama import chat
response = chat(
model="moondream:v2",
messages=[{
"role": "user",
"content": "Beschreibe dieses Bild und nenne unsichere Details.",
"images": ["/pfad/zum/bild.jpg"],
}],
)
print(response.message.content)
Für produktive Verarbeitung solltest du zusätzlich:
- Dateityp und Dateigröße begrenzen,
- Bilder vor dem Senden normalisieren,
- Modellantworten nicht als verlässliches OCR-Ergebnis behandeln,
- Fehler und Timeouts protokollieren,
- bei sensiblen Inhalten Cloud-Funktionen explizit deaktivieren.
Eigener lokaler Vision-Test: Bild nur an 127.0.0.1 senden
Der dokumentierte Ollama-REST-Endpunkt POST /api/chat erwartet Bilddaten im Base64-images-Array. Der Python-SDK-Client weiter oben akzeptiert einen lokalen Dateipfad; direkte REST-Aufrufe benötigen dagegen Base64-Daten. Genau das unterscheidet die Vision-Dokumentation. Der veröffentlichte moondream:v2-Tag hat 2K / 2.048 Kontexttokens. Die 1,7 GB der Datei sind die Downloadgröße, keine Messung des Arbeitsspeichers.
Vorbereitung: Ollama starten, ollama pull moondream:v2 ausführen und ein nicht vertrauliches Bild unter ./example.png ablegen. Das Beispiel prüft PNG-, JPEG- und WebP-Signaturen und begrenzt Bilddateien auf 10 MiB. Das ist eine selbst gewählte Sicherheitsgrenze, kein offizielles Ollama-Limit. Der Standardmodus DRY_RUN=1 sendet keine HTTP-Anfrage.
IMAGE_PATH=./example.png DRY_RUN=1 python3 - <<'PY'
import base64, json, os, time
from pathlib import Path
from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen
endpoint = "http://127.0.0.1:11434/api/chat"
image = Path(os.getenv("IMAGE_PATH", "./example.png")).expanduser()
dry_run = os.getenv("DRY_RUN", "1")
if dry_run not in ("0", "1"):
raise SystemExit("DRY_RUN must be 0 or 1")
if not image.is_file():
raise SystemExit("Image not found: " + str(image))
size = image.stat().st_size
if size == 0 or size > 10 * 1024 * 1024:
raise SystemExit("Image must be 1 byte to 10 MiB (example safety cap)")
raw = image.read_bytes()
if not (raw.startswith(b"\x89PNG\r\n\x1a\n") or
raw.startswith(b"\xff\xd8\xff") or
(raw.startswith(b"RIFF") and raw[8:12] == b"WEBP")):
raise SystemExit("Expected a PNG, JPEG or WebP image")
payload = {"model": "moondream:v2", "messages": [{
"role": "user",
"content": "Describe visible objects. Flag uncertain text.",
"images": [base64.b64encode(raw).decode("ascii")],
}], "stream": False, "options": {"num_ctx": 2048}, "keep_alive": 0}
if dry_run == "1":
print("DRY_RUN: file and payload validated; no HTTP request sent")
print("Endpoint:", endpoint, "Model:", payload["model"], "Bytes:", size)
else:
req = Request(endpoint, data=json.dumps(payload).encode("utf-8"),
headers={"Content-Type": "application/json"}, method="POST")
started = time.perf_counter()
try:
with urlopen(req, timeout=120) as resp:
answer = json.load(resp)
except (HTTPError, URLError, TimeoutError) as exc:
raise SystemExit("Local Ollama request failed: " + str(exc))
print(answer.get("message", {}).get("content", "No answer returned"))
elapsed = time.perf_counter() - started
print("Wall time (s):", round(elapsed, 2))
print("Output tokens:", answer.get("eval_count", "not reported"))
output_tokens, decode_ns = answer.get("eval_count"), answer.get("eval_duration")
if isinstance(output_tokens, int) and isinstance(decode_ns, int) and decode_ns > 0:
print("Decode tokens/s (Ollama):", round(output_tokens * 1_000_000_000 / decode_ns, 2))
PY
Erst anschließend mit DRY_RUN=0 die reale lokale Inferenz auslösen. Der Code verwendet ausschließlich http://127.0.0.1:11434/api/chat, nie einen Cloud-Endpunkt. Er setzt den Kontext auf 2.048 und zeigt nach einer echten Antwort die berichteten Ausgabetokens. Bildinhalt wird im Testmodus nicht auf der Konsole ausgegeben.
Messwerte richtig lesen: Die neue Ausgabe Wall time (s) misst die gesamte Anfrage einschließlich Bildverarbeitung und gegebenenfalls Modellstart. Decode tokens/s (Ollama) nutzt ausschließlich die von Ollama berichtete eval_duration und eval_count; dieser Wert umfasst weder Prompt-Prefill noch Bildverarbeitung. Erst Kalt- und Warmstarts getrennt vergleichen – ohne Test-Mac werden hier keine Geschwindigkeitswerte behauptet.
Cloud wirklich deaktivieren: Ollamas offizielle FAQ empfiehlt {"disable_ollama_cloud": true} in ~/.ollama/server.json oder OLLAMA_NO_CLOUD=1. Bei einer macOS-App die Variable mit launchctl setenv OLLAMA_NO_CLOUD 1 setzen, Ollama neu starten und in den Logs Ollama cloud disabled: true kontrollieren. Die lokale API standardmäßig an 127.0.0.1 belassen; OLLAMA_HOST=0.0.0.0 ist hier unnötig und würde die LAN-Zugriffsfläche vergrößern.
Messprotokoll statt erfundener Mac-Benchmarks
Nutze zehn Bilder, deren Inhalt du selbst beurteilen kannst: einfache Fotos, UI-Screenshots und ein bis zwei schwierigere Diagramme. Dokumentiere die exakte Modell-ID, Ollama-Version, Bildgröße, Prompt, richtige/falsche/unsichere Objekte, Antwortdauer und macOS-Speicherdruck. Für schwer lesbare Beschriftungen eine dedizierte OCR-Lösung als Vergleich einsetzen. ollama ps zeigt geladene Modelle; es beweist keine fehlerfreie Bildanalyse.
Wenn die lokale API Connection refused meldet, zuerst die Ollama-App prüfen; bei model not found den exakten Tag mit ollama list kontrollieren. Weder 2K Kontext noch 1,7 GB Downloadvolumen liefern einen belastbaren Wert für Tokens/s oder OCR-Genauigkeit. Es wurden hier keine realen Bild-Inferenzmessungen auf deinem Mac durchgeführt.
RAM auf dem Mac
Das Modellpaket ist klein, aber nicht der einzige Speicherverbraucher. macOS, Ollama, das Bild, der Chatverlauf und andere Apps teilen sich Unified Memory.
| Mac-Konfiguration | Praktische Einordnung |
|---|---|
| 8 GB Unified Memory | einfache Einzelbild-Aufgaben möglich; große Apps schließen |
| 16 GB | komfortabler für Screenshots und kurze Bilddialoge |
| 24–32 GB | viel Reserve; größere Vision-Modelle werden interessanter |
| 48 GB+ | Moondream2 ist selten das Speicherlimit; vergleiche stärkere Modelle |
Auf einem 8-GB-Mac ist Moondream2 gerade wegen seiner Größe interessant. Auf einem Mac mit 32 oder 64 GB solltest du prüfen, ob ein größeres Vision-Modell die bessere Qualität liefert, ohne deinen Workflow unpraktisch langsam zu machen.
So bewertest du eine fehlerhafte Bildantwort
Statt zwei fast identischer Checklisten hilft eine kleine Fehlerdiagnose:
| Befund | Nächster Versuch |
|---|---|
| Schrift wird erfunden | Textausschnitt vergrößern und eine spezialisierte OCR als Referenz einsetzen |
| Objekt fehlt | Bild zuschneiden und dieselbe Frage erneut stellen |
| Zahlen sind vertauscht | Wert am Original prüfen; nicht ungeprüft in einen Workflow übernehmen |
| Hohe Antwortzeit | Wall time prüfen, ersten Lauf von Folgeläufen trennen und macOS-Speicherdruck beobachten |
Das ist eine Prüfmethode, keine gemessene Fehlerquote. Halte Bild, Sollantwort, Ollama-Version und Mac-Konfiguration fest.
Wann ein größeres Vision-Modell besser ist
| Aufgabe | Moondream2 | Größeres Vision-Modell |
|---|---|---|
| einzelnes Foto grob beschreiben | gut geeignet | ebenfalls geeignet |
| UI-Screenshot kategorisieren | oft ausreichend | besser bei vielen Details |
| lange Dokumentseite lesen | eingeschränkt | deutlich sinnvoller |
| Tabellen und kleine Zahlen | fehleranfällig | meist besser, trotzdem prüfen |
| mehrere Bilder vergleichen | begrenzt | bessere Ausgangslage |
| lokaler Test auf 8 GB | sehr attraktiv | oft zu groß |
Mögliche nächste Tests in Ollama:
llama3.2-visionfür einen größeren allgemeinen Vision-Workflow,gemma3für Text und Bild in mehreren Größen,qwen2.5vlfür Dokumente, Tabellen und UI-Screenshots.
Tags, Größen und Runtime-Unterstützung ändern sich. Prüfe vor dem Download die aktuelle Ollama-Seite und den freien Speicher deines Macs.
Datenschutz: lokal heißt bewusst lokal
Mit einem heruntergeladenen Ollama-Modell kann die Inferenz lokal laufen. Das bedeutet aber nicht automatisch, dass der komplette Workflow offline bleibt. Ein Frontend, ein Agent oder ein zusätzliches Tool kann weiterhin externe Dienste ansprechen.
Für einen möglichst lokalen Aufbau:2
- Cloud-Funktionen in Ollama deaktivieren,
- keine Websuche oder externen Tools aktivieren,
- den lokalen Server nicht ungeschützt im Internet veröffentlichen,
- Logs und temporäre Bilddateien berücksichtigen,
- mit einem Netzwerktest prüfen, ob die verwendete App Verbindungen aufbaut.
Moondream2 eignet sich besonders für sensible Screenshots, wenn der gesamte Pfad lokal bleibt. Dazu gehören Modell, API-Client, Speicherung und Nachverarbeitung.
Moondream2 und Moondream3 Preview: Zwei Modelle, zwei Lizenzen
Moondream2 ist über moondream:v2 in Ollama mit etwa 1,7 GB Downloadgröße, einem kleinen Bildprojektor und Apache-2.0-Lizenz erhältlich. Diese Fakten gelten für den konkreten v2-Tag, nicht automatisch für die neuere Modellreihe.13
Moondream3 Preview ist ein anderes Modell: Laut Modellkarte hat es eine MoE-Architektur mit 9 Milliarden Gesamt- und rund 2 Milliarden aktiven Parametern sowie 32K nutzbarem Kontext. Die dort veröffentlichten Standardbeispiele setzen teilweise CUDA voraus und sind deshalb keine sofort lauffähige Mac-/Ollama-Anleitung. Moondream3 Preview ist kein austauschbarer Ersatz-Tag für moondream:v2.4
Kommerzielle Nutzung: „other“ bedeutet nicht Apache 2.0
Die Hugging-Face-Metadaten nennen die Lizenz der Preview lediglich „other“. In der aktuellen LICENSE.md des Modellrepos steht hingegen konkret Business Source License 1.1 (BSL 1.1) mit Additional Use Grant:
- Interne produktive Nutzung in einer Organisation sowie persönliche und Forschungsprojekte sind nach den angegebenen Bedingungen möglich.
- Bestimmte kommerzielle Drittanbieterprodukte können erlaubt sein; die Zusatzfreigabe schließt jedoch bezahlte, konkurrierende gehostete oder eingebettete Angebote aus, die erheblich mit den kostenpflichtigen Produkten von M87 Labs überlappen.
- Der Text sieht eine spätere Umstellung auf Apache 2.0 vor; bis dahin gelten die konkreten BSL-Bedingungen einschließlich der Regeln für Derivate und Weitergabe.
Die Lizenzdatei ist maßgeblich, nicht das knappe Hugging-Face-Label. Moondream2s Apache-2.0-Lizenz darf nicht auf Moondream3 Preview übertragen werden. Für eine kommerzielle Veröffentlichung oder Bereitstellung an Dritte den aktuellen Lizenztext und das eigene Geschäftsmodell rechtlich prüfen; das ist keine Rechtsberatung.5
Für einfache Bildfragen auf einem Mac mit wenig Speicher ist die getestete Ollama-v2-Variante weiterhin der klarere Einstieg. Wer Moondream3 Preview benötigt, muss Runtime, Speicherbedarf und Lizenz separat validieren.
Praxistest mit eigener Bilddatei
Für einen reproduzierbaren Start lade den dokumentierten Ollama-Tag und prüfe anschließend seine Metadaten:
ollama pull moondream:v2
ollama show moondream:v2
ollama ps
Das letzte Kommando zeigt nur aktuell geladene Modelle. Wenn du Moondream2 noch nicht gestartet hast, ist eine leere Ausgabe normal. Starte es mit ollama run moondream:v2 und vergleiche anschließend drei Bildklassen: ein deutliches Alltagsfoto, einen Screenshot mit kleiner Schrift und ein komplexes Diagramm.
Prüfe dabei nicht bloß die reine Antwortgenerierung. Notiere systematisch, ob das Modell Objekte hinzuerfindet, Bildtexte ungenau wiedergibt oder Details auslässt. Die 1,7 GB sind die Downloadgröße; Arbeits-Speicher und Bildverarbeitung benötigen zusätzliche Reserve. Für fehlerkritische OCR-Aufgaben ist eine spezialisierte Texterkennung oft die bessere Wahl.
Für eine vollständige lokale Ollama-Einrichtung siehe den Ollama-Guide.
Quellen und Stand
Stand: 12. Oktober 2026. Ollama-Paketgröße und 2K-Kontext stammen vom v2-Tag; Moondream3-Lizenzbedingungen wurden mit der aktuellen LICENSE.md abgeglichen. Vor produktiver Nutzung Lizenzrevisionen erneut prüfen.
Footnotes
Häufig gestellte Fragen
Was ist Moondream2?
Moondream2 ist ein kompaktes Vision-Language-Modell für Bildbeschreibungen, visuelle Fragen und Objekterkennung. Das Ollama-Paket kombiniert ein 1,42B-Phi-2-Sprachmodell mit einem 454M-CLIP-Projektor und ist etwa 1,7 GB groß.
Läuft Moondream2 auf einem Mac mit 8 GB RAM?
Das 1,7-GB-Paket ist klein genug für einfache Einzelbild-Aufgaben auf vielen Apple-Silicon-Macs mit 8 GB. Offene Apps, Bildgröße und längere Chats reduzieren den verfügbaren Speicher; 16 GB sind komfortabler.
Wie installiere ich Moondream2 mit Ollama?
Installiere Ollama und führe `ollama pull moondream:v2` aus. Mit `ollama run moondream:v2` startest du das Modell. Für Anwendungen kannst du Bilder über die lokale Ollama-API oder die Python-Bibliothek senden.
Kann Moondream2 GPT- oder Gemini-Vision ersetzen?
Nicht generell. Moondream2 ist für einfache lokale Bildfragen interessant, erreicht aber bei dichtem Text, komplexen Diagrammen, feinem OCR und Multi-Image-Reasoning schneller seine Grenzen als größere Vision-Modelle.
Darf Moondream2 kommerziell genutzt werden?
Die aktuelle Hugging-Face-Modellseite und das Ollama-Paket führen Moondream2 unter Apache 2.0. Prüfe für ein Produkt trotzdem die konkrete Modellversion und alle eingebundenen Komponenten.