9.3 Ollama
Ollama ist wie GPT4All ein Werkzeug, mit dem Sie KI-Modelle lokal auf Ihrem System ausführen können. Im Gegensatz zu GPT4All liefert Ollama jedoch keine grafische Oberfläche mit, sondern konzentriert sich auf die lokale Ausführung und das Management von Modellen im Terminal. Dabei ist die Anwendung so flexibel aufgebaut, dass Sie in wenigen Schritten eine grafische Oberfläche oder Integrationen in andere Applikationen auf Ihrem System hinzufügen können.
Ollama ist ein Open-Source-Projekt, das auf GitHub verwaltet wird. Die offizielle Webseite des Projekts mit einer zugegebenermaßen etwas spärlichen Dokumentation, aber dafür einem interessanten Blog finden Sie hier:
https://ollama.com
https://github.com/ollama/ollama
Ollama ist in der Lage, die Hardware Ihres Systems optimal auszunutzen, und kann zur Ausführung der Modelle sowohl die CPU als auch die GPU des Systems verwenden. Dabei sollten Sie die Verwendung der GPU bevorzugen, da hier die Performance deutlich besser ist. Die Plattform unterstützt eine Reihe von NVIDIA- und AMD-Grafikkarten sowie die GPU-Beschleunigung auf Apple-Geräten. Eine Übersicht über die unterstützten Grafikkarten finden Sie hier:
https://github.com/ollama/ollama/blob/main/docs/gpu.md
Vorteile von Ollama
Ollama ist eine leichtgewichtige und flexible Plattform, mit der Sie Ihre lokalen Modelle ausführen können. Es gibt einige Gründe, warum Sie auf diese Plattform setzen sollten:
-
Lokale Ausführung: Mit Ollama sind Sie, wie auch bei GPT4All, unabhängig von Anbietern von KI-Lösungen, da alle Elemente der Plattform, einschließlich der Modelle, lokal auf Ihrem System laufen. Neben dieser Unabhängigkeit reduziert die lokale Ausführung auch die Latenz in der Kommunikation, sodass Sie Ihre Antworten schneller erhalten.
-
Einfache Bedienung: Mit dem Kommandozeilenwerkzeug von Ollama können Sie mit einem überschaubaren Befehlssatz alle notwendigen Operationen direkt durchführen. Diese Variante ist zwar nicht besonders komfortabel, erlaubt es Ihnen jedoch, Ollama auf einem System ohne grafische Oberfläche zu betreiben und über eine entfernte Verbindung zu steuern.
-
Vorkonfigurierte Modelle: Ollama stellt Ihnen eine Reihe vordefinierter Modelle zur Verfügung, die Sie über die Kommandozeile direkt laden und in Ihr System integrieren können.
-
Anpassbarkeit: Das Laden der vordefinierten Modelle ist die komfortabelste Lösung, um schnell mit häufig verwendeten, frei verfügbaren Modellen zu starten. Ollama ermöglicht es Ihnen jedoch auch, Ihre eigenen Modelle zu integrieren.
-
Flexibilität: Freiheit und Flexibilität ziehen sich bei Ollama von den Modellen bis zu den Benutzerschnittstellen durch. Sie können die Plattform ganz nach Ihren Bedürfnissen gestalten und haben dabei kaum Einschränkungen.
-
Datenschutz: Durch die lokale Ausführung verlassen Ihre Prompts und die Antworten Ihr System nicht. Führen Sie Ollama lokal aus, sind Ihre Daten vor unberechtigten Zugriffen geschützt. Betreiben Sie die Plattform in Ihrem lokalen Netzwerk oder gar öffentlich verfügbar im Internet, müssen Sie die Schnittstellen vor Missbrauch schützen.
-
Plattformübergreifend: Sie können Ollama auf verschiedenen Systemen ausführen. Es gibt Installationsroutinen für macOS, Linux und Windows. Außerdem können Sie die Plattform auch in einem Docker-Container betreiben.
Nachdem Sie die wesentlichen Vorteile von Ollama kennen, wollen wir nun einen genaueren Blick auf den generellen Aufbau der Plattform und die einzelnen Bestandteile werfen. Wenn Sie verstehen, wie Ollama strukturiert ist, hilft Ihnen das, die Funktionsweise und die Anpassungsmöglichkeiten besser zu begreifen.
Genereller Aufbau von Ollama
Ollama versucht, den Einstieg in die Arbeit mit lokalen Modellen so einfach wie möglich zu gestalten, sodass Sie mit nur wenigen Schritten eine funktionsfähige Umgebung haben. Ollama besteht aus mehreren Teilen, die für eine funktionierende lokale Umgebung zusammenspielen:
-
Ollama-Engine: Der Kern von Ollama ist die Engine, die für die Ausführung der KI-Modelle verantwortlich ist. Sie weist die Ressourcen zu und optimiert die Ausführung. Die Engine läuft als Dienst im Hintergrund und stellt die Schnittstellen zum Modell zur Verfügung.
-
Kommandozeilenwerkzeug: Der einfachste Weg, um mit Ollama zu interagieren, führt über die Kommandozeile. Mit diesem Werkzeug können Sie die lokalen Modelle verwalten und auch Prompts absetzen.
-
Lokales Modell: Die Ollama-Plattform allein ist ohne mindestens ein installiertes lokales Modell wenig hilfreich. Über die Kommandozeile können Sie eines der Modelle aus der Ollama-Bibliothek laden oder Ihr eigenes Modell integrieren.
Diese Komponenten müssen Sie im nächsten Schritt auf Ihrem System installieren, um mit Ollama arbeiten zu können.
Lokale Installation und Ausführung
Für die Installation von Ollama stehen Ihnen verschiedene Möglichkeiten zur Verfügung. Die erste Anlaufstelle ist die offizielle Webseite https://ollama.com. Hier erhalten Sie für macOS direkt die Ollama-Applikation, die Sie sofort ausführen können. Für Linux wird ein Installationsskript angeboten, das Sie über einen HTTP-Client wie curl herunterladen und in Ihre Shell pipen können. Für Windows steht eine Setup-Datei zum Download bereit.
Alternativ können Sie auch den Paketmanager Ihres Systems verwenden. Auf macOS können Sie Ollama mit Homebrew installieren, und auf einem Ubuntu-System können Sie es mithilfe von snap installieren.
Nach der Installation stehen Ihnen eine Reihe von Kommandozeilen-Optionen zur Verfügung. Die generelle Funktionsfähigkeit können Sie auf der Kommandozeile mit dem folgenden Befehl testen:
ollama -v
ollama version is 0.3.6
Bevor Sie mit Ollama arbeiten können, müssen Sie ein lokales Modell installieren. In der Ollama-Bibliothek stehen unter anderem folgende Modelle zur Verfügung:
-
Llama 3.1: Ein leistungsstarkes Sprachmodell von Meta, das speziell für die natürliche Sprachverarbeitung und Konversations-KI entwickelt wurde. Es bietet Verbesserungen in der Textgenerierung und im Textverständnis im Vergleich zu seinen Vorgängerversionen.
-
Phi 3: Ein offenes LLM von Microsoft, das bei verhältnismäßig geringer Größe eine sehr gute Leistung erbringt und in verschiedenen Benchmarks in der Sprachverarbeitung, Logik, Programmierung und Mathematik hervorragend abschneidet.
-
Gemma 2: Ein generatives Modell von Google, das sich durch hohe Effizienz, Performance und Zugänglichkeit auszeichnet. Es wurde vor allem für Entwickler und Forscherinnen entwickelt.
-
Llama 2 Uncensored: Eine Variante von Llama 2, die weniger restriktiv in Bezug auf Content-Moderation ist und daher flexibler bei der Generierung von Inhalten eingesetzt werden kann, insbesondere in Kontexten, in denen weniger kontrollierte Textausgaben erforderlich sind.
-
Mistral: Ein Modell, das sich auf die Erkennung und Verarbeitung von Mehrsprachigkeit spezialisiert hat. Es ist für Anwendungen konzipiert, die in mehreren Sprachen arbeiten müssen und dabei eine hohe Genauigkeit in der Sprachverarbeitung erfordern.
-
Starling: Ein Modell, das auf Präzision in der Informationswiedergabe spezialisiert ist. Es wird oft in Anwendungen verwendet, die zuverlässige und genaue Informationen benötigen, wie z. B. in Frage-Antwort-Systemen oder Wissensdatenbanken.
-
Code Llama: Ein spezialisiertes Modell von Meta für die Codegenerierung und -vervollständigung. Es unterstützt mehrere Programmiersprachen und ist besonders nützlich für Entwickler, die bei der Codeerstellung und -optimierung Unterstützung suchen.
-
LLaVA: Ein Modell, das multimodale Fähigkeiten kombiniert, wie etwa die Verarbeitung von Text und visuellen Daten. Es ist ideal für Anwendungen, die eine Integration von Bild- und Textinformationen benötigen, wie z. B. Bildbeschreibungen oder visuelle Frage-Antwort-Systeme.
Für einige Modelle, wie Llama 3.1, gibt es verschiedene Varianten. Diese reichen von der kleinsten Variante mit 8 Milliarden Parametern und 4,7 GB über die mittlere Version mit 70 Milliarden Parametern und 40 GB bis zur größten Variante mit 405 Milliarden Parametern und 231 GB. Existieren mehrere Varianten, schlägt sich das im Namen nieder. So heißt das große Llama-3.1-Modell beispielsweise llama3.1:405b. Für die ersten Schritte installieren wir die 8B-Variante von Llama 3.1 mit folgendem Kommando:
ollama pull llama3.1
pulling manifest
pulling 8eeb52dfb3bb... 100% 4.7 GB
pulling 11ce4ee3e170... 100% 1.7 KB
pulling 0ba8f0e314b4... 100% 12 KB
pulling 56bb8bd477a5... 100% 96 B
pulling 1a4c3c319823... 100% 485 B
verifying sha256 digest
writing manifest
removing any unused layers
success
Mit ollama list können Sie sich die lokal verfügbaren Modelle anzeigen lassen. Dabei erhalten Sie Informationen wie den Namen des Modells, seine eindeutige ID, die Größe sowie das Datum der letzten Änderung. Je nach System speichert Ollama die Modelle entweder in einem Unterverzeichnis des aktuellen Benutzers (macOS und Windows) oder in einem Unterverzeichnis von /usr/share (Linux).
Das Kommando ollama serve startet den Ollama-Dienst, und mit ollama run können Sie ein bestimmtes Modell ausführen. Mit ollama run llama3.1 starten Sie eine interaktive Session auf der Kommandozeile, in der Sie beliebige Prompts absetzen können, wie beispielsweise den folgenden:
Prompt: Create a TypeScript function that adds two numbers
Here is a simple TypeScript function that takes two numbers as parameters and returns their sum:
/**
* Adds two numbers together.
*
* @param num1 The first number to add.
* @param num2 The second number to add.
* @returns The sum of the two numbers.
*/
function addNumbers(num1: number, num2: number): number {
return num1 + num2;
}
// Example usage:
console.log(addNumbers(5, 7)); // Outputs: 12
Explanation of the code …
Das Ergebnis der Prompts kann sich selbst beim kleinen Llama3.1-Modell sehen lassen. Je größer das Modell, desto besser werden die Rückmeldungen. Außerdem haben Sie die Möglichkeit, durch Fine-Tuning oder RAG (Retrieval-Augmented Generation) noch mehr aus Ihrem LLM herauszuholen. Mehr zu diesem Thema erfahren Sie im Kapitel 12, »Retrieval Augmented Generation (RAG) und Text-to-SQL«.
Da die Modelle mitunter ziemlich speicherintensiv sind, kommt irgendwann der Zeitpunkt, an dem Sie ein lokal installiertes Modell wieder entfernen möchten. In diesem Fall sollten Sie sich auf das Kommandozeilenwerkzeug verlassen und nicht selbst versuchen, die Modelldateien von der Festplatte zu löschen. Um beispielsweise das Llama3.1-Modell zu entfernen, nutzen Sie das Kommando ollama rm llama3.1. Dieser Befehl sorgt dafür, dass das Modell und alle zugehörigen Metadaten sauber gelöscht werden.
Ollama in einem Docker-Container ausführen
Die lokale Installation von Ollama hat einen entscheidenden Nachteil: Sie greift in Ihr System ein. Zwar ist Ollama ein recht solides Werkzeug, mit dem Sie gut arbeiten können, aber wenn Sie jedes neue KI-Werkzeug auf Ihrem System installieren, kann es schnell unübersichtlich werden. Eine Alternative dazu ist, Ollama in einem Container auszuführen. Dadurch bleiben Sie unabhängig von Ihrem lokalen System und können den Container sogar auf anderen Systemen nutzen, sei es auf anderen Client-Systemen oder Servern.
Um den Ollama-Container nutzen zu können, benötigen Sie die Docker-Engine oder eine Alternative wie Rancher Desktop auf Ihrem System. Wenn diese Voraussetzung erfüllt ist, können Sie das offizielle Ollama-Image verwenden:
docker run -d -v ollama:/root/.ollama -p 11434:11434 \
--name ollama ollama/ollama
Dieser Befehl startet einen Container im Hintergrund (-d), der auf dem offiziellen Ollama-Image (ollama/ollama) basiert. Das Volume ollama wird in den Container auf den Pfad /root/.ollama gemountet. Standardmäßig ist die Ollama-API mit dem Port 11434 verknüpft. Mit der Option -p geben Sie diesen Port nach außen frei, sodass Sie von Ihrem System aus darauf zugreifen können. Außerdem weisen Sie dem Container den Namen ollama zu, um ihn einfacher adressieren zu können.
Je nachdem, ob Sie eine GPU von NVIDIA oder AMD in Ihrem System haben, müssen Sie zusätzliche Schritte unternehmen, um die Unterstützung Ihrer GPU zu aktivieren. Eine genaue Anleitung dazu finden Sie hier:
https://hub.docker.com/r/ollama/ollama
Wenn Sie das Kommando ausführen, sucht Docker zunächst nach einer lokalen Version des Images. Falls diese nicht vorhanden ist, lädt Docker das Image aus der zentralen Registry herunter und erzeugt sowie startet den Container. Sobald der Container gestartet ist, können Sie mit ihm interagieren.
Üblicherweise verwenden Sie hierfür das Kommando docker exec -it ollama, gefolgt vom eigentlichen Ollama-Befehl. Dieser Docker-Befehl führt das angegebene Kommando im laufenden Container mit dem Namen ollama aus. Dabei steht die Option i für eine interaktive Session und t für TTY, ein Pseudoterminal. Mit docker exec -it ollama ollama run llama3.1 starten Sie also eine interaktive Kommandozeilensession mit dem Llama-3.1-Modell. Durch das lokal gemountete Volume lädt Ollama die Modelle in das Ollama-Verzeichnis Ihres Hostsystems herunter, sodass die Daten unabhängig vom Container sind.