Ressourcen/Modelltraining/Was während des Trainings passiert

Methode

QLoRA (4-Bit-LoRA)

QLoRA trainiert einen gewöhnlichen LoRA-Adapter auf einem Basismodell, das in 4 Bit statt in 16 Bit gespeichert ist. Der Speicherbedarf für das Training sinkt auf etwa ein Drittel, sodass dieselbe Maschine ein etwa dreimal größeres Modell feinabstimmen kann, was jedoch etwas Geschwindigkeit kostet.

Kapitel 65 Min. Lesezeit5 Quellen

Was es ist

QLoRA, kurz für quantisiertes LoRA, kombiniert zwei Ideen. Quantisierung speichert jede Zahl in weniger Bits. LoRA friert das Basismodell ein und trainiert daneben einen kleinen Adapter. Da die Basis eingefroren ist, benötigt sie niemals Gradienten oder einen Optimizer-Status und kann daher kompakt gespeichert werden; nur der Adapter muss in einer für das Lernen geeigneten Präzision verbleiben. QLoRA hält die eingefrorene Basis in 4 Bit, einem Viertel der üblichen 16, und trainiert denselben LoRA-Adapter darauf in 16-Bit.

Es wurde 2023 von Dettmers et al. eingeführt. In ihrem Paper wurde ein Modell mit 65 Milliarden Parametern auf einer einzigen 48-GB-GPU feingetunt, wo ein reguläres 16-Bit-Finetuning mehr als 780 GB benötigt hätte, während die Aufgabenleistung des 16-Bit-Finetunings erhalten blieb.

EINGEFRORENE BASIS · 4-BITL1L2L3L4L5L6L7L8auf 16-Bit entpacktfür diese Schicht, danach verworfenAdapter · 16-BitSPEICHERBEDARF FÜR DAS TRAINING~27 GB frei auf einem 36-GB-Laptop8B~19 GB~9 GB14B~33 GB~13 GB27–32B~60–70 GB~22–26 GBLoRA · 16-Bit-BasisQLoRA · 4-Bit-Basis
Oben: Die eingefrorene Basis wird in 4 Bit gespeichert und jede Schicht wird nur während der Berechnung auf 16-Bit entpackt; der kleine LoRA-Adapter neben jeder Schicht trainiert in 16-Bit. Unten: Ungefährer Speicherbedarf für das Training im Vergleich zu den rund 27 GB, die ein 36-GB-Laptop nach Abzug des Betriebssystems frei hat. Veranschaulichende Zahlen basierend auf einer gängigen Faustregel.

Wie es funktioniert

Ein 16-Bit-Gewicht benötigt 2 Byte; ein 4-Bit-Gewicht benötigt ein halbes Byte. Ein trainiertes Modell so stark zu komprimieren, ohne es zu zerstören, beruht auf drei Bestandteilen aus dem Paper:

  • 4-Bit NormalFloat (NF4). Trainierte Gewichte folgen grob einer Glockenkurve mit dem Zentrum bei null. NF4 platziert seine 16 möglichen Werte so, dass sie dieser Form entsprechen, sodass mehr von ihnen dort liegen, wo sich die meisten Gewichte befinden. Im Paper übertraf es gewöhnliche 4-Bit-Ganzzahlen und 4-Bit-Gleitkommazahlen.
  • Doppelte Quantisierung. Gewichte werden in kleinen Blöcken quantisiert, jeder mit seiner eigenen Skalierungskonstante, und diese Konstanten summieren sich. QLoRA quantisiert auch die Konstanten und senkt deren Kosten von etwa 0,5 auf etwa 0,13 Bit pro Gewicht: Das spart bei einem 65B-Modell rund 3 GB.
  • Paged Optimizers. Wenn ein langes Beispiel eine plötzliche Speicherspitze verursacht, wird der Optimizer-Status für einen Moment in den normalen CPU-Speicher verschoben, anstatt dass der Durchlauf abstürzt.

Während der Vorwärts- und Rückwärtsdurchläufe werden die 4-Bit-Gewichte jeder Schicht in 16-Bit entpackt (dequantisiert), für die Arithmetik dieser Schicht verwendet und dann verworfen. Gradienten fließen durch die eingefrorene Basis in den Adapter, der der einzige Teil ist, der sich ändert. Zu jedem Zeitpunkt hält der Speicher das gesamte Modell in 4 Bit plus die 16-Bit-Gewichte einer Schicht.

Warum das Basismodell auf etwa ein Viertel schrumpft
bytes per weight of the frozen base
  16-bit (bf16)                              2 bytes
  4-bit NF4 + double-quantised constants  ≈ 0.52 bytes   (≈ 4.13 bits)

an 8B model, frozen base only
  16-bit   8 × 10⁹ × 2 bytes      ≈ 16 GB
  4-bit    8 × 10⁹ × 0.52 bytes   ≈  4.1 GB
Ein 8B-Modell auf einer 16-GB-GPU (zur Veranschaulichung)
  1. LoRA auf einer 16-Bit-Basis: allein etwa 16 GB an eingefrorenen Gewichten. Mit dem Adapter, seinem Optimizer-Status und den Aktivierungen ergibt eine gängige Faustregel etwa 19 GB. Es passt nicht.
  2. QLoRA: Die Basis schrumpft auf etwa 4–5 GB. Einige Teile, wie Normalisierungsschichten und oft auch die Embedding- und Output-Schichten, bleiben in der Regel in 16-Bit. Mit dem Adapter und dem Arbeitsspeicher beträgt die Gesamtsumme etwa 9 GB, was problemlos passt.
  3. Der Adapter ist exakt so groß wie ein LoRA-Adapter desselben Rangs: einige Dutzend MB.
  4. Der Kompromiss: Jeder Schritt ist etwas langsamer, da jede Schicht im laufenden Betrieb entpackt wird.
ModellLoRA (16-Bit-Basis)QLoRA (4-Bit-Basis)
8B~19 GB~9 GB
14B~33 GB~13 GB
27–32B~60–70 GB~22–26 GB

Dies sind die Gesamtsummen für das Training, einschließlich des Arbeitsspeichers, weshalb sie über den 4–5 GB liegen, die die Seite für das vollständige Finetuning für die 4-Bit-Basis eines 7B-Modells vor den Aktivierungen angibt. Ein 36-GB-Laptop mit gemeinsam genutztem Speicher, bei dem nach Abzug des Betriebssystems etwa 27 GB frei sind, kann ein 27–32B-Modell mit QLoRA trainieren, gegenüber etwa 10B mit reinem LoRA.

Was es kostet und wann es eingesetzt wird

  • Geschwindigkeit. Das Entpacken jeder Schicht bei jedem Schritt bedeutet zusätzlichen Aufwand, sodass das Training etwas langsamer ist als LoRA beim selben Modell.
  • Qualität. Die Ergebnisse kommen denen von LoRA sehr nahe. Das Paper erreichte in seinen Benchmarks die Leistung eines 16-Bit-Finetunings; bei Ihrer eigenen Evaluierung können sich dennoch kleine Unterschiede zeigen. Vergleichen Sie daher mit einem Evaluierungsdurchlauf, anstatt Annahmen zu treffen.
  • Das Ergebnis. Es handelt sich weiterhin um einen Adapter. Laden Sie ihn auf das normale 16-Bit-Basismodell oder auf dessen 4-Bit-Kopie; die Größe des Adapters selbst ändert sich nicht.
  • Wann. Verwenden Sie QLoRA, wenn das gewünschte Modell nicht mit LoRA in den Speicher passt. Wenn es passt, ist reines LoRA bei gleichem Ergebnis schneller.

Die Einstellungen

Quantisierung (QLoRA)Typisch Aus, wenn das Modell mit LoRA in den Speicher passt; Ein, wenn nicht#

Gibt an, ob das eingefrorene Basismodell in 4 Bit geladen wird. „Aus“ trainiert einen normalen LoRA-Adapter auf einer 16-Bit-Basis: schneller pro Schritt, benötigt aber etwa dreimal so viel Speicher. „Ein“ trainiert QLoRA – die richtige Wahl, wenn das gewünschte Modell sonst nicht in den Speicher passen würde. Dies gilt nur für Adapter: Ein vollständiges Fine-Tuning ändert jedes Gewicht, sodass jedes Gewicht in einer trainierbaren Präzision verbleiben muss.

BerechnungspräzisionTypisch bf16, wenn die GPU dies unterstützt#

Das Zahlenformat, in das die 4-Bit-Gewichte für die Arithmetik jeder Schicht entpackt werden, und das Format, in dem der Adapter trainiert wird. bf16 (bfloat16) behält den Wertebereich von 32-Bit-Floats in 16 Bit bei, sodass Werte selten überlaufen; NVIDIA-GPUs unterstützen dies ab der Ampere-Generation. Ältere GPUs wie die T4 rechnen stattdessen meist in fp16, was einen geringeren Wertebereich hat.

Häufige Fehler

  • Die Wahl von QLoRA, wenn das Modell bereits mit LoRA in den Speicher passt. Es verlängert nur die Trainingszeit.
  • Die Erwartung einer kleineren Ergebnisdatei. Der Adapter ist genauso groß wie ein LoRA-Adapter; nur der Trainingsspeicher schrumpft.
  • Der Versuch, QLoRA zu verwenden, um ein vollständiges Finetuning in den Speicher zu bekommen. Es gilt nur für Adapter.
  • Der Start mit einem Modell, das bereits komprimiert veröffentlicht wurde (FP8, MXFP4). QLoRA quantisiert ein Modell mit voller Präzision selbst, beginnt also mit der BF16-Version.
  • Das Laden des Adapters auf ein anderes Modell oder eine andere Version davon als die, auf der er trainiert wurde.

Quellen und weiterführende Literatur

Externe Quellen werden in einem neuen Tab geöffnet.

  1. 01QLoRA: Efficient Finetuning of Quantized LLMsDettmers et al., 2023 · arXiv · arxiv.orgDas ursprüngliche Paper: NF4, doppelte Quantisierung, Paged Optimizers und das Ergebnis von 65B auf einer GPU.
  2. 02Making LLMs even more accessible with bitsandbytes, 4-bit quantization and QLoRAHugging Face blog, 2023 · huggingface.coEine verständliche Anleitung zum 4-Bit-Laden und QLoRA-Training in der Praxis.
  3. 03BitsandbytesHugging Face Transformers docs · huggingface.coDie 4-Bit-Ladeoptionen: NF4, doppelte Quantisierung und der Compute-Datentyp.
  4. 04QuantizationHugging Face PEFT docs · huggingface.co
  5. 05LLM.int8(): 8-bit Matrix Multiplication for Transformers at ScaleDettmers et al., 2022 · arXiv · arxiv.orgDie früheren 8-Bit-Arbeiten, aus denen die Quantisierungsbibliothek von QLoRA hervorgegangen ist.

Verwandeln Sie wochenlange Expertenarbeit in Minuten

Erfahren Sie, wie Scalata zu Ihrem Team, Ihren Daten und Ihren Kontrollen passt.

Vertrieb kontaktieren