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:

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:

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:

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.