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
- der Erkennung von Formen oder Bildern
- lernen durch Erfahrung
- das Treffen von Entscheidungen, obwohl die Situation unbekannt ist
- “kreative” Generierung von Inhalten (Texte, Bilder, …)
…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:
- Textgenerierung: Erstellen von menschenähnlichem Text.
- Fragebeantwortung: Beantworten von Fragen basierend auf ihrem Wissen.
- Übersetzung: Übersetzen von Texten zwischen verschiedenen Sprachen.
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:
- Kunst und Design: Erstellen von digitalen Kunstwerken und Designmustern.
- Bildbearbeitung: Generierung realistischer Bilder basierend auf bestimmten Eingaben.
- Content Creation: Erstellung visueller Inhalte für verschiedene Medien.
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:
- Convolutional Neural Networks (CNNs): Weit verbreitet für Aufgaben wie Bilderkennung und Objektklassifizierung.
- Generative Adversarial Networks (GANs): Werden verwendet, um realistische Bilder zu generieren oder zu manipulieren.
- YOLO (You Only Look Once): Ein Echtzeit-Objekterkennungsalgorithmus, der in Anwendungen wie Überwachung und autonomem Fahren eingesetzt wird.
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:
- Speech recognition models: Erkennung von Sprache
- Speech synthesis models: Erzeugung von Sprache anhand von Stimmbeispielen
- Reinforcement Learning models: Beibringen von Fähigkeiten durch ausprobieren und scheitern, wie z.B. Roboter trainieren oder Go (komplexes Brettspiel)
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:
- Q3_K_S: Dies bezieht sich auf eine Quantisierung, bei der Parameter auf eine niedrigere Bit-Tiefe reduziert werden, in diesem Fall 3 Bits. Das “_K_S” steht für eine bestimmte Methode oder Schema der Quantisierung.
- Q4_K_S: Ähnlich wie Q3_K_S, aber hier werden die Parameter auf 4 Bits reduziert. Dies bietet eine höhere Präzision als Q3_K_S, benötigt aber auch etwas mehr Speicherplatz und Rechenleistung. Q4_K_M: Eine alternative Methode der Quantisierung, die ebenfalls 3 Bits pro Parameter verwendet, aber möglicherweise eine andere Technik oder einen anderen Algorithmus zur Quantisierung angewendet hat.
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:
AltersklasseID | Altersbereich | Altersklasse |
---|---|---|
1 | 0-17 | Kind |
2 | 18-34 | Jugendlich |
3 | 35-49 | Erwachsen |
4 | 50+ 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:
- Model averaging: Man nehme zwei Modelle mit derselben Architektur, extrahiert die Gewichte der beiden Modelle, berechnet den Durchschnitt und erstellt daraus ein neues Modell
- Ensembling: Beide Modelle werden unabhängig voneinander ausgeführt und die Vorhersagen durch Abstimmung, Mittelung, … kombiniert und anschließend in ein neues Modell überführt
- Layer-wise Ensembling: Hier werden verschiedene Schichten der Modelle kombiniert (z.B. 1,2,3 von A, 4,5,6 von B und so weiter)
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.