Ollama auf dem Mac verwenden

Im ersten Artikel zu Ollama wurde erklärt, wie Ollama auf dem Mac installiert werden kann, um eine KI lokal nutzen zu können. Nun wollen wir einen genaueren Blick auf die Möglichkeiten werfen, die dieses KI-Werkzeug bietet.

Befassen wir uns zunächst mit den zur Verfügung stehenden Sprachmodellen (lokal und online). Einen Überblick über bereits installierten, also lokal ausführbaren Modellen, liefert die Option list:

% ollama list

Sofern bereits Modelle installiert wurden, erscheint eine Rückmeldung ähnlich der folgenden Ausgabe:

NAME                    ID              SIZE      MODIFIED   
qwen2.5-coder:latest    dae161e27b0e    4.7 GB    6 days ago    
gemma3:latest           a2af6cc3eb7f    3.3 GB    6 days ago

In diesem Beispiel sind zwei Modelle aufgeführt:

  • qwen2.5-coder und
  • gemma3

Welche Modelle heruntergeladen werden können, verrät Ollamas Internetseite. Ruft man dort die Details zu gemma3 auf, erfährt man, dass es sich bei der Version „latest“ um die Version gemma3:4b handelt, die 3,3 GB groß ist und als Eingabe sowohl Text als auch Bilder zuläßt.

gemma3 LLMs on Ollama's website
gemma3-Sprachmodell auf Ollamas Internetseite

Weiter unten auf jener Internetseite finden sich weitere Informationen. So handelt es sich um ein Modell mit 4 Milliarden Parametern (gekennzeichnet durch „4b“ nach dem Doppelpunkt). Je mehr Parameter ein Sprachmodell hat, desto besser sind die Ausgaben. Allerdings ist zu bedenken, dass mehr Parameter mehr Ressourcen beanspruchen (Arbeitsspeicher, CPU). Deswegen habe ich auch nicht das Modell mit 27 Milliarden Parametern heruntergeladen. Denn der limitierende Faktor bezüglich der Auswahl eines geeigneten Modells ist insbesondere der zur Verfügung stehenden Arbeitsspeicher. Vereinfacht lässt sich sagen, dass ein Modell mit 4 Milliarden Parametern ca. 4 GB Arbeitsspeicher belegt. Bei einem Mac mit 16 GB Arbeitsspeicher stellt ein 4b-Modell kein Problem dar. Anders sieht es mit einem 27b-Modell aus, das so langsam laufen würde, dass die Nutzung absolut keine Freude bereiten würde.

Ein Modell herunterladen, starten oder löschen

Ein Sprachmodell kann mit den Befehlen pull oder run heruntergeladen werden. Der Unterschied besteht darin, dass nach der Ausführung von ollama run <Sprachmodell> versucht wird ein lokales Modell auszuführen. Wenn dieses Modell nicht lokal vorhanden ist, wird es heruntergeladen und anschließend gestartet. Bei der Ausführung von pull wird hingegen ein Sprachmodell nur heruntergeladen. Das Sprachmodell von Mistral könnte also unter Verwendung von pull mit folgendem Befehl heruntergeladen werden, so dass es anschließend lokal zur Verfügung steht.

% ollama pull mistral:7b
pulling manifest 
pulling f5074b1221da: 100% ████████████████████████████████████▏ 4.4 GB                         
pulling 43070e2d4e53: 100% ████████████████████████████████████▏  11 KB                         
pulling 1ff5b64b61b9: 100% ████████████████████████████████████▏  799 B                         
pulling ed11eda7790d: 100% ████████████████████████████████████▏   30 B                         
pulling 1064e17101bd: 100% ████████████████████████████████████▏  487 B                         
verifying sha256 digest 
writing manifest 
success 

Anschließend wird die Eingabeaufforderung mit dem Befehl run gestartet:

% ollama run mistral
>>> Send a message (/? for help)

Wie bereits gezeigt, finden sich auf Ollamas Webseite detaillierte Informationen zu den Sprachmodellen. Im Terminal kann man sie sich ebenfalls ansehen:

% ollama show mistral

Wenn ein Sprachmodell nicht mehr benötigt wird, hilft rm weiter. Folgender Befehl löscht mistral:7b:

% ollama rm mistral:7b
deleted 'mistral:7b'

Ein Modell erstellen bzw. modifizieren

Wenn ihr mit ollama help einen Blick auf die vorhandenen Befehle geworfen habt, mag euch create aufgefallen sein. Was es damit auf sich hat, wollen wir uns nun näher ansehen. In der Dokumentation zu Ollama erfahren wir, dass damit ein Sprachmodell von einem anderen Sprachmodell erstellt werden kann. Im Grunde wird dabei aber nicht ein komplett neues Modell erstellt, sondern ein bestehendes Modell modifiziert.

Dafür erstellt man eine simple Datei, die die Bezeichnung „Modelfile“ haben könnte. Mit einem Editor wie beispielsweise BBEdit, Sublime Text oder Visual Studio Code können in diese Datei nun die Anweisungen für das Modifizieren eines bestehenden Sprachmodells geschrieben werden. Im folgenden Beispiel soll ein modifiziertes Sprachmodell auf Basis des Modells gemma3 erstellt werden. Dieses Modell soll den Namen „Heinz“ und der Temperatur-Parameter den Wert 0.6 haben. Außerdem wird dem Sprachmodell eine Rolle zugewiesen. Die Datei Modelfile weist dann folgenden Inhalt auf:

FROM gemma3:latest
PARAMETER temperature 0.6

SYSTEM """
Du bist Peter, ein hilfreicher Assistent auf dem Gebiet der Geschichtswissenschaften. 
Fragen beantwortest du prägnant und informativ ohne in überflüssige Details abzuschweifen. 
Frage stattdessen nach, ob mehr Details gewünscht werden.
"""

Für den Temperatur-Parameter können Werte zwischen 0 und 1 angegeben werden. Er legt fest, wie kreativ oder konservativ das Modell auf Eingaben reagiert. Niedrigere Werte führen zu vorhersehbareren Ergebnissen, höhere Werte verleihen den Ausgaben mehr Kreativität. Experimentiert mit verschiedenen Werten, um das gewünschte Gleichgewicht zwischen Kreativität und Genauigkeit zu finden. Ausgangspunkt könnte ein Wert von 0.5 sein, den ihr schrittweise anpasst. Denkt daran, dass die Modifikationen nicht nur durch Zahlen, sondern auch durch klare Anweisungen im Systemprompt beeinflusst werden. Diese ermöglichen es euch, die Tonalität und den Fokus des Modells weiter zu verfeinern.

Ein Wort der Klarstellung: Häufig wird der Begriff Fine-Tuning in Artikeln oder Videos verwendet, wenn es um das Anpassen von Parametern geht. Dieser Ausdruck ist jedoch irreführend. Fine-Tuning bezieht sich auf den Prozess des Weitertrainierens eines bereits trainierten Modells, um es spezifischen Anforderungen anzupassen. Was wir hier tun, ist das Optimieren der Modellparameter durch Konfigurationen in der Modelfile, um das Modellverhalten entsprechend unserer Bedürfnisse flexibel zu gestalten.

Wenn alle Modellparameter zur Modelfile hinzugefügt wurden, ist es an der Zeit, dass Sprachmodell unter Verwendung von create zu erstellen, wobei hier davon ausgegangen wird, dass sich die Datei Modelfile im aktuellen Arbeitsverzeichnis befindet:

% ollama create peter -f ./Modelfile

Nach der Ausführung des Befehls ollama list erscheint nun auch diese Modell:

% ollama list
NAME                    ID              SIZE      MODIFIED     
peter:latest            1b123e255d2b    7.5 GB    17 hours ago       
mistral:latest          6577803aa9a0    4.4 GB    20 hours ago    
qwen2.5-coder:latest    dae161e27b0e    4.7 GB    7 days ago      
gemma3:latest           a2af6cc3eb7f    3.3 GB    7 days ago

Unser Modell kann nun mit run ausgeführt werden:

% ollama run peter

Nach dem Namen gefragt, sollte dieses Sprachmodell nun die entsprechende Antwort liefern:

% ollama run peter
>>> Wie heißt Du?
Ich bin Peter, und ich bin spezialisiert auf europäische Geschichte.

Ihr könnt nun eine geschichtsbezogene Frage stellen, z.B. „Gib mir eine kurze Zusammenfassung zum Prager Frühling.“ Vielleicht erfüllt das Modell bereits eure Erwartungen und funktioniert wie gewünscht. Sollte dies nicht der Fall sein, könnt ihr in der Modelfile andere Einträge ausprobieren. Hinsichtlich der Modifizierung von Sprachmodellen gilt es experimentierfreudig zu sein. Manchmal wird man auf Anhieb mit dem Ergebnis zufrieden sein, manchmal wird man nachjustieren müssen. Falls euch ein Sprachmodell nicht zusagt, könnt ihr es mit rm löschen und einen neuen Versuch starten.

% ollama rm peter

Fazit

Ihr habt nun einen tieferen Einblick in die Verwendung von Ollama erhalten. Es gibt aber noch mehr zu erkunden, denn Ollama stellt eine Programmierschnittstelle bereit. Wie diese verwendet werden kann, wird Gegenstand der kommenden Artikel sein. Bis dahin viel Spaß mit dem Erkunden und Modifizieren von Sprachmodellen.

Zum Schluß noch ein Hinweis: Obwohl dieser Artikel speziell auf die Nutzung von Ollama auf macOS fokussiert ist, sind die grundlegenden Prinzipien und Schritte auch auf einem Windows-System ähnlich anwendbar. Die Befehle und Konfigurationen bleiben größtenteils gleich, sodass Nutzer mit Windows lediglich darauf achten müssen, systembedingte Unterschiede in der Terminal-Nutzung zu berücksichtigen. So ist es ganz einfach, die hier beschriebenen Funktionen und Anpassungen plattformübergreifend umzusetzen.