Künstliche Intelligenz
Verständnis von Parametern und Speicheranforderungen großer Sprachmodelle: Ein tiefer Einblick
Große Sprachmodelle (LLMs) haben in den letzten Jahren bemerkenswerte Fortschritte gemacht. Modelle wie GPT-4, Google’s Gemini und Claude 3 setzen neue Standards in Bezug auf Fähigkeiten und Anwendungen. Diese Modelle verbessern nicht nur die Textgenerierung und -übersetzung, sondern erobern auch neue Gebiete in der multimodalen Verarbeitung, indem sie Text-, Bild-, Audio- und Videoeingaben kombinieren, um umfassendere KI-Lösungen bereitzustellen.
Zum Beispiel hat OpenAI’s GPT-4 wesentliche Verbesserungen bei der Verständnis und Generierung von menschenähnlichem Text gezeigt, während Google’s Gemini-Modelle sich hervorragend bei der Verarbeitung verschiedener Datentypen wie Text, Bildern und Audio bewähren, was zu noch nahtloseren und kontextuell relevanteren Interaktionen führt. Ebenso sind Anthropics Claude-3-Modelle für ihre mehrsprachigen Fähigkeiten und ihre verbesserte Leistung bei KI-Aufgaben bekannt.
Da die Entwicklung von LLMs weiter beschleunigt wird, wird das Verständnis der Feinheiten dieser Modelle, insbesondere ihrer Parameter und Speicheranforderungen, von entscheidender Bedeutung. Diese Anleitung zielt darauf ab, diese Aspekte zu entmystifizieren und eine detaillierte, leicht verständliche Erklärung anzubieten.
Die Grundlagen großer Sprachmodelle
Was sind große Sprachmodelle?
Große Sprachmodelle sind neuronale Netze, die auf riesigen Datensätzen trainiert werden, um die menschliche Sprache zu verstehen und zu generieren. Sie basieren auf Architekturen wie den Transformern, die Mechanismen wie die Selbstaufmerksamkeit verwenden, um Text zu verarbeiten und zu produzieren.
Bedeutung von Parametern in LLMs
Parameter sind die Kernkomponenten dieser Modelle. Dazu gehören Gewichte und Verzerrungen, die das Modell während des Trainings anpasst, um Fehler in den Vorhersagen zu minimieren. Die Anzahl der Parameter korreliert oft mit der Kapazität und Leistung des Modells, beeinflusst aber auch die Rechen- und Speicheranforderungen.
Verständnis der Transformer-Architektur
Überblick
Die Transformer-Architektur, die im Paper “Attention Is All You Need” von Vaswani et al. (2017) vorgestellt wurde, ist die Grundlage für viele LLMs. Sie besteht aus einem Encoder und einem Decoder, die jeweils aus mehreren identischen Schichten bestehen.
Encoder- und Decoder-Komponenten
- Encoder: Verarbeitet die Eingabesequenz und erstellt eine kontextbewusste Darstellung.
- Decoder: Generiert die Ausgabesequenz unter Verwendung der Darstellung des Encoders und der zuvor generierten Token.
Schlüsselbausteine
- Mehrkopf-Aufmerksamkeit: Ermöglicht es dem Modell, sich gleichzeitig auf verschiedene Teile der Eingabesequenz zu konzentrieren.
- Feed-Forward-Neuronale Netze: Fügen Nichtlinearität und Komplexität zum Modell hinzu.
- Schichtnormalisierung: Stabilisiert und beschleunigt das Training, indem Zwischenergebnisse normalisiert werden.
Berechnung der Anzahl der Parameter
Berechnung von Parametern in Transformer-basierten LLMs
Lassen Sie uns die Parameterberechnung für jede Komponente eines Transformer-basierten LLMs aufschlüsseln. Wir verwenden die Notation aus dem ursprünglichen Paper, in der d_model die Dimension der versteckten Zustände des Modells darstellt.
- Einbettungsschicht:
- Parameter =
vocab_size*d_model
- Parameter =
- Mehrkopf-Aufmerksamkeit:
- Für
hKöpfe, mitd_k = d_v = d_model / h: - Parameter = 4 *
d_model^2 (für Q, K, V und Ausgabeprojektionen)
- Für
- Feed-Forward-Netzwerk:
- Parameter = 2 *
d_model*d_ff+d_model+d_ff - Wobei
d_fftypischerweise 4 *d_modelist
- Parameter = 2 *
- Schichtnormalisierung:
- Parameter = 2 *
d_model(für Skalierung und Verzerrung)
- Parameter = 2 *
Gesamtparameter für eine Transformer-Schicht:
Parameter_layer=Parameter_attention+Parameter_ffn+ 2 *Parameter_layernorm
Für ein Modell mit N Schichten:
- Gesamtparameter =
N*Parameter_layer+Parameter_embedding+Parameter_output
Beispielberechnung
Lassen Sie uns ein Modell mit den folgenden Spezifikationen betrachten:
d_model= 768h(Anzahl der Aufmerksamkeitsköpfe) = 12N(Anzahl der Schichten) = 12vocab_size= 50.000
- Einbettungsschicht:
- 50.000 * 768 = 38.400.000
- Mehrkopf-Aufmerksamkeit:
- 4 * 768^2 = 2.359.296
- Feed-Forward-Netzwerk:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4.719.616
- Schichtnormalisierung:
- 2 * 768 = 1.536
Gesamtparameter pro Schicht:
- 2.359.296 + 4.719.616 + (2 * 1.536) = 7.081.984
Gesamtparameter für 12 Schichten:
- 12 * 7.081.984 = 84.983.808
Gesamtparameter des Modells:
- 84.983.808 + 38.400.000 = 123.383.808
Dieses Modell hätte ungefähr 123 Millionen Parameter.
Arten von Speicherbedarf
Wenn wir mit LLMs arbeiten, müssen wir zwei Haupttypen von Speicherbedarf berücksichtigen:
- Modell-Speicher: Der Speicher, der zum Speichern der Modellparameter erforderlich ist.
- Arbeitsspeicher: Der Speicher, der während der Inferenz oder des Trainings erforderlich ist, um Zwischenergebnisse, Gradienten und Optimiererzustände zu speichern.
Berechnung des Modell-Speichers
Der Modell-Speicher ist direkt mit der Anzahl der Parameter verbunden. Jeder Parameter wird typischerweise als 32-Bit-Gleitkommazahl gespeichert, obwohl einige Modelle gemischte Präzisions-Training mit 16-Bit-Gleitkommazahlen verwenden.
Modell-Speicher (Bytes) = Anzahl der Parameter * Bytes pro Parameter
Für unser Beispielmodell mit 123 Millionen Parametern:
- Modell-Speicher (32-Bit) = 123.383.808 * 4 Bytes = 493.535.232 Bytes ≈ 494 MB
- Modell-Speicher (16-Bit) = 123.383.808 * 2 Bytes = 246.767.616 Bytes ≈ 247 MB
Schätzung des Arbeitsspeichers
Die Anforderungen an den Arbeitsspeicher können je nach spezifischer Aufgabe, Batch-Größe und Sequenzlänge stark variieren. Eine grobe Schätzung für den Arbeitsspeicher während der Inferenz ist:
Arbeitsspeicher ≈ 2 * Modell-Speicher
Dies berücksichtigt die Speicherung sowohl der Modellparameter als auch der Zwischenergebnisse. Während des Trainings können die Speicheranforderungen noch höher sein, da Gradienten und Optimiererzustände gespeichert werden müssen:
Trainings-Speicher ≈ 4 * Modell-Speicher
Für unser Beispielmodell:
- Inferenz-Arbeitsspeicher ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Trainings-Speicher ≈ 4 * 494 MB = 1.976 MB ≈ 2 GB
Steady-State-Speicherbedarf und Peak-Speicherbedarf
Wenn wir große Sprachmodelle auf der Grundlage der Transformer-Architektur trainieren, ist das Verständnis des Speicherbedarfs für eine effiziente Ressourcenzuweisung von entscheidender Bedeutung. Lassen Sie uns den Speicherbedarf in zwei Hauptkategorien aufteilen: Steady-State-Speicherbedarf und Peak-Speicherbedarf.
Steady-State-Speicherbedarf
Der Steady-State-Speicherbedarf umfasst die folgenden Komponenten:
- Modellgewichte: FP32-Kopien der Modellparameter, die 4N Bytes erfordern, wobei N die Anzahl der Parameter ist.
- Optimiererzustände: Für den Adam-Optimierer erfordert dies 8N Bytes (2 Zustände pro Parameter).
- Gradienten: FP32-Kopien der Gradienten, die 4N Bytes erfordern.
- Eingabedaten: Unter der Annahme von int64-Eingaben erfordert dies 8BD Bytes, wobei B die Batch-Größe und D die Eingabedimension ist.
Der gesamte Steady-State-Speicherbedarf kann wie folgt approximiert werden:
- M_steady = 16N + 8BD Bytes
Peak-Speicherbedarf
Der Peak-Speicherbedarf tritt während des Backward-Passes auf, wenn Aktivierungen für die Gradientenberechnung gespeichert werden. Die Hauptbeiträge zum Peak-Speicher sind:
- Schichtnormalisierung: Erfordert 4E Bytes pro Schichtnormalisierung, wobei E = BSH (B: Batch-Größe, S: Sequenzlänge, H: versteckte Größe).
- Aufmerksamkeitsblock:
- QKV-Berechnung: 2E Bytes
- Aufmerksamkeitsmatrix: 4BSS Bytes (S: Sequenzlänge)
- Aufmerksamkeitsausgabe: 2E Bytes
- Feed-Forward-Block:
- Erste lineare Schicht: 2E Bytes
- GELU-Aktivierung: 8E Bytes
- Zweite lineare Schicht: 2E Bytes
- Cross-Entropy-Verlust:
- Logits: 6BSV Bytes (V: Vokabulargröße)
Der gesamte Aktivierungsspeicher kann wie folgt geschätzt werden:
- M_act = L * (14E + 4BSS) + 6BSV Bytes
Wobei L die Anzahl der Transformer-Schichten ist.
Gesamter Peak-Speicherbedarf
Der Peak-Speicherbedarf während des Trainings kann wie folgt approximiert werden:
- M_peak = M_steady + M_act + 4BSV Bytes
Der zusätzliche 4BSV-Term berücksichtigt eine zusätzliche Zuweisung am Anfang des Backward-Passes.
Indem wir diese Komponenten verstehen, können wir den Speicherbedarf während des Trainings und der Inferenz optimieren und so eine effiziente Ressourcenzuweisung und eine verbesserte Leistung großer Sprachmodelle gewährleisten.
Skalierungsgesetze und Effizienzüberlegungen
Skalierungsgesetze für LLMs
Forschungen haben gezeigt, dass die Leistung von LLMs bestimmten Skalierungsgesetzen folgt, wenn die Anzahl der Parameter zunimmt. Kaplan et al. (2020) beobachteten, dass die Modellleistung als Potenzgesetz der Anzahl der Parameter, des Rechenbudgets und der Datensatzgröße verbessert wird.
Die Beziehung zwischen Modellleistung und Anzahl der Parameter kann wie folgt approximiert werden:
Leistung ∝ N^α
Wobei N die Anzahl der Parameter und α ein Skalierungsexponent ist, der für Sprachmodellierungsaufgaben typischerweise etwa 0,07 beträgt.
Dies impliziert, dass für eine 10-prozentige Leistungsverbesserung die Anzahl der Parameter um einen Faktor von 10^(1/α) ≈ 3,7 erhöht werden muss.
Effizienztechniken
Da LLMs weiter wachsen, haben Forscher und Praktiker verschiedene Techniken entwickelt, um die Effizienz zu verbessern:
a) Mixed Precision Training: Verwendung von 16-Bit- oder sogar 8-Bit-Gleitkommazahlen für bestimmte Operationen, um den Speicherbedarf und die Rechenanforderungen zu reduzieren.
b) Modell-Parallelismus: Verteilung des Modells auf mehrere GPUs oder TPUs, um größere Modelle zu verarbeiten, als auf einem einzelnen Gerät untergebracht werden können.
c) Gradienten-Checkpointing: Austausch von Rechenleistung gegen Speicher, indem bestimmte Aktivierungen während des Backward-Passes neu berechnet werden, anstatt sie zu speichern.
d) Beschnitt und Quantisierung: Entfernen weniger wichtiger Gewichte oder Reduzieren ihrer Präzision nach dem Training, um kleinere, effizientere Modelle zu erstellen.
e) Destillation: Trainieren kleinerer Modelle, um das Verhalten größerer Modelle nachzuahmen, wodurch möglicherweise viel von der Leistung mit weniger Parametern erhalten bleibt.
Praktisches Beispiel und Berechnungen
GPT-3, eines der größten Sprachmodelle, hat 175 Milliarden Parameter. Es verwendet den Decoder-Teil der Transformer-Architektur. Um seine Größe zu verstehen, lassen Sie uns die Parameterzahl mit hypothetischen Werten aufschlüsseln:
d_model = 12288d_ff = 4 * 12288 = 49152- Anzahl der Schichten = 96
Für eine Decoder-Schicht:
Gesamtparameter = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1,1 Milliarden
Gesamtparameter für 96 Schichten:
1,1 Milliarden * 96 = 105,6 Milliarden
Die restlichen Parameter stammen von Einbettungen und anderen Komponenten.
Abschluss
Das Verständnis der Parameter und Speicheranforderungen großer Sprachmodelle ist von entscheidender Bedeutung, um diese leistungsstarken Werkzeuge effektiv zu entwerfen, zu trainieren und zu bereitstellen. Durch die Aufschlüsselung der Komponenten der Transformer-Architektur und die Untersuchung praktischer Beispiele wie GPT gewinnen wir tiefere Einblicke in die Komplexität und Größe dieser Modelle.
Um die neuesten Fortschritte in großen Sprachmodellen und ihren Anwendungen besser zu verstehen, lesen Sie diese umfassenden Anleitungen:
- Entdecken Sie die umfassende Anleitung zu Gemma 2: Googles neues offenes großes Sprachmodell für Einblicke in seine verbesserte Leistung und innovative Funktionen.
- Erfahren Sie mehr über den Aufbau von LLM-Agents für RAG von Grund auf und darüber hinaus: Eine umfassende Anleitung, die die Herausforderungen und Lösungen bei der retrieval-augmentierten Generierung diskutiert.
- Entdecken Sie die Feinheiten des Einrichtens des Trainings, Feinabstimmens und Rückschlusses von LLMs mit NVIDIA-GPUs und CUDA für die Optimierung von KI-Systemen.














