Back to archive
#ai#llm#glossary#aigen

LoRA

LoRA, czyli Low-Rank Adaptation, pozwala dostosować wyuczony model, ucząc niewielkie macierze opisujące zmianę jego wag. Bazowa macierz pozostaje zamrożona. To sposób ograniczania liczby trenowanych parametrów podczas Fine-tuning.

W oryginalnej parametryzacji dla macierzy bazowej W0Rd×kW_0\in\mathbb{R}^{d\times k} używamy:

Weff=W0+αrBAW_{\mathrm{eff}}=W_0+\frac{\alpha}{r}BA

ARr×kA\in\mathbb{R}^{r\times k} i BRd×rB\in\mathbb{R}^{d\times r} zawierają uczone parametry. Małe rr ogranicza rank aktualizacji, a α\alpha ustala jej skalę. Ograniczenie dotyczy zmiany wag, nie rank całej macierzy bazowej. Mechanizm opisują Hu et al., LoRA: Low-Rank Adaptation of Large Language Models, §4.1.

Ile parametrów rzeczywiście oszczędzamy

Własny przykład: macierz 4096 × 4096 ma 16 777 216 parametrów. Dla r=8r=8 dwie macierze LoRA mają razem 84096+40968=655368\cdot4096+4096\cdot8=65\,536 parametrów. To 256 razy mniej trenowanych parametrów tej jednej macierzy, przy założeniu, że uczymy tylko jej adapter.

Bazowe wagi nadal trzeba przechowywać. Potrzebna jest też pamięć na aktywacje i pozostałe elementy obliczeń, więc z tego przykładu nie wynika 256-krotnie mniejsze zużycie VRAM. W §4.2 autorzy osobno opisują oszczędności stanu optymalizatora i rozmiaru zapisywanego adaptera.

W Transformer LoRA można zastosować do wybranych projekcji attention, ale metoda nie jest ograniczona do jednej pary macierzy. Ostateczny zakres treningu zależy od konfiguracji: rank, wskazanych warstw i ewentualnych dodatkowych uczonych modułów. Dokumentacja PEFT opisuje m.in. r, target_modules oraz modules_to_save.

Starszy wpis o skrypcie treningowym DeepSeek R1 zawiera przykład konfiguracji LoRA. Jest materiałem powiązanym; powyższa definicja opiera się na oryginalnej pracy i dokumentacji.

Wykorzystuję treści generowane przez AI jako część mojego codziennego procesu nauki.