Große Sprachmodelle (auf Englisch Large Language Models oder kurz LLMs) wie ChatGPT oder Llama benötigen sehr leistungsstarke und teure Hardware, um richtig zu funktionieren. Diese Kosten werden vor allem relevant, wenn man als Unternehmen aufgrund von Sicherheits- und Datenschutzanforderungen LLMs auf den firmeneigenen Servern betreiben will/muss.
Um ein Sprachmodell mit der gleichen Qualität von ChatGPT innerhalb des eigenen Unternehmens zu betreiben, ist teure Hardware vonnöten.
Doch keine Angst, es gibt eine Optimierung: Mit Quantisierung kann man die Hardwareanforderungen von LLMs drastisch senken (bis zu 80%). In diesem Post erkläre ich dir, wie das funktioniert.
Quantisierung von LLMs einfach erklärt “Wie viel Uhr ist es?” Auf diese Frage würden vermutlich die wenigsten von uns mit “10:21, 18 Sekunden, 700 Millisekunden und 3 Nanosekunden” antworten, oder?
Die meisten würden sich vermutlich mit der Näherung “10:21 Uhr” zufriedengeben.
Was wir hier in unserem Alltag machen, ist in der einfachsten Form, das gleiche, was bei Quantisierung in KI-Modellen passiert: Wir lassen unnötige Informationen weg.
Doch wie ist es bei einer Stoppuhr? Wenn wir messen wollen, wie lange ein Läufer für 100 Meter braucht, dann wäre “0 Stunden und 0 Minuten” wohl zu ungenau. Für diesen Fall brauchen wir eine genauere Angabe. Meist werden hier die Sekunden und Millisekunden auch mit angegeben. “0 Stunden, 0 Minuten, 10 Sekunden, 300 Millisekunden”.
Es kommt also auf den Anwendungsfall an, wie genau man die Zeit misst. So ist es auch bei KI-Modellen. Die Anbieter trainieren ein KI-Modell erst einmal so genau wie möglich (analog zu unserem Beispiel: inklusive Sekunden, Millisekunden und Nanosekunden). Doch diese Genauigkeit hat einen Preis: Wir müssen sehr viele Informationen speichern und verarbeiten.
Wenn wir gar keine so präzisen Antworten brauchen, können wir hier optimieren.
Das heißt wir lassen genau so viele Informationen weg, dass unser Endergebnis kaum beeinflusst wird (weil wir die Uhrzeit nicht Millisekunden genau wissen müssen). So können wir jedoch massiv Ressourcen einsparen.
Einführung in die Quantisierung von LLMs Ähnlich zu unserem Uhrzeit-Beispiel aus der Einleitung ist Quantisierung bei LLMs eine Technik, die dazu verwendet wird, die Genauigkeit von KI-Modellen auf ein relevantes Maß zu reduzieren, indem die Genauigkeit der Parameter (hauptsächlich der Gewichte) verringert wird.
Statt beispielsweise 16-Stellige-Gleitkommazahlen zu verwenden, können die Gewichte auf 8 Stellen oder sogar 4-Stellige-Ganzzahlen reduziert werden, ohne wesentliche Einbußen (wie das gemessen wird, dazu gleich mehr im Abschnitt “Perplexität als Leistungsmaß”) in der Modellgenauigkeit.
Der Quantisierungsprozess sieht dann wie folgt aus:
1. Vorher haben wir die Gewichte innerhalb der Modelle (das, was am Ende die Intelligenz des Modells ausmacht) in voller Präzision. Diese hohe Genauigkeit kostet uns pro Gewicht 16 Stellen im Speicher
2. Wenn wir jetzt diese Gewichte auf weniger Stellen reduzieren, dann sparen wir somit Speicherplatz ein.
3. Jetzt kommt noch ein weiterer Trick hinzu: Komma-Zahlen sind für Computer deutlich schwieriger zu verarbeiten als Ganzzahlen (Zahlen ohne Komma). Also konvertieren wir die Gewichte auch noch in Ganzzahlen. (Indem wir alle Werte mit 10 multiplizieren) Die Gewichtung zwischen den Werten ist weiterhin genau gleich, wir haben sie jedoch jetzt in einem für den Computer optimalen Format und können damit nochmals Geschwindigkeitsgewinne erzielen.
Jetzt müssen wir uns noch ansehen, wie die Genauigkeit quantisierter Modelle bewertet werden kann. Denn es hilft natürlich nichts, wenn wir jetzt ein quantisiertes Modell haben, das nicht mehr zu unseren Anforderungen passt.
Perplexität als Leistungsmaß Die Perplexität ist ein Maß für die Unsicherheit eines Sprachmodells bei der Vorhersage des nächsten Wortes. Das funktioniert ganz einfach. Wie in unserem Artikel zu den Expertenparametern in ChatGPT erklärt, ist alles, was ein Sprachmodell macht, die Vorhersage des nächsten Wortes. Mit der Perplexität wird gemessen, wie gut das Model das nächste Wort vorhersagt. Soll zum Beispiel der Satz “Ein Apfel schmeckt süß” vorhergesagt werden, geben wir “Ein Apfel schmeckt” in das Sprachmodell und messen, mit welcher Wahrscheinlichkeit es das Wort “süß” vorhersagt. Das machen wir jetzt mit ganz vielen verschiedenen Sätzen und können daraus messen, wie oft ein (quantisiertes) Model daneben liegt. Daraus ergibt sich die Perplexität. (Für einen tieferen Einstieg in die Mathematik empfehlen wir diesen Artikel )
Ein niedriger Wert für Perplexität zeigt an, dass das Modell die Sprache erfasst hat und mit hoher Sicherheit das nächste Wort in einer Sequenz vorhersagen kann. Umgekehrt deutet ein hoher Wert auf größere Unsicherheit und Schwierigkeiten des Modells hin, was zu weniger präzisen bzw. relevanten Textgenerierungen führen kann.
Es ist immer wieder erstaunlich, wie gering die Perplexitätsunterschiede bei quantisierten Modellen im Vergleich zu den originalen Modellen sind.
Hier eine Tabelle welche die geringen Perplexitätsunterschiede verschiedene Quantisierungen des Models ‘Llama 3 8B’ zeigt.
Datenquelle Wie man sieht, sind die quantisierten Modelle erstaunlich nahe an der Qualität des originalen ”float16”-Modell. Man kann sagen, dass die int8 Modelle quasi genauso gut sind wie das Original. Nur bei den sehr stark quantisierten Modellen (int4 & int3) sollte man genauer testen, ob sie für den Einsatzzweck gut genug sind.
Funfact: Das hervorragende Ergebnis für int8 lässt vermuten, dass Meta schon beim Trainieren des Models mit einer "int8-Quantisierung" gearbeitet hat.
Warum nicht einfach direkt ein kleineres Modell benutzen? Stell dir die Parameter eines Modells (z.B. 13 Milliarden oder 30 Milliarden) als die Tiefe des Wissens vor. Je mehr Parameter, desto mehr Informationen hat das Modell ursprünglich gelernt und gespeichert. Modelle mit einer höheren Anzahl von Parametern besitzen ein tieferes Verständnis und können bessere, breitere und "kreativere" Verbindungen zwischen den gelernten Informationen herstellen. Ein kleineres Modell hat im Umkehrschluss also weniger Wissen zur Verfügung und ist schlechter darin, Fragen zu beantworten.
Quantisierung kannst du dir hingegen als eine Frage der Genauigkeit vorstellen, wie diese Informationen verbunden werden können. Ein stark quantisiertes Model weiß vielleicht noch viel, aber kann die Zusammenhänge nicht mehr herstellen.
Flapsig erklärt: Wenn du eine Rakete zum Mond bauen willst und du musst dich entscheiden zwischen einem Zweitsemester Studenten in Luft und Raumfahrt (kleines Modell) oder seiner erfahrenen, aber betrunkenen Professorin (quantisiertes großes Modell), was würdest du wählen?
Das ist die Abwägung: Kleines Modell, wenn wir weniger Wissen brauchen, aber innerhalb dieses Wissens starke Zusammenhänge verstehen müssen. Großes, quantisiertes Modell, wenn wir auf viel Wissen zugreifen wollen, aber ggf. die Zusammenhänge nicht ganz so wichtig sind (es also okay ist, dass die betrunkene Professorin, mal zwischendrin etwas wirr redet, solange sie am Ende auf die Lösung kommt). Für Chat-Anwendungen haben sich große, quantisierte Modelle als besser erwiesen.
Fazit Ein quantisiertes (günstigeres) Model ist für die meisten Anwendungsfälle die bessere Option, da es Server-Ressourcen und somit Kosten einspart.
Wie wir gesehen haben, liefern Quantisierte Modelle weiterhin sehr gute Ergebnisse.
Und wenn du nach einem Partner suchst, der dir ein (quantisiert oder nicht) LLM datenschutzkonform & kosteneffizient inhouse in deiner Firma hostet, dann melde dich gerne bei uns: [email protected]