Warum das Training mehr Speicher erfordert als der Download
Das Ausführen eines Modells erfordert kaum mehr als seine Gewichte: Ein 7B-Modell in 16-Bit ist etwa 14 GB groß. Das Training erfordert mehr, da jedes Gewicht, das lernt, auch einen Gradienten (in welche Richtung es bewegt werden soll) und einen Optimizer-Status (Adams gleitende Durchschnitte, die festlegen, wie weit) benötigt. Hinzu kommen die Aktivierungen aus dem Forward Pass, die mit der Batch-Größe und der Beispiellänge wachsen. Welche davon für welche Gewichte existieren, unterscheidet vollständiges Fine-Tuning von LoRA.
Die Faustregel
LoRA ≈ 2 GB per billion parameters + ~3 GB
frozen 16-bit weights adapter, activations, overhead
full ≈ 12 GB per billion parameters + ~4 GB
16-bit weight 2 bytes
16-bit gradient 2 bytes
Adam moment 1 (fp32) 4 bytes
Adam moment 2 (fp32) 4 bytes
─────────
12 bytes per weight
(+ 4 bytes for a 32-bit master copy = 16)- LoRA hält die Basis in 16-Bit eingefroren: 2 Bytes pro Gewicht, also 2 GB pro Milliarde Parameter. Der Adapter ist winzig, und die ~3 GB decken ihn, seinen Optimizer-Status, Aktivierungen bei moderaten Längen und das Framework selbst ab.
- Vollständiges Fine-Tuning trainiert jedes Gewicht: ein 16-Bit-Gewicht und ein Gradient plus Adams zwei 32-Bit-Momentenschätzungen, insgesamt 12 Bytes pro Gewicht.
- QLoRA speichert die eingefrorene Basis in 4 Bit, was den Speicherbedarf auf etwa ein Drittel von LoRA reduziert: Ein 8B-Modell benötigt etwa 9 GB statt 19.
Die Seite für vollständiges Fine-Tuning rechnet mit 16 Bytes pro Gewicht, nicht mit 12. Der Unterschied ist die 32-Bit-Masterkopie der Gewichte, die das klassische Mixed-Precision-Rezept neben den 16-Bit-Gewichten vorhält. Diese Faustregel geht von einem Training ohne diese zusätzliche Kopie aus; ein Setup, das eine solche behält, benötigt etwa 16 GB pro Milliarde Parameter. Beides sind Schätzungen vor langen Beispielen: Aktivierungen kommen noch hinzu und wachsen mit maximaler Länge und Batch-Größe.
| Modellgröße | LoRA | Vollständiges Fine-Tuning |
|---|---|---|
| 0.5B | ~4 GB | ~10 GB |
| 1.5B | ~6 GB | ~22 GB |
| 3B | ~9 GB | ~40 GB |
| 7B | ~17 GB | ~88 GB |
| 14B | ~31 GB | ~172 GB |
Aktivierungen sind der Teil, den die Regel nur annähern kann. Sie wachsen mit der Anzahl der gleichzeitig vorgehaltenen Token, also Batch-Größe mal Beispiellänge. Eine Verdopplung der maximalen Länge verdoppelt sie also in etwa, und Attention kann bei sehr langen Beispielen noch mehr hinzufügen. Der feste Overhead in der Regel geht von moderaten Längen aus. Wenn Ihre Beispiele lang sind, sollten Sie zusätzlichen Spielraum einplanen, anstatt bis auf das letzte Gigabyte zu kalkulieren.
Wie viel Speicher Ihnen tatsächlich zur Verfügung steht
Auf Laptops mit Unified Memory, wie Macs mit Apple Silicon, teilt sich die GPU den Hauptspeicher, sodass ein 36-GB-Laptop einem Modell mehr Platz bieten kann als eine typische Gaming-GPU. Aber das Betriebssystem und Ihre anderen Apps benötigen ihren Anteil, planen Sie also damit, dass etwa drei Viertel davon für das Training frei sind. Auf einem PC mit einer separaten Grafikkarte ist das Limit der eigene Speicher der GPU, nicht der RAM des Computers.
- Nutzbarer Speicher: nach Betriebssystem und Apps etwa 27 GB.
- 1.5B-Modell: LoRA 2 × 1,5 + 3 ≈ 6 GB, vollständiges Fine-Tuning 12 × 1,5 + 4 ≈ 22 GB. Beides passt.
- LoRA, größere Modelle: ein 7B-Modell benötigt etwa 17 GB und passt; ein 14B-Modell benötigt über 30 GB und passt nicht. In der Praxis eignet sich LoRA für Modelle bis zu etwa 10B.
- Vollständiges Fine-Tuning, größere Modelle: ein 3B-Modell benötigt etwa 40 GB, daher liegt die Obergrenze bei etwa 1.5B.
- QLoRA: ein 27–32B-Modell benötigt etwa 22–26 GB, was passt.
1.5B · LoRA 2 × 1.5 + 3 ≈ 6 GB
1.5B · full 12 × 1.5 + 4 ≈ 22 GBAuf einer 16-GB-NVIDIA-GPU besagt dieselbe Regel, dass ein 8B-Modell mit LoRA etwa 19 GB benötigt – zu viel –, aber mit QLoRA etwa 9 GB, was passt und noch Platz für längere Beispiele lässt.
Wenn der Speicher bei einem Durchlauf nicht ausreicht
- Reduzieren Sie die maximale Länge. Der Speicherbedarf wächst mit der Länge der Beispiele, daher bringt dies am meisten zurück. Prüfen Sie zuerst, ob Ihre typischen Beispiele noch passen.
- Reduzieren Sie die Batch-Größe. Weniger Beispiele pro Schritt bedeuten weniger gleichzeitig vorgehaltene Aktivierungen.
- Wechseln Sie zu QLoRA. Die 4-Bit-Basis benötigt etwa ein Viertel des Speichers einer 16-Bit-Basis.
- Verwenden Sie Gradient Checkpointing. Es tauscht etwa 20–30 % Geschwindigkeit gegen deutlich weniger Aktivierungsspeicher ein, und viele Rezepte aktivieren es bereits standardmäßig.
- Wählen Sie ein kleineres Modell, oder verwenden Sie LoRA anstelle von vollständigem Fine-Tuning.
Häufige Fehler
- Sich nach der Downloadgröße richten. Vollständiges Fine-Tuning benötigt das Sechs- bis Achtfache der 16-Bit-Gewichte, zuzüglich Aktivierungen.
- Den gesamten RAM eines Laptops mit gemeinsam genutztem Speicher als verfügbar ansehen. Das Betriebssystem und andere Apps benötigen ihren Anteil.
- Den RAM eines PCs anstelle des Speichers seiner Grafikkarte zählen.
- Die maximale Länge oder Batch-Größe erhöhen, nachdem ein Durchlauf gepasst hat, und erwarten, dass der nächste Durchlauf ebenfalls passt.
- Die maximale Länge unter die Länge Ihrer typischen Beispiele kürzen, sodass das Modell nie das Ende der Antworten sieht, die es lernen soll.
Quellen und weiterführende Literatur
Externe Quellen werden in einem neuen Tab geöffnet.
- 01ZeRO: Memory Optimizations Toward Training Trillion Parameter ModelsRajbhandari et al., 2019 · arXiv · arxiv.orgDie Standardberechnung von Gewichten, Gradienten und Optimizer-Status pro Parameter.
- 02GPU memory usageHugging Face Transformers docs · huggingface.co
- 03Model memory estimatorHugging Face Accelerate docs · huggingface.coEin Tool zur Schätzung des Speicherbedarfs eines spezifischen Hugging Face-Modells für Ausführung und Training.
- 04Unified MemoryMLX docs · ml-explore.github.ioWie sich CPU und GPU bei Apple Silicon einen gemeinsamen Speicherpool teilen.