LoRA: Parameter-Efficient Fine-Tuning

Jak efektywnie dostrajać duże modele językowe bez potrzeby trenowania wszystkich wag

Trenowanie wszystkich parametrów

LLaMA-7B

7 miliardów wag — każda aktualizowana w każdym kroku

Trenowane wagi
⚠️
Problem: Aktualizujemy wszystkie 7B wag. Wymaga wielu kart A100/H100, >120 GB VRAM i bardzo dużo czasu.
Trening: 0%

Porównanie

Parametry
7B → 4.2M -99.9%
VRAM
>120 GB → ~18 GB -85%
FP32 + optimizer vs FP16 base + adapter
Czas
~48h → ~4h 12x
Orientacyjnie — zależy od sprzętu i datasetu
Koszt
$$$$ → $

Jak to działa?

  • Zamrożony model bazowy — 7B wag nietknięte, gradienty nie liczone
  • Adaptery niskorangowe — pary macierzy A (d×r) i B (r×d) przy projekcjach Wq, Wk, Wv
  • Rank (ranga) — hiperparametr r kontroluje pojemność adaptera. Typowe: r = 8, 16, 32, 64
  • Matematyka — W' = W + (α/r) · B · A, gdzie B·A to niskorangowa korekta
  • Wymiana adapterów — jeden model bazowy + wiele adapterów (~17 MB) dla różnych zadań
  • QLoRA — LoRA + 4-bit kwantyzacja = fine-tuning 7B na 6-10 GB VRAM

W praktyce

Full fine-tuning LLaMA-7B wymaga wielu kart A100 (80 GB) ze względu na stany optymalizatora.

Z LoRA (FP16) — jedna karta A100 (40 GB).
Z QLoRA (4-bit) — RTX 3090/4090 (24 GB).

Adapter zajmuje ~17 MB na dysku — możesz mieć dziesiątki adapterów do różnych zadań bez powielania modelu.