Diese kleine Anleitung baut sich aus mehreren Beiträgen auf und führt euch Schritt für Schritt von der Installation bis zur fertigen Applikation. So ist die Anleitung zunächst einmal aufgebaut, dass Ollama installiert wird. Ollama wird als Server eingesetzt das die verschiedenen Sprachenmodelle bereitstellt. Der große Vorteil von Ollama (https://github.com/ollama/ollama) ist es, dass es verschiedene Sprachenmodelle bereitstellen kann die über eine API aus der eigentlichen Python-Anwendung angesprochen werden. So läuft alles lokal auf dem eigenen Rechner und es entstehen keine zusätzlichen Kosten wie diese anfallen bei der Benutzung z. B. der OpenAI Services. Ich bin immer ein Freund alles daheim lokal laufen zu lassen und auch aus Datenschutzgesichtspunkten finde ich diese Lösung so ganz gut.
Hinweis: Ich installiere alles auf einen Ubuntu System in dem eine NVIDIA A6000 ihren Dienst verrichtet.
Ollama Installation
Jetzt wird zunächst einmal Ollama auf dem Ubuntu System installiert. Ich habe dazu den nachfolgenden Befehl in meiner user-session ausgeführt.
Befehl: curl -fsSL https://ollama.com/install.sh | sh
Nach der Installation laden wir noch das große Sprachenmodell mistral herunter das nicht allzu große Anforderungen an die Grafikkarte hat und damit bei vielen auf einer RTX3090 oder ähnlich laufen sollte. Für die Installation bitte jetzt den folgenden Befehl ausführen.
Ollama Sprachenmodelle
Hier gibt es immer die aktuell Übersicht der für Ollama zur Verfügung gestellten Modelle: https://ollama.com/library
Befehl: ollama pull mistral
Befehl: ollama pull gemma:7b
Befehl: ollama pull gemma:2b
Die Modelle liegen dann unter Linux oder WSL im folgenden Pfad: /usr/share/ollama/.ollama/models
Mit dem folgenden Befehl kannst Du prüfen ob mistral und die anderen Modelle herunter geladen wurden und erfolgreich in ollama zur Verfügung steht.
Befehl: ollama list
Möchtest Du ein Modell löschen dann lautet der Befehl wie folgt.
Befehl: ollama rm <Model-Name>
Soll ein Modell aktualisiert werden dann geht das wieder mit dem bereits bekannten Befehl für das Installieren von Modellen.
Befehl: ollama pull <Model-Name>
Ollama TextEmbedding
Die wichtigsten Informationen zum Thema Text-Embeddings gibt es hier: https://python.langchain.com/docs/integrations/text_embedding/ollama
Ollama starten
Jetzt startet einfach einmal mit dem folgenden Befehl den Ollama Server. Mit diesem wird dann unsere Applikation kommunizieren und das mistral LLM aufrufen.
Befehl: ollama serve
Hinweis: Wenn jetzt die folgende Meldung angezeigt wird, dann beläuft bereits der Ollama Server und ihr müsst erst einmal nichts weiter machen.
(ollama_rag) ingmar@A6000:~$ ollama serve
Error: listen tcp 127.0.0.1:11434: bind: address already in use
Jetzt ist alles soweit eingerichtet und es kann damit losgehen die kleine RAG Applikation zu schreiben. Mit dieser bist Du dann in der Lage ein PDF-Dokument mit natürlicher Sprache zu durchsuchen.
Ollama aktualisieren
Die Installation von Ollama kann recht einfach aktualisiert werden. Der Befehl um die aktuell verwendete Version von Ollama sich ausgeben zu lassen ist wie folgt.
Befehl: ollama --version
Bei mir war zu diesem Augenblick die Version “ollama version is 0.1.25
” installiert.
Die aktuell verfügbare Version von Ollama erfährt mann hier rechts in dem Menü: https://github.com/ollama/ollama
Mit dem folgenden bereits von der Installation bekannten Befehl kann man Ollama unter Ubuntu aktualisieren.
Befehl: curl -fsSL https://ollama.com/install.sh | sh
Nach dem ich den Befehl noch einmal ausgeführt hatte war die aktuelle Version 0.1.27
installiert.
Sprachenmodelle aktualisieren
Hin und wieder möchte man eventuell die herunter geladenen Sprachenmodelle aktuallisieren. Das birgt einmal zwei Gefahren meiner Meinung nach. Einmal das die Aktualisierung Zeit und Speicherplatz beansprucht je nach Anzahl der bereits herunter geladenen Modelle aber auch das sich deren Verhalten verändern kann und eventuellen Anwendungen überprüft werden müssen ob diese noch so funktionieren wie vor der Aktualisierung.
Hier ein Script das ich im folgenden Beitrag gefunden hatte und gerne über Nacht bei mir laufen lasse. Wichtig ist noch das es passieren kann das sich der Rechner aufhängt. Also hier bitte Vorsicht walten lassen da doch sehr viele GB heruntergeladen werden müssen.
#!/bin/bash
ollama list | tail -n +2 | awk '{print $1}' | while read -r model; do
ollama pull $model
done
Ollama im Netzwerk erreichbar machen
Hier möchte ich euch kurz erklären wie ihr den Ollama service in eurem Netzwerk von einem anderen Rechner aus erreichbar macht. Dazu bitte einmal den folgenden Befehl im Terminalfenster ausführen. Der große Vorteil bei diesem Vorgehen ist es, dass nach einer Aktualisierung von ollama die Konfiguration erhalten bleibt also nicht überschrieben wird.
Befehl: sude systemctl edit ollama.service
Jetzt müsst ihr die beiden folgenden Zeilen einfügen direkt unter der Kommentarzeilte.
[Service]
Environment="OLLAMA_HOST=0.0.0.0"
Die Ergänzung sollte jetzt wie im folgenden Bild gezeigt aussehen.
Jetzt muss die Anpassung der Konfiguration noch geladen werden. Dazu bitte die beiden folgenden Befehle ausführen.
Befehl: systemctl daemon-reload
Befehl: systemctl restart ollama
Jetzt sollte ollama über ads Netzwerk erreichbar sein. Das könnt ihr ausprobieren wenn ihr die folgende URL ladet. Es sollten alle LLMs angezeigt werden die ihr auf dem Server verfügbar habt.
URL: <IP-Adresse:11434/api/tags>
Zusammenfassung
Mit dem Ollama Framework ist es sehr leicht geworden verschiedene Sprachenmodelle lokal zu betreiben und über eine API im Netzwerk verfügbar zu machen. Das wirklich tolle hieran ist, dass LangChain Ollama unterstützt und so die Programmierung des Aufrufes des Endpunktes in der eigenen Python Anwendung denkbar einfach möglich ist. In meinem weiteren Beitrag gehe ich auf das Python Programm ein das genau diese kleine RAG Anwendung zum Leben erweckt.
Hallo, ich habe ihre Anleitung befolgt und bekomme im letzten Schritt leider immer folgende Meldung im Terminal: bash <(wget -qO-…
Hi Dennis, vielen Dank für den Hinweis, ich habe die URLs angepasst so das diese wieder gehen. Ich bin gespannt…
Ich weiss, es ist noch im Aufbau. Aber hier ist ein Broken Link: https://www.ai-box.eu/smurf_training_data_small.zip Freue mich drauf, die ganze Serie…