Vorzeichen, Exponent, Mantisse
IEEE 754 Gleitkommaformat
Jede Gleitkommazahl speichert drei Felder:
- Vorzeichenbit (1 Bit): positiv oder negativ
- Exponent (E Bits): die Magnituden-Skala, eine ganzzahlige Potenz von 2
- Mantisse (M Bits): die fraktionale Präzision, eine Zahl zwischen 1.0 & ~2.0
Gesamte Bits = 1 + E + M. Der Wert entspricht ungefähr (-1)^sign (1 + mantissa) 2^(exponent - bias).
Zwei Eigenschaften sind für das Training wichtig:
Dynamischer Bereich = 2^(2^E) (ungefähr). Mehr Exponenten-Bits bedeutet, kleinere & riesige Zahlen ohne Überlauf darzustellen.
Präzision = 2^M unterschiedliche Werte pro Potenz von 2. Mehr Mantissenbits bedeuten eine feinkörnigere Darstellung zwischen aufeinanderfolgenden Potenzen von 2.
Die drei Formate
| Format | Gesamtbits | Vorzeichen | Exp | Mant | Dynamischer Bereich | Präzision |
|---|---|---|---|---|---|---|
| FP32 | 32 | 1 | 8 | 23 | ~10^-38 bis ~10^38 | ~7 Stellen |
| FP16 | 16 | 1 | 5 | 10 | ~10^-5 bis ~10^5 | ~3 Stellen |
| FP8 E4M3 | 8 | 1 | 4 | 3 | ~2^-9 bis ~448 | ~2 Stellen |
FP8 E4M3 bedeutet „4 Exponentenbits, 3 Mantissenbits“. Eine Alternative FP8 E5M2 tauscht Präzision gegen Reichweite; ANDREA-Experimente verwenden E4M3, weil Transformer-Aktivierungen in engen Magnitudenbereichen bleiben, wo zusätzliche Präzision über zusätzliche Reichweite siegt.
Bytes pro Parameter
Warum niedrigere Präzision schneller läuft
Memory Bandwidth dominiert die Trainingsgeschwindigkeit
Moderne GPUs verbringen mehr Zeit mit Warten auf Speicher als mit Rechnen. Die RTX 4090 hat 1008 GB/s Speicherbandbreite & 165 TFLOPS FP16-Rechenleistung. Eine typische Schicht liest Gewichte aus dem VRAM, multipliziert Aktivierungen, schreibt Ergebnisse zurück. Bandbreite, nicht Rechenleistung, bestimmt den Durchsatz.
Die Halbierung der Präzision halbiert die Bytes pro Parameter, sodass das Lesen derselben Gewichte nur die Hälfte der Speicherbandbreite benötigt. Der Durchsatz verdoppelt sich ungefähr.
Tensor Cores: Hardware-beschleunigtes Matrix-Multiplizieren
Die RTX 4090 enthält spezialisierte Tensor-Core-Einheiten, die Matrix-Multiplikationen bei FP16 oder FP8 direkt berechnen. Eine einzelne Tensor-Core-Operation multipliziert einen kleinen Block (z. B. 16x16) in einem Taktzyklus, dramatisch schneller als skalare FP32-Multiplikationen.
Empirische Zahlen von ANDREA-120M:
| Präzision | Schritte/min | Hinweise |
|---|---|---|
| FP32 | ~3 | Basislinie; keine Tensor-Core-Beschleunigung |
| FP16 | ~6 | cuBLAS Tensor-Kerne; 2x Beschleunigung |
| FP8 E4M3 | ~6 | Tensor-Kerne; vergleichbar mit FP16 |
FP8 konnte FP16 in der Durchsatzrate bei dieser Workload nicht schlagen, weil der Rechen-Durchsatz nicht mehr der Engpass war; Speicherbandbreite & Start-Overhead wurden limitierend. ANDREA-120M v3 wird mit FP16 cuBLAS bei 6 Schritten/Minute ausgeliefert für einen komfortablen Sicherheitsabstand ohne Verlust an Durchsatz.
NaN-Risiko bei FP8
FP8 E4M3 stellt Zahlen von ~2^-9 bis ~448 dar. Aktivierungen oder Gradienten außerhalb dieses Bereichs überlaufen zu NaN (not a number) oder unterlaufen zu null. Ein einzelnes NaN vergiftet jede nachgelagerte Berechnung: Matrixmultiplikationen mit einem NaN ergeben alle-NaN; alle-NaN-Gradienten korrumpieren den AdamW-Zustand; AdamW mit NaN m & v gibt NaN-Updates aus; Gewichte werden zu NaN; der gesamte Training-Lauf stirbt.
ANDREA's FP8-Experimente produzierten gelegentliche NaN-Klippen, die Loss-Scaling, geplante Präzisionswechsel oder Fallback-Pfade erforderten. Der FP16-Dynamikbereich (~10^-5 bis ~10^5) ist breit genug, dass NaN-Ereignisse selten bleiben, ohne komplizierte Scaling-Tricks.
Präzision für einen neuen Lauf wählen
120M auf einer einzelnen 4090 unterbringen
Der 6-8x-Multiplikator aus der Einführungslektion
Erinnern Sie sich aus grow_a_language_model_intro, dass das Trainingsgedächtnis etwa 6-8x der rohen Gewichtsanzahl entspricht, unter Berücksichtigung von:
- Gewichte (1x)
- Adam erstes Moment m (1x)
- Adam zweites Moment v (1x)
- Gradientenpuffer (1x)
- Aktivierungen & Temporaries (~2-4x, hängt von Batch & Kontext ab)
ANDREA-120M bei FP16 mit batch_size=8, context=1024:
| Komponente | FP16-Größe |
|---|---|
| Gewichte | 240 MB |
| m (erster Moment) | 240 MB |
| v (zweiter Moment) | 240 MB |
| Gradienten | 240 MB |
| Aktivierungen | ~2-4 GB (Batch, Kontext) |
| Gesamt | ~3.5 GB |
RTX 4090 hat 24 GB VRAM. ANDREA-120M verwendet ~14% bei FP16. Ausreichend Platz für größere Batch-Größen oder längere Kontextfenster. ANDREA-12M verwendete insgesamt nur 1.4 GB.
Wo Mixed Precision zum Einsatz kommt
ANDREA speichert nicht alles in einer einzigen Präzision. Mixed-Precision-Training speichert:
- Master-Gewichte: FP32 (erhält Trainingsstabilität)
- Forward- & Backward-Berechnung: FP16 (nutzt Tensor Cores)
- AdamW-Optimizer-Zustand: FP32 (m & v benötigen Präzision für Long-Tail-Updates)
- Gradientenpuffer: FP16 (Berechnungsseite)
Das endgültige Speicherbudget kombiniert beides. ANDREA's tatsächliche Speichernutzung liegt zwischen reinem FP16 (720 MB Optimizer-Zustand) & reinem FP32 (1.44 GB Optimizer-Zustand), näher an FP32, weil m & v in FP32 bleiben.
Budgetgröße für ANDREA-480M
Präzision in der Praxis
Benachbarte Aktivitäten
Drei Geschwisterthemen beziehen sich auf Präzision:
- Aktivität 1: Einführung / VRAM-Budget. Präzision multipliziert jeden Term in der Speicherbudget-Arithmetik. Die Daumenregel mit dem 6-8x-Multiplikator ist dimensionslos; Bytes-pro-Param gibt ihr Einheiten.
- Aktivität 10: AdamW. Optimizer-Zustand (m & v) bleibt typischerweise bei FP32, auch wenn Forward/Backward-Berechnungen bei FP16 laufen. Grund: Die Präzision des Long-Tail-Akkumulators ist für den Optimizer wichtiger als die Laufzeitgeschwindigkeit.
- Aktivität 12: Gradient Clipping. Clipping begrenzt die Gradientengrößen vor den Optimizer-Zustandsaktualisierungen. Bei FP16 Forward/Backward & FP32 Optimizer passiert das Clipping an der Grenze, wo sich die Präzision ändert & wo das Überlauf-Risiko am stärksten ist.
Präzision ist ein kostenloser Regler: Ändere sie, das Modell trainiert schneller & verbraucht weniger Speicher. Die Kosten sind numerische Sorgfalt: NaN-Behandlung, Loss-Scaling, Mixed-Precision-Disziplin. ANDREA-120M v3 demonstriert den Nutzen: 120M Parameter auf Consumer-Hardware in 23 Tagen trainiert, weil FP16 alles halbiert hat.