Diese Anleitung besteht aus mehreren Teilen und führt dich Schritt für Schritt von der Installation bis zur fertigen Anwendung. Zunächst wird Ollama auf einem Ubuntu-System installiert. Ollama fungiert als Server, der verschiedene Sprachmodelle bereitstellt. Ein großer Vorteil von Ollama (GitHub-Link) ist die Fähigkeit, mehrere Sprachmodelle über eine API für Python-Anwendungen verfügbar zu machen. Dadurch läuft alles lokal auf deinem Rechner, wodurch zusätzliche Kosten, wie sie beispielsweise bei der Nutzung von OpenAI-Services anfallen, vermieden werden. Zudem fördert dies die Datensicherheit, da keine Daten an externe Dienste übertragen werden.

Hinweis: In diesem Beispiel wird die Installation auf einem Ubuntu-System durchgeführt, das mit einer NVIDIA A6000 Grafikkarte ausgestattet ist.

Deep Learning Computer NVIDIA RTX A6000

Deep Learning Computer NVIDIA RTX A6000

Ollama Installation

Zunächst installieren wir Ollama auf dem Ubuntu-System. Führe dazu den folgenden Befehl in deiner Benutzersitzung aus:

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

Sprachmodelle herunterladen

Nach der Installation laden wir das große Sprachmodell Mistral herunter, das moderate Anforderungen an die Grafikkarte stellt und somit auch auf einer RTX3090 oder ähnlichen GPUs gut läuft. Verwende dazu die folgenden Befehle:

Befehl: ollama pull mistral

Befehl: ollama pull gemma:7b

Befehl: ollama pull gemma:2b

Eine Übersicht aller für Ollama verfügbaren Modelle findest du hier.

Die Modelle werden unter Linux oder WSL im folgenden Pfad gespeichert:

Pfad: /usr/share/ollama/.ollama/models

Überprüfe, ob die Modelle erfolgreich heruntergeladen wurden und Ollama sie bereitstellt:

Befehl: ollama list

Modelle verwalten

Modelle löschen

Befehl: ollama rm <Model-Name>

Modelle aktualisieren

Befehl: ollama pull <Model-Name>

Ollama TextEmbedding

Weitere Informationen zu Text-Embeddings mit Ollama findest du in der LangChain-Dokumentation.

Ollama Server starten

Starte den Ollama-Server mit folgendem Befehl. Dieser ermöglicht deiner Anwendung die Kommunikation mit dem Mistral-LLM.

Befehl: ollama serve

Hinweis: Sollte die folgende Fehlermeldung erscheinen, ist der Ollama-Server bereits aktiv, und du musst nichts weiter unternehmen.

(ollama_rag) ingmar@A6000:~$ ollama serve
Error: listen tcp 127.0.0.1:11434: bind: address already in use

Nun ist alles eingerichtet und du kannst mit der Entwicklung einer kleinen RAG-Applikation beginnen, die es ermöglicht, PDF-Dokumente mit natürlicher Sprache zu durchsuchen.

Ollama aktualisieren

Die Aktualisierung von Ollama ist einfach. Überprüfe zunächst die installierte Version:

Befehl: ollama --version

Beispielausgabe:

ollama version is 0.3.14

Die neueste Version findest du im Ollama GitHub-Repository. Aktualisiere Ollama mit dem folgenden Befehl:

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

Nach der Ausführung zeigt beispielsweise ollama --version die Version 0.4.0 an.

Sprachenmodelle aktualisieren

Das Aktualisieren der Sprachmodelle kann Zeit und Speicherplatz beanspruchen. Zudem kann sich das Verhalten der Modelle ändern, was möglicherweise Anpassungen in deinen Anwendungen erfordert. Hier ein Beispielskript, das alle vorhandenen Modelle aktualisiert:

#!/bin/bash
ollama list | tail -n +2 | awk '{print $1}' | while read -r model; do
  ollama pull $model
done

Vorsicht: Dieses Skript kann mehrere Gigabyte an Daten herunterladen und den Rechner belasten. Es wird empfohlen, das Skript über Nacht laufen zu lassen.

Ollama im Netzwerk erreichbar machen

Um den Ollama-Service von anderen Rechnern im Netzwerk zugänglich zu machen, bearbeite die Systemd-Service-Datei:

Befehl: sudo systemctl edit ollama.service

Füge direkt unter der Kommentarzeile die folgenden Zeilen ein:

[Service]
Environment="OLLAMA_HOST=0.0.0.0"

Die Ergänzung sollte jetzt wie im folgenden Bild gezeigt aussehen.

ollama network config

ollama network config

Speichere die Datei und lade die Konfiguration neu:

Befehl: systemctl daemon-reload
Befehl: systemctl restart ollama

Ollama ist nun über das Netzwerk erreichbar. Teste dies, indem du die folgende URL in deinem Browser aufrufst (ersetze <IP-Adresse> durch die tatsächliche IP deines Servers):

URL: <IP-Adresse:11434/api/tags>

Zur Fehlersuche kannst du die gesetzten Umgebungsvariablen und die Konfiguration einsehen:

Befehl: systemctl show ollama.service --property=Environment

Das Ollama-Log kannst du mit diesem Befehl anzeigen lassen:

Befehl: sudo journalctl -u ollama.service -e

Überprüfe den Status von Ollama mit:

Befehl: sudo systemctl status ollama.service

Speicherort der Sprachenmodelle ändern

Falls du einen spezifischen Pfad für die Sprachmodelle verwenden möchtest, passe die Konfiguration wie folgt an:

Befehl: sudo systemctl edit ollama.service

Füge die Umgebungsvariable für den neuen Pfad hinzu:

Environment="OLLAMA_MODELS=/your/desired/path" #you will add this line

Hinweis: Stelle sicher, dass der angegebene Pfad existiert und dass Ollama Schreibzugriff darauf hat.

Befehl: systemctl daemon-reload
Befehl: systemctl restart ollama

Jetzt sieht die Service Konfiguration wie folgt aus.

Ollama configuration two environment variables

Ollama configuration two environment variables

Zusammenfassung

Mit dem Ollama-Framework kannst du problemlos verschiedene Sprachmodelle lokal betreiben und über eine API im Netzwerk verfügbar machen. Besonders vorteilhaft ist die Unterstützung von LangChain, die die Integration in eigene Python-Anwendungen vereinfacht. In meinem nächsten Beitrag werde ich auf die Erstellung einer Python-Anwendung eingehen, die diese kleine RAG-Applikation zum Leben erweckt.