KI-Parameter optimieren

Ollama Parameter-Guide

KI-Parameter optimieren
Photo by Paul Lequay / Unsplash

In diesem Artikel werden die wichtigsten Parameter von Ollama, einem Tool für die lokale Ausführung von Large Language Models (LLMs), analysiert und deren praktische Anwendung erläutert. Dabei werden universelle Konzepte zur Konfiguration von LLMs beschrieben, die auch auf andere Tools übertragbar sind. Ziel ist es, ein besseres Verständnis für die Parameter zu vermitteln und ihren Einfluss auf das Verhalten und die Ausgabe der Modelle aufzuzeigen.

Temperatur (Temperature)

Der Parameter "Temperature" beeinflusst die Kreativität und Vorhersagbarkeit des Modells. Ein LLM wählt bei der Generierung von Texten das wahrscheinlichste nächste Wort (eigentlich Token) aus einer Liste möglicher Kandidaten aus. Diese Kandidaten haben jeweils eine Wahrscheinlichkeit, die angibt, wie gut sie als nächstes Token passen. Diese Wahrscheinlichkeiten werden intern als "Logits" bezeichnet, die normalerweise zwischen -10 und 10 liegen. Die Logits werden mithilfe der Softmax-Funktion in Wahrscheinlichkeiten zwischen 0 und 1 umgewandelt.

Die Temperatur skaliert die Logits, bevor sie in Wahrscheinlichkeiten umgewandelt werden. Eine niedrigere Temperatur (unter 1) verstärkt die Unterschiede zwischen den Logits, wodurch die wahrscheinlichsten Token noch wahrscheinlicher werden und das Modell konservativer und vorhersehbarer antwortet. Eine höhere Temperatur (über 1) verringert die Unterschiede, sodass unwahrscheinlichere Token eine höhere Chance haben, ausgewählt zu werden. Dies führt zu kreativeren und vielfältigeren, aber möglicherweise auch weniger kohärenten Antworten.

Beispiel:
# In der Modelldatei
PARAMETER temperature 0.5

Kontextgröße (num_ctx)

Der Parameter "num_ctx" bestimmt die Kontextgröße des Modells, also die Anzahl der Token, die das Modell bei der Generierung von Text berücksichtigen kann. Viele Modelle werden mit einer großen Kontextgröße beworben (z. B. 128k, 8k), aber in Ollama ist die Standard-Kontextgröße auf 2048 Token begrenzt. Dies liegt daran, dass eine größere Kontextgröße mehr Speicher benötigt. Um die Kontextgröße zu ändern, muss man ein neues Modell erstellen, das auf dem Basismodell basiert, und die gewünschte Kontextgröße angeben.

Beispiel:

Erstellen einer neuen Modelldatei "Modelfile" mit folgendem Inhalt, um die Kontextgröße von Llama 3.1 auf 131072 (128k) zu setzen:

FROM llama3:7b-instruct-fp16-q4_0

PARAMETER num_ctx 131072

Dann kann man mit dem folgenden Befehl ein neues Modell mit der erweiterten Kontextgröße erstellen:

ollama create my_bigger_llama3 -f Modelfile

Um die maximale Kontextgröße eines Modells herauszufinden, kann man den Befehl ollama show <Modellname> verwenden.

ollama show llama3:7b-instruct-fp16-q4_0

Wiederholungsparameter (repeat_penalty, repeat_last_n)

Die Parameter "repeat_penalty" und "repeat_last_n" steuern die Wiederholung von Wörtern oder Phrasen im generierten Text. "repeat_penalty" reduziert die Wahrscheinlichkeit von Token, die kürzlich verwendet wurden. "repeat_last_n" definiert das Fenster, innerhalb dessen nach Wiederholungen gesucht wird.

Beispiel:
# In der Modelldatei
PARAMETER repeat_penalty 1.2
PARAMETER repeat_last_n 128

Top-K und Top-P (top_k, top_p)

"top_k" und "top_p" steuern die Auswahl der nächsten Token. "top_k" beschränkt die Auswahl auf die k wahrscheinlichsten Token. "top_p" wählt die wahrscheinlichsten Token aus, bis ihre kumulierte Wahrscheinlichkeit den Wert von "top_p" erreicht.

Beispiel:
# In der Modelldatei
PARAMETER top_k 50
PARAMETER top_p 0.9

Min P (min_p)

"min_p" ist eine Alternative zu "top_p". Es legt fest, dass alle ausgewählten Token eine Logit-Wert haben müssen, der größer ist als ein bestimmter Prozentsatz des größten Logit-Werts in der Liste.

Beispiel:
# In der Modelldatei
PARAMETER min_p 0.1

Tail-Free Sampling (tfs)

Tail-Free Sampling (tfs) schneidet den "Schwanz" der Wahrscheinlichkeitsverteilung ab, um unwahrscheinliche Token auszuschließen. Ein Wert nahe 1 schneidet wenig ab, während niedrigere Werte mehr abschneiden.

Beispiel:
# In der Modelldatei
PARAMETER tfs 0.95

Seed

Der Parameter "seed" setzt den Startwert für den Zufallszahlengenerator des Modells. Dies ermöglicht es, die Ausgabe des Modells reproduzierbar zu machen, was für Tests oder konsistente Ergebnisse nützlich ist.

Beispiel:
# In der Modelldatei
PARAMETER seed 42

Mirostat Parameter (mirostat, mirostat_tau, mirostat_eta)

Die Mirostat-Parameter steuern eine alternative Methode zur Auswahl der nächsten Token. Mirostat zielt darauf ab, eine Balance zwischen Kohärenz und Diversität im generierten Text zu finden. "mirostat_tau" kontrolliert die gewünschte Perplexität, während "mirostat_eta" die Lernrate steuert.

Beispiel:
# In der Modelldatei
PARAMETER mirostat 2
PARAMETER mirostat_tau 4.0
PARAMETER mirostat_eta 0.2

Anzahl der vorherzusagenden Token (num_predict)

Der Parameter "num_predict" legt die maximale Anzahl der Token fest, die das Modell generieren soll. Ein Wert von -1 erlaubt unbegrenzte Generierung, während -2 das Modell bis zum Ende des Kontexts generieren lässt.

Beispiel:
# In der Modelldatei
PARAMETER num_predict 256

Fazit

Die hier beschriebenen Parameter bieten umfangreiche Möglichkeiten, das Verhalten und die Ausgabe von LLMs wie Ollama zu steuern. Durch die Anpassung dieser Parameter kann man die Modelle an spezifische Aufgaben und Anforderungen anpassen. Ein tiefes Verständnis dieser Parameter ermöglicht es, die Stärken von LLMs optimal zu nutzen und qualitativ hochwertige Ergebnisse zu erzielen.