Künstliche Intelligenz
Parameter und Speicheranforderungen großer Sprachmodelle verstehen: Ein tiefer Einblick
Veröffentlicht
Vor 6 Tagenon
Inhaltsverzeichnis
Large Language Models (LLMs) hat in den letzten Jahren bemerkenswerte Fortschritte gemacht. Modelle wie GPT-4, Googles Gemini und Claude 3 setzen neue Maßstäbe in Bezug auf Fähigkeiten und Anwendungen. Diese Modelle verbessern nicht nur die Textgenerierung und Übersetzung, sondern beschreiten auch neue Wege in der multimodalen Verarbeitung, indem sie Text-, Bild-, Audio- und Videoeingaben kombinieren, um umfassendere KI-Lösungen bereitzustellen.
So hat beispielsweise GPT-4 von OpenAI deutliche Verbesserungen beim Verstehen und Generieren von menschenähnlichem Text gezeigt, während die Gemini-Modelle von Google sich durch die Verarbeitung unterschiedlicher Datentypen wie Text, Bilder und Audio auszeichnen und so nahtlosere und kontextrelevantere Interaktionen ermöglichen. Ebenso sind die Claude 3-Modelle von Anthropic für ihre Mehrsprachigkeit und verbesserte Leistung bei KI-Aufgaben bekannt.
Da die Entwicklung von LLMs immer schneller voranschreitet, ist es von entscheidender Bedeutung, die Feinheiten dieser Modelle, insbesondere ihre Parameter und Speicheranforderungen, zu verstehen. Dieser Leitfaden soll diese Aspekte entmystifizieren und bietet eine detaillierte und leicht verständliche Erklärung.
Die Grundlagen großer Sprachmodelle
Was sind große Sprachmodelle?
Große Sprachmodelle sind neuronale Netzwerke, die anhand riesiger Datensätze trainiert werden, um menschliche Sprache zu verstehen und zu generieren. Sie basieren auf Architekturen wie Transformers, die Mechanismen wie Selbstaufmerksamkeit verwenden, um Text zu verarbeiten und zu produzieren.
Bedeutung von Parametern im LLM
Parameter sind die Kernkomponenten dieser Modelle. Dazu gehören Gewichte und Bias, die das Modell während des Trainings anpasst, um Fehler in Vorhersagen zu minimieren. Die Anzahl der Parameter korreliert oft mit der Kapazität und Leistung des Modells, beeinflusst aber auch dessen Rechenleistungs- und Speicherbedarf.
Transformatorarchitektur verstehen
Übersicht
Die Transformer-Architektur, die im Artikel „Attention Is All You Need“ von Vaswani et al. (2017) vorgestellt wurde, ist zur Grundlage vieler LLMs geworden. 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 kontextbezogene Darstellung.
- Decoder: Generiert die Ausgabesequenz unter Verwendung der Darstellung des Encoders und der zuvor generierten Token.
Wichtige Bausteine
- Mehrköpfige Aufmerksamkeit: Ermöglicht dem Modell, sich gleichzeitig auf verschiedene Teile der Eingabesequenz zu konzentrieren.
- Feedforward-Neuronale Netze: Fügt dem Modell Nichtlinearität und Komplexität hinzu.
- Layer-Normalisierung: Stabilisiert und beschleunigt das Training durch Normalisierung der Zwischenergebnisse.
Berechnen der Anzahl der Parameter
Berechnen von Parametern in Transformer-basierten LLMs
Lassen Sie uns die Parameterberechnung für jede Komponente eines Transformer-basierten LLM aufschlüsseln. Wir verwenden die Notation aus dem Originalpapier, wobei d_model
stellt die Dimension der verborgenen Zustände des Modells dar.
- Einbettungsschicht:
- Parameter =
vocab_size
*d_model
- Parameter =
- Mehrköpfige Aufmerksamkeit:
- für
h
Kö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
- Wo
d_ff
beträgt typischerweise 4 *d_model
- Parameter = 2 *
- Layer-Normalisierung:
- Parameter = 2 *
d_model
(für Maßstab und Tendenz)
- Parameter = 2 *
Gesamtparameter für eine Transformatorschicht:
Parameters_layer
=Parameters_attention
+Parameters_ffn
+ 2 *Parameters_layernorm
Für ein Modell mit N
Schichten:
- Gesamtparameter =
N
*Parameters_layer
+Parameters_embedding
+Parameters_output
Beispielrechnung
Betrachten wir ein Modell mit den folgenden Spezifikationen:
d_model
= 768h
(Anzahl der Aufmerksamkeitsköpfe) = 12N
(Anzahl der Schichten) = 12vocab_size
= 50,000
- Einbettungsschicht:
- 50,000 * 768 = 38,400,000
- Mehrköpfige Aufmerksamkeit:
- 4 * 768^2 = 2,359,296
- Feed-Forward-Netzwerk:
- 2 * 768 * (4 * 768) + 768 + (4 * 768) = 4,719,616
- Layer-Normalisierung:
- 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
Gesamtmodellparameter:
- 84,983,808 + 38,400,000 = 123,383,808
Dieses Modell hätte ungefähr 123 Millionen Parameter.
Arten der Speichernutzung
Bei der Arbeit mit LLMs müssen wir zwei Haupttypen der Speichernutzung berücksichtigen:
- Modellspeicher: Der zum Speichern der Modellparameter erforderliche Speicher.
- Arbeitsspeicher: Der Speicher, der während der Inferenz oder des Trainings zum Speichern von Zwischenaktivierungen, Gradienten und Optimiererzuständen benötigt wird.
Berechnen des Modellspeichers
Der Modellspeicher hängt direkt von der Anzahl der Parameter ab. Jeder Parameter wird normalerweise als 32-Bit-Gleitkommazahl gespeichert, obwohl einige Modelle ein Training mit gemischter Genauigkeit und 16-Bit-Gleitkommazahlen verwenden.
Modellspeicher (Bytes) = Anzahl der Parameter * Bytes pro Parameter
Für unser Beispielmodell mit 123 Millionen Parametern:
- Modellspeicher (32-Bit) = 123,383,808 * 4 Bytes = 493,535,232 Bytes ≈ 494 MB
- Modellspeicher (16-Bit) = 123,383,808 * 2 Bytes = 246,767,616 Bytes ≈ 247 MB
Schätzung des Arbeitsgedächtnisses
Der Arbeitsspeicherbedarf kann je nach Aufgabe, Batchgröße und Sequenzlänge erheblich variieren. Eine grobe Schätzung für den Arbeitsspeicher während der Inferenz lautet:
Arbeitsspeicher ≈ 2 * Modellspeicher
Dies berücksichtigt die Speicherung sowohl der Modellparameter als auch der Zwischenaktivierungen. Während des Trainings kann der Speicherbedarf aufgrund der Notwendigkeit, Gradienten und Optimiererzustände zu speichern, sogar noch höher sein:
Trainingsspeicher ≈ 4 * Modellspeicher
Für unser Beispielmodell:
- Inferenz Arbeitsspeicher ≈ 2 * 494 MB = 988 MB ≈ 1 GB
- Trainingsspeicher ≈ 4 * 494 MB = 1,976 MB ≈ 2 GB
Stationäre Speichernutzung und maximale Speichernutzung
Beim Trainieren großer Sprachmodelle auf Basis der Transformer-Architektur ist das Verständnis der Speichernutzung für eine effiziente Ressourcenzuweisung von entscheidender Bedeutung. Lassen Sie uns den Speicherbedarf in zwei Hauptkategorien unterteilen: Dauerhafte Speichernutzung und Spitzenspeichernutzung.
Steady-State-Speichernutzung
Die stationäre Speichernutzung 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 sind hierfür 8N Bytes erforderlich (2 Zustände pro Parameter).
- Farbverläufe: FP32-Kopien der Gradienten, die 4N Bytes erfordern.
- Eingabedaten: Bei angenommenen int64-Eingaben sind hierfür 8BD Bytes erforderlich, wobei B die Batchgröße und D die Eingabedimension ist.
Die gesamte stationäre Speichernutzung kann wie folgt geschätzt werden:
- M_steady = 16N + 8BD Bytes
Spitzenspeicherverbrauch
Die höchste Speicherauslastung tritt während des Rückwärtsdurchlaufs auf, wenn Aktivierungen für die Gradientenberechnung gespeichert werden. Die Hauptursachen für die höchste Speicherauslastung sind:
- Layer-Normalisierung: Erfordert 4E Bytes pro Layer-Norm, wobei E = BSH (B: Batchgröße, S: Sequenzlänge, H: versteckte Größe).
- Achtungsblock:
- QKV-Berechnung: 2E Bytes
- Aufmerksamkeitsmatrix: 4BSS Bytes (S: Sequenzlänge)
- Achtung Ausgabe: 2E Bytes
- Feedforward-Block:
- Erste lineare Schicht: 2E Bytes
- GELU-Aktivierung: 8E Bytes
- Zweite lineare Schicht: 2E Bytes
- Cross-Entropy-Verlust:
- Logits: 6 BSV Bytes (V: Vokabulargröße)
Das gesamte Aktivierungsgedächtnis kann wie folgt geschätzt werden:
- M_act = L * (14E + 4BSS) + 6BSV Bytes
Wobei L die Anzahl der Transformatorschichten ist.
Gesamte maximale Speichernutzung
Die maximale Speichernutzung während des Trainings kann durch die Kombination des Steady-State-Speichers und des Aktivierungsspeichers angenähert werden:
- M_peak = M_steady + M_act + 4BSV Bytes
Der zusätzliche 4BSV-Term berücksichtigt eine zusätzliche Zuweisung zu Beginn des Rückwärtsdurchlaufs.
Durch das Verständnis dieser Komponenten können wir die Speichernutzung während des Trainings und der Inferenz optimieren und so eine effiziente Ressourcenzuweisung und eine verbesserte Leistung großer Sprachmodelle sicherstellen.
Skalierungsgesetze und Effizienzüberlegungen
Skalierungsgesetze für LLMs
Untersuchungen haben gezeigt, dass die Leistung von LLMs mit zunehmender Anzahl der Parameter bestimmten Skalierungsgesetzen folgt. Kaplan et al. (2020) stellten fest, dass sich die Modellleistung als Potenzgesetz der Anzahl der Parameter, des Rechenbudgets und der Datensatzgröße verbessert.
Die Beziehung zwischen Modellleistung und Parameteranzahl kann wie folgt angenähert werden:
Leistung ∝ N^α
Dabei ist N die Anzahl der Parameter und α ein Skalierungsexponent, der für Sprachmodellierungsaufgaben typischerweise bei etwa 0.07 liegt.
Dies bedeutet, dass wir die Anzahl der Parameter um den Faktor 10^(10/α) ≈ 1 erhöhen müssen, um eine Leistungssteigerung von 3.7 % zu erreichen.
Effizienztechniken
Da die Zahl der LLMs weiter zunimmt, haben Forscher und Praktiker verschiedene Techniken zur Verbesserung der Effizienz entwickelt:
a) Gemischtes Präzisionstraining: Verwenden Sie für bestimmte Vorgänge 16-Bit- oder sogar 8-Bit-Gleitkommazahlen, um den Speicherverbrauch und den Rechenaufwand zu reduzieren.
b) Modellparallelität: Verteilen Sie das Modell auf mehrere GPUs oder TPUs, um größere Modelle zu verarbeiten, als auf ein einzelnes Gerät passen.
c) Gradienten-Checkpointing: Berechnung gegen Speicher eintauschen, indem bestimmte Aktivierungen während des Rückwärtsdurchlaufs neu berechnet werden, anstatt sie zu speichern.
d) Beschneiden und Quantisieren: 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. So bleibt möglicherweise ein Großteil der Leistung mit weniger Parametern erhalten.
Praktisches Beispiel und Berechnungen
GPT-3, eines der größten Sprachmodelle, hat 175 Milliarden Parameter. Es verwendet den Decoder-Teil der Transformer-Architektur. Um die Größenordnung zu verstehen, schlüsseln wir die Parameteranzahl mit hypothetischen Werten auf:
d_model = 12288
d_ff = 4 * 12288 = 49152
- Anzahl der Schichten = 96
Für eine Decoderschicht:
Gesamtparameter = 8 * 12288^2 + 8 * 12288 * 49152 + 2 * 12288 ≈ 1.1 Milliarden
Gesamt für 96 Schichten:
1.1 Milliarden * 96 = 105.6 Milliarden
Die restlichen Parameter stammen aus Einbettungen und anderen Komponenten.
Zusammenfassung
Das Verständnis der Parameter und Speicheranforderungen großer Sprachmodelle ist entscheidend für die effektive Entwicklung, Schulung und Bereitstellung dieser leistungsstarken Tools. Indem wir die Komponenten der Transformer-Architektur aufschlüsseln und praktische Beispiele wie GPT untersuchen, erhalten wir einen tieferen Einblick in die Komplexität und den Umfang dieser Modelle.
Um die neuesten Fortschritte bei großen Sprachmodellen und deren Anwendungen besser zu verstehen, sehen Sie sich diese umfassenden Anleitungen an:
- Entdecken Sie den vollständigen Leitfaden zu Gemma 2: Googles neues offenes Large Language Model für Einblicke in die verbesserte Leistung und die innovativen Funktionen.
- Erfahren Sie mehr über den Aufbau von LLM-Agenten für RAG von Grund auf und darüber hinaus: Ein umfassender Leitfaden Darin werden die Herausforderungen und Lösungen bei der durch Abruf erweiterten Generierung erörtert.
- Entdecken Sie die Feinheiten von Einrichten eines Trainings, Feinabstimmung und Inferenzierung von LLMs mit NVIDIA GPUs und CUDA zur Optimierung von KI-Systemen.
Ich habe die letzten fünf Jahre damit verbracht, in die faszinierende Welt des maschinellen Lernens und des Deep Learning einzutauchen. Meine Leidenschaft und mein Fachwissen haben dazu geführt, dass ich an über 50 verschiedenen Software-Engineering-Projekten mitgewirkt habe, mit besonderem Schwerpunkt auf KI/ML. Meine anhaltende Neugier hat mich auch zur Verarbeitung natürlicher Sprache geführt, einem Bereich, den ich gerne weiter erforschen möchte.
Vielleicht gefällt dir
MARKLLM: Ein Open-Source-Toolkit für LLM-Wasserzeichen
Bereitstellen großer Sprachmodelle auf Kubernetes: Ein umfassender Leitfaden
Sparse Autoencoder, GPT-4 und Claude 3 verstehen: Eine eingehende technische Erkundung
Qwen2 – Alibabas neuestes mehrsprachiges Sprachmodell fordert SOTA wie Llama 3 heraus
LLaVA-UHD: ein LMM, das jedes Seitenverhältnis und hochauflösende Bilder wahrnimmt
Aufladen großer Sprachmodelle mit Multi-Token-Vorhersage
Neueste Beiträge
- Llama 3.1: Metas fortschrittlichstes Open-Source-KI-Modell – Alles, was Sie wissen müssen
- Revolutionieren Sie Ihr Geräteerlebnis: Wie Apples KI die Technologie neu definiert
- Der Schlüssel zu erfolgreichen KI-Lösungen? Verhaltensdaten
- Die Rolle von GANs bei der Verbesserung der Cybersicherheit
- Die 10 besten KI-Frisuren-Apps (Juli 2024)