Marcel Cremer
23. Juli 2024

Durchblick im KI-Dschungel - Ein Anfängerleitfaden zu KI-Modellen und Terminologie

Gepostet am 23. Juli 2024
10 Minuten  • 1992 Wörter  • Andere Sprachen:  English

Mittlerweile reden wirklich alle von künstlicher Intelligenz. Meistens wird damit aber nur ChatGPT oder entsprechende Wrapper um deren API gemeint. Wenn du dich dann das erste Mal selbst mit den vielen verschiedenen Modellen beschäftigst, bist du vermutlich genauso überfordert wie ich am Anfang. Aus diesem Grund möchte ich dir in diesem Artikel die wichtigsten Begriffe erklären, damit du durch den AI-Dschungel durchsteigst.

Was macht eigentlich künstliche Intelligenz aus?

Auch wenn man pauschal meistens nur “künstlicher Intelligenz” hört:

KI ist nicht gleich KI. Und ein Computer Algorithmus, der nur if-else Statements verbaut hat, ist keine “Artificial Intelligence” (AI). KI zeichnet sich immer dadurch aus, dass menschenähnliche Entscheidungen getroffen werden, wie zum Beispiel bei

…und so weiter. Damit das möglich wird, werden in den meisten Fällen neuronale Netzwerke (mehr oder weniger mathematische Modelle, die ähnlich wie menschliche Neuronen Zustände annehmen können) mit sehr vielen Daten gefüttert. Jedes Neuron kann dabei einen bestimmten Wert annehmen. Anfangs kann dieser Wert immer gleich sein, oder sogar zufällig gewählt werden. Dann werden sie mit Daten gefüttert, über mathematische Aktivierungsfunktionen (z.B. Sigmoid, ReLU, Tanh) Ergebnisse erzeugt und geprüft, ob diese mit dem erwarteten Ergebnis weitgehend übereinstimmen. Falls ja, bleibt der Wert wie er war, ansonsten wird er in Mini-Schritten in Richtung des Zielwertes verändert. Am Ende haben diese ganzen Neuronen bestimmte Dinge “gelernt” und man erhält ein Modell.

Arten von KI-Modellen

Da es verschiedene Anwendungszwecke von künstlicher Intelligenz gibt, gibt es natürlich auch verschiedene Modelle. Hier eine unvollständige Liste, um einen Eindruck von der Vielseitigkeit zu bekommen:

Large Language Models (LLMs)

Large Language Models (LLMs) wie GPT, Llama, Claude, MistralAI, WizardLM,… sind darauf spezialisiert, Aufgaben der natürlichen Sprache zu erledigen. Sie werden auf riesige, normalisierte Textmengen (z.B. Webseiten, Kurzgeschichten, …) in verschiedenen Formaten (Assistenten, Instruction, Chat,…) trainiert. Sie können zum Beispiel folgendes lösen:

LLMs sind vielseitig einsetzbar und werden häufig in Chatbots, Textanalysetools und Übersetzungsdiensten verwendet.

Bildgenerierung

Bildgenerierungsmodelle wie z.B. Stable Diffusion sind Modelle, die darauf trainiert sind, hochqualitative Bilder aus Rauschen zu erzeugen. Ihr Anwendungszweck ist zum Beispiel:

Sie funktionieren, indem man große Mengen an Bildern mit Tags (z.B. Katze, Hund, hübsch, hässlich, deformiert, …) zum Training eines Modells verwendet. Wenn man ein Modell hat, kann man bei der Bildgeneration einfach angeben, was man haben möchte (Eine Katze vor dem Empire State Building bei Nacht) und was man nicht möchte (defomiert, zu_viele_Gliedmaßen,…).

Computer Vision Modelle

Computer Vision Modelle sind darauf spezialisiert, visuelle Daten zu analysieren und zu interpretieren. Beispiele sind:

CNNs werden zum Beispiel auch in modernen OCR-Lösungen dazu verwendet, aus gescannten Bildern Texte zu machen oder Handschriften zu erkennen.

Weitere Arten von Modellen

Außer den genannten gibt es noch eine Vielzahl an weiteren Modellen. Beispiele dazu:

Spannend ist auch, dass man multi-purpose Modelle trainieren kann, die mehrere Aufgaben (zum Beispiel Texte generieren und Excel-Dateien interpretieren) wahrnehmen können.

Woher kriege ich solche Modelle?

Huggingface hat sich als De-facto-Standard für KI-Modelle etabliert Die Plattform bietet eine umfangreiche Bibliothek von vortrainierten Modellen, die leicht zugänglich und in einer Vielzahl von Anwendungen einsetzbar sind. Außerdem gibt es eine komfortable CLI zum Download solcher Modelle und einen VRAM Rechner um zu schauen, ob ein bestimmtes Modell noch in den Grafikkartenspeicher (VRAM) passt.

So viele Begriff, Hilfe!

Man will doch nur ein Modell ausprobieren, aber welches soll man nehmen? Das ist glaube ich die schwierigste Frage, an dem ganzen Thema. Neue Modelle schießen stündlich aus dem Boden, und wenn man nicht an mathematischen Benchmarks interessiert ist, hilft in vielen Fällen nur ausprobieren. Um überhaupt eine erste Auswahl zu treffen ist es jedoch sinnvoll, ein bisschen AI-Terminologie zu lernen:

7b, 12, 32b,…

Zahlen wie 7b oder 1.5T oder ähnliches geben an, mit wievielen Parametern ein Modell arbeitet. Ein Parameter enthält dabei Neuronen, Gewichtung und Biases, was hier aber zu weit führen würde. Für den Anfang kann man sich die Faustregel merken: Je mehr Parameter ein Modell hat, desto komplexere Aufgaben kann es lösen und desto mehr VRAM braucht es.

Kontextgrößen

Bei den meisten Modellen ist angegeben, mit welchen Kontextgrößen sie trainiert wurden (z.B. 2048, 4096). Dazu muss man wissen, dass KI nicht direkt mit Wörtern, Pixeln oder ähnlichem arbeitet, sondern mit sogenannten Token. Ein Token könnte zum Beispiel eine Silbe eines Wortes sein. Oder sogar nur ein Buchstabe. Oder eine 8er Gruppe von Pixeln in einem Bild. Alles was eine KI zur Erfüllung ihrer Aufgabe “weiß”, muss in diesen Kontext passen. Dazu gehört zum Beispiel ein Chatverlauf, Zusatzinformationen über den Nutzer oder ähnliches. Man kann es sich als Kurzzeitgedächtnis vorstellen. Was nicht in den Kontext passt, kennt die KI nicht. Größer ist besser, verbraucht aber mehr VRAM und erhöht die Rechendauer.

Quantisierung: Q3_K_S vs Q4_K_S

Wenn ein Modell Quantisiert ist, wurde die Anzahl der Bits, die zur Darstellung eines Parameters verwendet wurde reduziert. Dadurch kann die Effizienz und Geschwindigkeit eines Modells zum Teil deutlich verbessert werden, allerdings nimmt damit auch die Genauigkeit eines Modells ab.

Die Q… irgendwas Angaben sind also Angaben darüber, welche Quantisierung auf das Modell angewendet wurde. Als Beispiel:

In der Regel wird in der Modellbeschreibung angegeben, welche Quantisierung welche Auswirkung hat. In vielen Fällen wird auch beschrieben, wie das quantisierte Modell im Vergleich zum Ursprungsmodell abschneidet. Wenn du nicht sicher bist, womit du anfangen sollst, würde ich ein Q4_K_M Modell empfehlen und dann je nach gusto hoch oder runter arbeiten, bis dass es in den VRAM passt, oder die Ergebnisse gut genug für deinen Anwendungszweck sind.

GGUF (Generalized, Graph-based Universal Format)

GGUF ist ein Format zur Darstellung von Modellen und deren Strukturen. Es hat sich als defacto-standard zur Verwendung von vielen Arten von Modellen entwickelt. Es unterstützt eine breite Palette von Modellstrukturen und Datenformaten und macht es daher deutlich einfacher, ein Modell auszuprobieren, ohne dass man es selbst konvertieren oder Quantisieren muss. Falls möglich, würde ich der Einfachheit halber immer ein GGUF-Format für Modelle bevorzugen.

LoRa (Low-Rank Adaptation)

LoRa steht für Low-Rank Adaptation und ist eine Technik zur Anpassung vortrainierter Modelle. LoRa sind KEINE eigenständigen Modelle. Stattdessen erweitern sie vorhandene General Purpose Modelle um einen bestimmten Zweck. Das funktioniert, indem dem vortrainierten Generalmodell weitere Trainingsdaten “dazu” geschrieben werden.

Man kann sich das ein bisschen vorstellen, als hätte man eine Datenbanktabelle mit Usern und einem Alter. Wenn man jetzt auch noch Altersgruppen (z.B. 0-17,18-34 usw.) haben, aber die Ursprungstabelle nicht modifizieren möchte, könnte man eine zweite Tabelle hinzufügen, die Informationen zu den Altersklassen enthält:

AltersklasseIDAltersbereichAltersklasse
10-17Kind
218-34Jugendlich
335-49Erwachsen
450+ Senior

Dadurch kann man zusätzliche Informationen hinzufügen, ohne die Originaldaten anpassen zu müssen, was bei AI-Modellen sehr viel Rechen- und Trainingszeit spart. Die Usertabelle entspricht dabei dem General Purpose Modell, die Altersklassen-Tabelle dem LoRa-Modell. Dadurch sollte auch klar werden, warum LoRa-Modelle alleine nicht besonders sinnvoll sind.

Model Destillation

Manchmal liest man davon, dass es ein sich um “destilliertes” Modell handelt. Dabei handelt es sich um eine Methode, um “smarte” kleine Modelle zu trainieren. Man könnte zum Beispiel ein riesengroßes 260B Modell trainieren, dass äußert komplexe Sachverhalte sehr gut lösen kann. Nun geht man her, und trainiert ein deutlich kleineres Modell, zum Beispiel ein 13 B Modell statt mit den Ursprungsdaten (was eine deutlich schlechtere Anpassung der Parameter bedeuten würde) direkt mit den Ergebnissen des großen Modell. Man “destilliert” also das “Wissen” (ergo die Parameter), das sich das große Lehrer-Modell angeeignet hat, in ein deutlich kleineres Modell. Das funktioniert am besten, wenn man ein spezialisiertes Modell erschaffen will (z.B. das Lehrer-Modell weiß alles über Philosophie, Wissenschaft usw. und das Schüler-Modell lernt hauptsächlich etwas über Wissenschaft und verliert daher vielleicht philosophische Aspekte).

Model Merging

Beim Zusammenführen oder “Mergen” von Modellen handelt es sich um eine Technik, mit der verschiedene Modelle zusammengeführt werden. Dadurch werden die verschiedenen Stärken der Einzelmodelle miteinander (gebalanced) kombiniert.

Als Beispiel: Ich habe ein Modell, welches besonders gut in Physik ist. Ich habe ein anderes Modell, das ist besonders gut in Programmierung. Ich brauche ein Modell, dass mir physikalische Sachverhalte in simulierbaren Code übersetzt. Durch verschiedene Techniken können diese kombiniert werden:

Durch Model merging kann man sehr leistungsstarke Modelle erstellen, indem man die Schwächen von vorhandenen Modellen durch die Stärken anderer Modelle ausgleicht.

Gemergte Modelle erkennt man an Bezeichngen wie 4x8B, was bedeutet, dass hier ein neues Modell aus 4 (Anzahl) mal 8B Parameter Modellen erzeugt wurde. Wenn das merging gut gemacht wurde, kann man so ein 8B Modell erhalten, was in vielen Benchmarks generalisierten 32B Modellen ebenbürtig ist, oder diese sogar übertrifft.

Häufig wird bei den gemergten Modellen auch die Config angegeben, also welche Modelle mit welchen prompts und welchem Balancing gefragt wurden. Zum Beispiel:

base_model: Model 1
gate_mode: hidden
dtype: bfloat16
experts_per_token: 2
experts:
  - source_model: Model 1
    positive_prompts:
        - "chat"
        - "conversation"
  - source_model: Model 2
    positive_prompts:
        - "science"
        - "physics"
        - "chemistry"
  - source_model: Model 3
    positive_prompts:
        - "language translation"
        - "foreign language"
    negative_prompts:
        - "programming language"
  - source_model: Model 4
        - "Haskell programming language"
        - "SQL query language"
        - "CSS markup styling language"

Hier wurde also ein Basismodell (base_model) Model 1 mit Fähigkeiten für Konversationen genommen, und mit einem Wissenschafts-, einem Übersetzungs- und einem Programmier-Expertenmodell kombiniert. Für jeden Eingabewert wurden maximal 2 Expertenmodelle (experts_per_token) konsultiert, und daraus dann ein neuer Wert ermittelt. Dieses Verfahren nennt man auch MoE (Mixture of Experts). Mehr Informationen dazu findest du auch unter Mergekit .

Prompt-Format

Wie ich Eingangs beschrieben habe, werden die KI-Modelle mit normalisierten Daten trainiert. Damit du die besten Ergebnisse mit deinen Modellen bekommst, ist es sehr wichtig, das gleiche Eingabeformat zu nehmen, was auch beim Training der KI verwendet wurde. Zwar verstehen KIs auch andere Anfragen (die Erklärung führt hier zu weit), aber ihr nutzt das Modell deutlich effizienter, wenn ihr dessen Sprache sprecht (ähnlich wie bei Menschen, wenn jemand ungewohnt die Uhrzeit nennt, also “viertel 12” oder “viertel nach 11”). Vereinfacht: Wenn ihr die Frage einfach formuliert, geht weniger Leistung für deren Verständnis drauf.

Prompt Formate sind häufig durch sowas wie “chat”, “instruct”, “chat-instruct” oder “Alpaca”, “ChatML”, … angegeben. Sorge bitte einfach dafür, dass dein Client richtig konfiguriert ist (oder dein Script das korrekte Format nutzt).

Abschluss

Ich hoffe, diese Zusammenfassung hilft dir dabei, deutlich schneller als ich im Bereich AI fit zu werden. Natürlich sind das alles hier nur Basisinformationen, aber mit etwas Glück weißt du dadurch, was du nicht weißt und kannst dir das fehlende Wissen schnell anlesen.

Follow me

Ich arbeite an der Saas-Plattform MOBIKO, baue Teams auf und gebe manchmal Talks.