Ollama einrichten¶
In diesem Abschnitt erfährst du, wie du eine selbst gehostete Ollama Instanz einrichtest und mit PhotoPrism verbindest, um mit vision‑fähigen LLMs detaillierte Bildunterschriften und präzise Kategorien zu erzeugen.
Schritt 1: Ollama installieren¶
Um Ollama auf demselben Server wie PhotoPrism zu installieren, fĂĽge den Dienst ollama im Abschnitt services deiner compose.yaml (oder docker-compose.yml) Datei hinzu, wie im folgenden Beispiel gezeigt.1
Alternativ ist Ollama in den meisten compose.yaml Konfigurations Beispielen auf unserem Download‑Server bereits vorkonfiguriert. In diesem Fall kannst du Ollama mit folgendem Befehl starten:
docker compose --profile ollama up -d
Wenn Ollama standardmäßeig ohne --profile ollama gestartet werden soll, entferne profiles: ["ollama"].
compose.yaml
services:
photoprism:
## The ":preview" build gives early access to new features:
image: photoprism/photoprism:preview
...
## Ollama Large-Language Model Runner (optional)
## Run "ollama pull [name]:[version]" to download a vision model
## listed at <https://ollama.com/search?c=vision>, for example:
## docker compose exec ollama ollama pull gemma3:latest
ollama:
image: ollama/ollama:latest
restart: unless-stopped
stop_grace_period: 15s
## Insecurely exposes the Ollama service on port 11434
## without authentication (for private networks only):
# ports:
# - "11434:11434"
environment:
## Ollama Configuration Options:
OLLAMA_HOST: "0.0.0.0:11434"
OLLAMA_MODELS: "/root/.ollama" # model storage path (see volumes section below)
OLLAMA_MAX_QUEUE: "100" # maximum number of queued requests
OLLAMA_NUM_PARALLEL: "1" # maximum number of parallel requests
OLLAMA_MAX_LOADED_MODELS: "1" # maximum number of loaded models per GPU
OLLAMA_LOAD_TIMEOUT: "5m" # maximum time for loading models (default "5m")
OLLAMA_KEEP_ALIVE: "5m" # duration that models stay in memory (default "5m")
OLLAMA_CONTEXT_LENGTH: "4096" # maximum input context length
OLLAMA_MULTIUSER_CACHE: "false" # optimize prompt caching for multi-user scenarios
OLLAMA_NOPRUNE: "false" # disables pruning of model blobs at startup
OLLAMA_NOHISTORY: "true" # disables readline history
OLLAMA_FLASH_ATTENTION: "false" # enables the experimental flash attention feature
OLLAMA_KV_CACHE_TYPE: "f16" # cache quantization (f16, q8_0, or q4_0)
OLLAMA_SCHED_SPREAD: "false" # allows scheduling models across all GPUs.
OLLAMA_NEW_ENGINE: "true" # enables the new Ollama engine
# OLLAMA_DEBUG: "true" # shows additional debug information
# OLLAMA_INTEL_GPU: "true" # enables experimental Intel GPU detection
## NVIDIA GPU Hardware Acceleration (optional):
# NVIDIA_VISIBLE_DEVICES: "all"
# NVIDIA_DRIVER_CAPABILITIES: "compute,utility"
volumes:
- "./ollama:/root/.ollama"
## NVIDIA GPU Hardware Acceleration (optional):
# deploy:
# resources:
# reservations:
# devices:
# - driver: "nvidia"
# capabilities: [ gpu ]
# count: "all"
Beachte, dass das NVIDIA Container Toolkit installiert sein muss, damit GPU‑Beschleunigung funktioniert. Erfahrene Nutzer können Ollama auch auf einem separaten, leistungsstärkeren Server betreiben.
Ollama erzwingt standardmäßig keine Authentifizierung. Öffne Port 11434 daher nur in vertrauenswürdigen Netzwerken oder betreibe Ollama hinter einem Reverse Proxy, der Zugriffskontrolle hinzufügt.
Schritt 2: Modelle herunterladen¶
Sobald der Ollama Dienst läuft (siehe Schritt 1), kannst du beliebige Vision‑Modelle herunterladen, die zu deiner Hardware und deinen Anforderungen passen. Zum Beispiel:
docker compose exec ollama ollama pull gemma3:latest
Schritt 3: Modelle konfigurieren¶
Erstelle nun eine neue Datei config/vision.yml oder bearbeite die vorhandene Datei im storage‑Verzeichnis deiner PhotoPrism‑Instanz, wie im folgenden Beispiel. Aus Sicht des Containers befindet sich die Datei unter /photoprism/storage/config/vision.yml:
vision.yml
Models:
- Type: caption
Model: gemma3:latest
Engine: ollama
Run: auto
Service:
Uri: http://ollama:11434/api/generate
- Type: labels
Model: gemma3:latest
Engine: ollama
Run: auto
Service:
Uri: http://ollama:11434/api/generate
Scheduling Optionen¶
Run: auto(empfohlen) führt das Modell automatisch aus, nachdem die Indexierung abgeschlossen ist, damit der Import bzw die Indexierung nicht ausgebremst wird. Gleichzeitig bleiben manuelle Aufrufe und zeitgesteuerte Ausführungen möglich.Run: manualdeaktiviert die automatische Ausführung, sodass du das Modell nur manuell überphotoprism vision run -m captionoderphotoprism vision run -m labelsstartest.
Konfigurations Tipps¶
PhotoPrism wertet Modelle von unten nach oben in der Liste aus. Wenn du die Ollama Einträge unterhalb anderer Modelle platzierst, werden Ollama‑Modelle bevorzugt, während andere als Fallback erhalten bleiben.
Von Ollama generierte Captions und Labels werden automatisch mit der Source ollama gespeichert. Du musst daher keinen speziellen source‑Wert angeben, außer du möchtest die Quelle explizit überschreiben.
Prompt‑Lokalisierung
Wenn du Ausgaben in anderen Sprachen erzeugen möchtest, lasse die Basisanweisungen im Prompt auf Englisch und ergänze nur die gewünschte Sprache (z.B. „Respond in German“). Dieses Vorgehen funktioniert sowohl für Caption‑Prompts als auch für Label‑Prompts.
Schritt 4: PhotoPrism neu starten¶
FĂĽhre die folgenden Befehle aus, um photoprism neu zu starten und die neuen Einstellungen zu ĂĽbernehmen:
docker compose stop photoprism
docker compose up -d
Anschließend kannst du die photoprism vision CLI‑Befehle im Terminal verwenden, z.B. photoprism vision run -m caption zum Erzeugen von Captions oder photoprism vision run -m labels zum Erzeugen von Kategorien.
Troubleshooting¶
Konfiguration ĂĽberprĂĽfen¶
Wenn es Probleme gibt, solltest du zuerst prĂĽfen, ob die vision.yml richtig geladen wurde.
docker compose exec photoprism photoprism vision ls
Der Befehl gibt die Einstellungen aller unterstĂĽtzten und konfigurierten Modelltypen aus. Vergleiche das Ergebnis mit deiner vision.yml, um zu prĂĽfen, ob die Konfiguration korrekt ĂĽbernommen wurde oder Konfigurationsfehler vorliegen.
Test Runs durchfĂĽhren¶
Die folgenden Terminal‑Befehle führen jeweils einen einzelnen Lauf für den angegebenen Modelltyp aus:
photoprism vision run -m labels --count 1 --force
photoprism vision run -m caption --count 1 --force
Wenn keine Ausgabe erzeugt wird, wiederhole den Aufruf mit einem höhreren Log Level.
photoprism --log-level=trace vision run -m labels --count 1 --force
photoprism --log-level=trace vision run -m caption --count 1 --force
GPU Performance Probleme¶
Bei der Verwendung von Ollama mit GPU‑Beschleunigung kann es mit der Zeit zu Leistungseinbrüchen durch Probleme im VRAM‑Management kommen. Typische Anzeichen sind langsamere Verarbeitung und der Eindruck, dass der Dienst „abstürzt“, obwohl er noch Anfragen beantwortet – dann allerdings ohne GPU‑Nutzung.
Die Ursache ist, dass die VRAM‑Belegung nach vielen Anfragen nicht sauber aufgeräumt wird und es zu Fragmentierung sowie fehlgeschlagenen GPU‑Aufrufen kommt.
Der Ollama‑Dienst erholt sich von diesen VRAM‑Problemen nicht automatisch. Um die GPU‑Beschleunigung wiederherzustellen, starte den Container manuell neu:
docker compose down ollama
docker compose up -d ollama
Dadurch wird der VRAM geleert und die normale GPU‑beschleunigte Verarbeitung wiederhergestellt.
-
Nicht relevante Konfigurationsdetails wurden zur besseren Lesbarkeit ausgelassen. ↩