Low-Rank Adaptation (LoRA) (PL)
Low-Rank Adaptation (LoRA) — to metoda parametrycznie wydajnego dostrajania (PEFT), która pozwala adaptować duże modele językowe (LLM) do nowych zadań przy minimalnych kosztach obliczeniowych. Technologia została po raz pierwszy przedstawiona w pracy Edwarda Hu (Edward Hu) i jego współpracowników w 2021 roku[1].
Pełne dostrajanie (full fine-tuning) dużych modeli, takich jak LLaMA czy GPT, wymaga ogromnych zasobów, co czyni je niedostępnym dla większości badaczy i programistów. LoRA rozwiązuje ten problem, umożliwiając dostrajanie jedynie niewielkiej części parametrów modelu, przy jednoczesnym zachowaniu wysokiej jakości i wydajności porównywalnej z pełnym dostrajaniem[2].
Zasada działania
Główna idea LoRA polega na tym, aby nie modyfikować oryginalnych wag wytrenowanego modelu, lecz dodać do nich niewielką „korygującą" macierz. Zamiast bezpośrednio trenować ogromną macierz wag `W`, LoRA reprezentuje jej zmianę jako iloczyn dwóch niewielkich macierzy niskiej rangi.
Formalnie, jeśli oryginalna macierz wag warstwy `W_0` ma rozmiar `d × k`, jej aktualizacja jest reprezentowana jako `ΔW = BA`, gdzie `B` — macierz o wymiarach `d × r`, a `A` — macierz o wymiarach `r × k`. Ranga `r` jest hiperparametrem i jest znacznie mniejsza (`r << d, k`). W procesie dostrajania oryginalne wagi `W_0` są zamrażane, a trenowane są tylko macierze `A` i `B`. Wynikowa macierz wag jest obliczana jako `W = W_0 + BA`.
Pozwala to zmniejszyć liczbę trenowanych parametrów tysiące razy. Na przykład, podczas dostrajania GPT-3 (175 mld parametrów) LoRA zmniejsza liczbę trenowanych parametrów 10 000 razy i redukuje wymagania dotyczące pamięci GPU trzykrotnie[1].
Kluczowe zalety
- Oszczędność zasobów: Drastycznie zmniejsza się liczba trenowanych parametrów (do 90% i więcej), co znacznie redukuje zużycie pamięci wideo (VRAM) i przyspiesza proces uczenia.
- Brak opóźnień podczas wnioskowania (inference): Po zakończeniu treningu macierze `B` i `A` można „scalić" z główną macierzą `W_0`, obliczając `W = W_0 + BA`. W ten sposób podczas używania modelu nie są dodawane żadne dodatkowe obliczenia ani opóźnienia[1].
- Modularność i szybka zmiana zadań: Wytrenowane adaptery LoRA to małe pliki (kilka megabajtów). Pozwala to łatwo przechowywać dziesiątki adapterów dla różnych zadań i szybko przełączać się między nimi bez modyfikowania głównego modelu[3].
Ograniczenia i modyfikacje
Chociaż LoRA jest bardzo wydajna, jej niskorangowa natura może stanowić ograniczenie dla zadań wymagających zapamiętania dużej ilości nowych informacji. W celu rozwiązania tego i innych problemów zaproponowano różne modyfikacje.
QLoRA
QLoRA (Quantized Low-Rank Adaptation) — jedna z najpopularniejszych modyfikacji, zaproponowana w 2023 roku. Łączy ona LoRA z 4-bitową kwantyzacją modelu bazowego[4]. Pozwala to jeszcze bardziej zmniejszyć wymagania dotyczące pamięci, umożliwiając dostrajanie modeli z dziesiątkami miliardów parametrów (np. modeli 65B) na jednym konsumenckim GPU. Na podstawie QLoRA powstał m.in. model Guanaco, który osiągnął wyniki porównywalne z ChatGPT.
Inne modyfikacje
- MoRA (High-Rank Updating): Zaproponowana dla zadań, w których LoRA wykazuje niewystarczającą wydajność z powodu ograniczenia rangi. MoRA wykorzystuje metody umożliwiające aktualizację wag z wysoką rangą, zachowując przy tym parametryczną wydajność[5].
Implementacja i zastosowanie
Technologia LoRA zyskała szerokie zastosowanie dzięki swojej wydajności i łatwości integracji. Kluczową rolę w jej popularyzacji odegrała biblioteka PEFT (Parameter-Efficient Fine-Tuning) firmy Hugging Face. PEFT zapewnia jednolity interfejs do stosowania LoRA i innych metod PEFT do modeli z ekosystemu Transformers[6].
LoRA jest aktywnie wykorzystywana do:
- Adaptacji chatbotów i systemów dialogowych (np. dostrajanie LLaMA, Mistral).
- Tworzenia modeli do klasyfikacji i generowania tekstu w wysoce wyspecjalizowanych dziedzinach.
- Personalizacji modeli pod kątem konkretnego stylu lub formatu danych.
Odnośniki
- Oficjalna dokumentacja biblioteki PEFT firmy Hugging Face
Literatura
- Hu, E.J. et al. (2021). LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685.
- Dettmers, T. et al. (2023). QLoRA: Efficient Finetuning of Quantized LLMs. arXiv:2305.14314.
- Zhang, Q. et al. (2023). AdaLoRA: Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning. arXiv:2303.10512.
- Chen, Y. et al. (2023). LongLoRA: Efficient Fine-Tuning of Long-Context Large Language Models. arXiv:2309.12307.
- Mao, K. et al. (2024). A Survey on LoRA of Large Language Models. arXiv:2407.11046.
- Jiang, T. et al. (2024). MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning. arXiv:2405.12130.
- Liu, Z. et al. (2024). ALoRA: Allocating Low-Rank Adaptation for Fine-Tuning Large Language Models. arXiv:2403.16187.
- Liu, J. et al. (2025). RoRA: Efficient Fine-Tuning of LLM with Reliability Optimization for Rank Adaptation. arXiv:2501.04315.
- Albert, P. et al. (2025). RandLoRA: Full-Rank Parameter-Efficient Fine-Tuning of Large Models. arXiv:2502.00987.
- Tastan, N. et al. (2025). LoFT: Low-Rank Adaptation That Behaves Like Full Fine-Tuning. arXiv:2505.21289.
Przypisy
- ↑ 1.0 1.1 1.2 Hu, E.J., et al. «LoRA: Low-Rank Adaptation of Large Language Models». arXiv:2106.09685. [1]
- ↑ Mao, K., et al. «A Survey on LoRA of Large Language Models». arXiv:2407.11046. [2]
- ↑ Noble, Joshua. «What is LoRA (Low-Rank Adaption)?». IBM Technology. [3]
- ↑ Dettmers, T., et al. «QLoRA: Efficient Finetuning of Quantized LLMs». arXiv:2305.14314. [4]
- ↑ Jiang, Z., et al. «MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning». arXiv:2405.12130. [5]
- ↑ «LoRA (Low-Rank Adaptation)». Hugging Face LLM Course. [6]