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 używamy:
i zawierają uczone parametry. Małe ogranicza rank aktualizacji, a 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 dwie macierze LoRA mają razem 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.