Training im Großen: GPUs, Parallelität und Speicher
Kurz: Große Modelle passen nicht auf eine GPU. Sie werden auf Tausende GPUs verteilt, mit mehreren Arten von Parallelität, schnellen Verbindungen und gemischter Genauigkeit.
Genauer: Beim Training braucht jedes Gewicht außer dem Wert auch Gradient und Optimizer-Zustände. Mit Adam in gemischter Genauigkeit sind das etwa 16 Byte pro Parameter. Ein Modell mit 70 Milliarden Parametern braucht dann über 1 Terabyte nur für diese Daten.
Im Detail
- Datenparallelität (DP): Jede GPU hat eine Kopie, bekommt andere Daten, Gradienten werden gemittelt.
- ZeRO/FSDP: Verteilt Gewichte, Gradienten und Optimizer-Zustände auf die GPUs, jede holt bei Bedarf.
- Tensorparallelität: Einzelne Matrizen werden auf GPUs aufgeteilt, siehe multi-gpu-und-tensor-parallelismus.
- Pipeline-Parallelität: Verschiedene Schichten auf verschiedenen GPUs, Mikro-Batches fließen durch.
- Expertenparallelität: Bei mixture-of-experts-(moe) liegen Experten auf verschiedenen GPUs.
- Gemischte Genauigkeit: Rechnen mit BF16/FP8, Hauptgewichte in FP32, siehe zahlenformate-fp32-fp16-bf16-und-fp8.
- Verbindungen: NVLink innerhalb eines Servers, InfiniBand oder Ethernet dazwischen. Die Kommunikation ist oft der Engpass.
- Ausfälle: Bei Tausenden GPUs fällt täglich etwas aus, deshalb Checkpoints.
- Hardware: NVIDIA H100/B200, Google TPU, AMD MI300, siehe npu-und-ki-beschleuniger.
- Auslastung (MFU): Der Anteil der theoretischen Rechenleistung, der genutzt wird, typisch 30 bis 50 %.
Siehe auch: Wie ein Sprachmodell trainiert wird, energieverbrauch-von-ki