Low-Rank Adaptation (LoRA) (PL)

From Systems analysis Wiki
Jump to navigation Jump to search

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 niskoran­gowa 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. 1.0 1.1 1.2 Hu, E.J., et al. «LoRA: Low-Rank Adaptation of Large Language Models». arXiv:2106.09685. [1]
  2. Mao, K., et al. «A Survey on LoRA of Large Language Models». arXiv:2407.11046. [2]
  3. Noble, Joshua. «What is LoRA (Low-Rank Adaption)?». IBM Technology. [3]
  4. Dettmers, T., et al. «QLoRA: Efficient Finetuning of Quantized LLMs». arXiv:2305.14314. [4]
  5. Jiang, Z., et al. «MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning». arXiv:2405.12130. [5]
  6. «LoRA (Low-Rank Adaptation)». Hugging Face LLM Course. [6]