20 Punkte von GN⁺ 2024-05-17 | 1 Kommentare | Auf WhatsApp teilen
  • Die genaue Struktur verstehen, indem eine tatsächlich lauffähige Implementierung des Llama-3-Modells gezeigt wird

Überblick

  • Das von Meta veröffentlichte Llama-3-Modell erhält große Aufmerksamkeit.
  • Es zeichnet sich durch eine überwältigende Größenordnung und Leistung aus: 24K GPUs, 15T Trainingsdaten, 10M Instruction-Daten und 1.3M GPU-Stunden.
  • Die Modellarchitektur hat sich nicht grundlegend verändert. Llama 3 verwendet GQA, was jedoch bereits in Llama 2 70B implementiert wurde.
  • Die Implementierung verwendet ausschließlich NumPy, damit sich die Modellstruktur intuitiv nachvollziehen lässt.
  • Verwendet wird das von Andrej Karpathy mit der Llama-2-Architektur trainierte stories15M-Modell, das in das NumPy-Komprimierungsformat konvertiert wurde.

Struktur

  • Die Struktur des Llama-3-Modells ist identisch mit 42dot LLM.
  • Modellparameter:
    • dim: 288
    • n_layers: 6
    • n_heads: 6
    • vocab_size: 32000
    • max_seq_len: 256
    • max_new_tokens: 50

RoPE #1

  • Für das RoPE-Embedding werden cos und sin im Voraus berechnet.
  • Diese Werte werden für Q und K verwendet.
  • Das Berechnungsergebnis wird mit np.outer multipliziert, anschließend werden cos und sin berechnet.

RMSNorm

  • RMSNorm normalisiert Aktivierungswerte über den Root Mean Square anstelle traditioneller Mini-Batch- oder Layer-Statistiken.
  • Dadurch wird eine konsistente Skalierung der Aktivierungen erreicht.

QKV

  • Bei der QKV-Berechnung wird im Unterschied zu GPT, das nach einer Matrixmultiplikation mit einem Gewicht aufteilt, in Llama für jedes von Q, K und V ein eigenes Gewicht verwendet.
  • Für Multi-Head Attention werden die jeweiligen Werte entsprechend umgeformt.

RoPE #2

  • RoPE besitzt sowohl Eigenschaften absoluter als auch relativer Positionskodierung.
  • Es wird nur auf Q und K angewendet; die Eingaben werden aufgeteilt, mit cos und sin multipliziert und anschließend durch Addieren und Subtrahieren wieder zusammengesetzt.

KV-Cache

  • GPT-artige generative Modelle verwenden Masked Attention, wodurch ein KV-Cache möglich wird.
  • Frühere Ergebnisse sind stets identisch, daher werden K und V zwischengespeichert, und für Q wird nur der letzte Wert berechnet.

GQA (Grouped-Query Attention)

  • GQA ist eine in Llama 2 eingeführte Technik, die Speicher spart und die Leistung verbessert.
  • In Llama 3 wird GQA auf alle Modelle ab 8B angewendet.

Scaled Dot-Product Attention

  • Die einzelnen Attention-Berechnungen werden als Multi-Head Attention ausgeführt.
  • Das Ergebnis wird über softmax und matmul erhalten.

Feed Forward

  • Das Feed-Forward-Modul des Llama-Modells verwendet drei lineare Schichten ohne Bias.
  • Es erzeugt einen Swish-Wert, multipliziert ihn mit x_V und skaliert ihn anschließend wieder herunter.

SwiGLU

  • SwiGLU verbessert die Modellleistung durch eine charakteristische Kombination mehrerer Feed-Forward-Schichten.

Linear

  • Für mehr Geschwindigkeit wird in der finalen Ausgabe nur der letzte Logit per matmul berechnet.

Generierung

  • Mithilfe der extrahierten Logits werden Tokens nacheinander generiert.
  • Der Prozess ist in Prefill-Phase und Decode-Phase unterteilt.
  • In der Prefill-Phase wird die gesamte Eingabe übergeben, in der Decode-Phase nur die letzte Token-ID, um das Ergebnis zu erhalten.

Beispiel

  • Die Ausführung ist zum Beispiel so möglich:
    $ python llama3.py "I have a dream"  
    

GitHub

Literaturhinweise

  1. Exploring and Building the Llama 3 Architecture
  2. Rotation Matrix
  3. Mastering LLM Techniques: Inference Optimization
  4. arXiv:2305.13245

Meinung von GN⁺

  • Struktur und Leistung des Llama-3-Modells: Das Llama-3-Modell behält die Struktur des bisherigen Llama-2-Modells bei und verbessert gleichzeitig die Leistung deutlich. Das ist das Ergebnis einer Auslegung, die sowohl Skalierbarkeit als auch Effizienz berücksichtigt.
  • Warum die Implementierung mit NumPy erfolgt: Durch die Implementierung mit NumPy lassen sich Struktur und Funktionsweise des Modells intuitiver verstehen. Das ist besonders hilfreich für Lernende und Forschende.
  • Die Einführung von GQA: GQA ist eine Technik, die zugleich Speicher spart und die Leistung verbessert. Dass sie in Llama 3 auf alle Modelle angewendet wird, maximiert die Effizienz des Modells.
  • Die Bedeutung des KV-Cache: Der KV-Cache spielt in GPT-artigen generativen Modellen eine wichtige Rolle und kann die Recheneffizienz des Modells deutlich steigern.
  • Praktische Anwendungsbeispiele: Mit dem Beispielcode lässt sich das Modell tatsächlich ausführen, was eine gute Gelegenheit bietet, seine Leistung direkt zu überprüfen.

1 Kommentare

 
xguru 2024-05-17

Auf Hacker News wurde zwar die englische Version gepostet, aber wir haben den Link auf die koreanisch verfasste Version des Originalautors Likejazz geändert.