Sztuczna inteligencja
LoRa, QLoRA i QA-LoRA: Wydajna adaptacja w dużych modelach językowych za pomocą niskiej rangi czynnika macierzy

Duże modele językowe (LLM) wytworzyły unikalną niszę, oferując niezrównane możliwości w zrozumieniu i generowaniu ludzkiego tekstu. Potęga LLM można odnieść do ich ogromnego rozmiaru, często posiadają one miliardy parametrów. Podczas gdy ten ogromny rozmiar pali ich wydajność, jednocześnie rodzi wyzwania, zwłaszcza w przypadku adaptacji modelu do określonych zadań lub domen. Konwencjonalne ścieżki zarządzania LLM, takie jak dostrajanie wszystkich parametrów, przedstawiają znaczne obciążenie obliczeniowe i finansowe, stanowiąc znaczną barierę dla ich powszechnego przyjęcia w aplikacjach świata rzeczywistego.
W poprzednim artykule, zagłębiliśmy się w dostrajanie dużych modeli językowych (LLM), aby dostosować je do określonych wymagań. Eksplorowaliśmy różne metody dostrajania, takie jak dostrajanie oparte na instrukcjach, dostrajanie pojedynczego zadania i wydajne dostrajanie parametrów (PEFT), każde z nich ma unikalne podejście do optymalizacji LLM dla odrębnych zadań. Centralnym punktem dyskusji była architektura transformatora, podstawa LLM, oraz wyzwania stawiane przez wymagania obliczeniowe i pamięciowe przy obsłudze ogromnej liczby parametrów podczas dostrajania.
Powyższy obraz reprezentuje skalę różnych dużych modeli językowych, uporządkowanych według liczby parametrów. Godne uwagi są: PaLM, BLOOM itd.
W tym roku nastąpiły postępy, prowadzące do jeszcze większych modeli. Niemniej, dostrajanie tak ogromnych, otwartoźródłowych modeli na standardowych systemach jest niewykonalne bez specjalistycznych technik optymalizacji.
Wkraczają Niska Adaptacja Rangi (LoRA), wprowadzona przez firmę Microsoft w tym dokumencie, mająca na celu złagodzenie tych wyzwań i uczynienie LLM bardziej dostępnymi i adaptowalnymi.
Istotą LoRA jest podejście do adaptacji modelu bez zagłębiania się w szczegóły ponownego szkolenia całego modelu. W przeciwieństwie do tradycyjnego dostrajania, gdzie każdy parametr podlega zmianie, LoRA przyjmuje sprytniejszą trasę. Zamyka pre-trenowane wagi modelu i wprowadza trenowalne macierze rozkładu rangi do każdej warstwy architektury Transformatora. To podejście drastycznie obcina liczbę trenowalnych parametrów, zapewniając bardziej wydajny proces adaptacji.
Ewolucja strategii dostrajania LLM
Odgrywając podróż dostrajania LLM, można zidentyfikować kilka strategii zastosowanych przez praktyków na przestrzeni lat. Początkowo, uwaga była skupiona na dostrajaniu pre-trenowanych modeli, strategii, która obejmuje kompleksową zmianę parametrów modelu, aby dopasować go do określonego zadania. Niemniej, w miarę jak modele rosły w rozmiarze i złożoności, rosły również wymagania obliczeniowe tego podejścia.
Kolejną strategią, która zyskała popularność, było dostrajanie podzbioru, bardziej ograniczona wersja poprzedniej. Tutaj tylko podzbiór parametrów modelu jest dostrajany, zmniejszając obciążenie obliczeniowe do pewnego stopnia. Pomimo swoich zalet, dostrajanie podzbioru nadal nie było w stanie dotrzymać tempa wzrostu rozmiaru LLM.
Gdy praktycy zaczęli eksplorować bardziej wydajne drogi, pełne dostrajanie pojawiło się jako rygorystyczne, lecz nagradzające podejście.
Wprowadzenie do LoRA
Ranga macierzy daje nam wgląd w wymiary utworzone przez jej kolumny, określone przez liczbę unikalnych wierszy lub kolumn.
- Pełna macierz rangi: jej ranga odpowiada mniejszej liczbie pomiędzy wierszami a kolumnami.
- Niska ranga macierzy: o randze znacznie mniejszej niż obie liczby wierszy i kolumn, ujmuje mniej cech.
Teraz, duże modele posiadają szerokie zrozumienie swojej dziedziny, jak język w modelach językowych. Ale dostrajanie ich do konkretnych zadań często wymaga tylko podkreślenia niewielkiej części tych zrozumień. To tutaj LoRA błyszczy. Sugestuje, że macierz przedstawiająca te dostosowania wag może być macierzą niskiej rangi, ujmując mniej cech.
LoRA sprytnie ogranicza rangę tej macierzy aktualizacji, dzieląc ją na dwie mniejsze macierze rangi. Zatem zamiast modyfikowania całej macierzy wag, zmienia tylko część z nich, czyniąc zadanie dostrajania bardziej wydajnym.
Zastosowanie LoRA do Transformatorów
LoRA pomaga zminimalizować obciążenie treningowe w sieciach neuronowych, koncentrując się na określonych macierzach wag. W ramach architektury Transformatora, określone macierze wag są związane z mechanizmem uwagi, a mianowicie Wq, Wk, Wv i Wo, oraz dwie więcej w module Multi-Layer Perceptron (MLP).
Matematyczne wyjaśnienie LoRA
Rozłóżmy matematykę za LoRA:
- Pre-trenowana macierz wag W0:
- Rozpoczyna się od pre-trenowanej macierzy wag W0 o wymiarach d×k. Oznacza to, że macierz ma d wierszy i k kolumn.
- Niska ranga dekompozycji:
- Zamiast bezpośrednio aktualizować całą macierz W0, co może być obliczeniowo kosztowne, metoda proponuje podejście niskiej rangi dekompozycji.
- Aktualizacja ΔW do W0 może być reprezentowana jako iloczyn dwóch macierzy: B i A.
- B ma wymiary d×r
- A ma wymiary r×k
- Kluczowym punktem jest to, że ranga r jest znacznie mniejsza niż obie d i k, co pozwala na bardziej obliczeniowo wydajną reprezentację.
- Trenowanie:
- Podczas procesu trenowania W0 pozostaje niezmieniona. Jest to określane jako “zamrożenie” wag.
- Z drugiej strony, A i B są parametrami trenowalnymi. Oznacza to, że podczas trenowania, dostosowania są wprowadzane do macierzy A i B w celu poprawy wydajności modelu.
- Mnożenie i dodawanie:
- Obydwie W0 i aktualizacja ΔW (która jest iloczynem B i A) są mnożone przez ten sam wejście (oznaczone jako x).
- Wyniki tych mnożeń są następnie dodawane.
- Proces ten jest podsumowany w równaniu: h=W0x+ΔWx=W0x+BAx. Tutaj, h reprezentuje ostateczny wynik po zastosowaniu aktualizacji do wejścia x.
W skrócie, ta metoda pozwala na bardziej wydajny sposób aktualizacji dużej macierzy wag, reprezentując aktualizacje za pomocą niskiej rangi dekompozycji, co może być korzystne pod względem wydajności obliczeniowej i użycia pamięci.
Inicjacja i skalowanie:
Podczas trenowania modeli, sposób inicjacji parametrów może znacznie wpłynąć na wydajność i skuteczność procesu uczenia. W kontekście naszej aktualizacji macierzy wag za pomocą A i B:
- Inicjacja macierzy A i B:
- Macierz A: Ta macierz jest inicjowana losowymi wartościami Gaussa, znanymi również jako rozkład normalny. Racja za tym, aby użyć inicjacji Gaussa, jest złamanie symetrii: różne neurony w tej samej warstwie będą uczyć się różnych cech, gdy mają różne początkowe wagi.
- Macierz B: Ta macierz jest inicjowana zerami. Dzięki temu aktualizacja ΔW=BA zaczyna się od zera na początku trenowania. Zapewnia to, że nie ma nagłej zmiany w zachowaniu modelu na początku, pozwalając modelowi stopniowo dostosowywać się, gdy B uczy się odpowiednich wartości podczas trenowania.
- Skalowanie wyjścia z ΔW:
- Po obliczeniu aktualizacji ΔW, jej wyjście jest skalowane przez współczynnik rα gdzie α jest stałą. Dzięki skalowaniu, kontrolowany jest zakres aktualizacji.
- Skalowanie jest szczególnie istotne, gdy ranga r ulega zmianie. Na przykład, jeśli zdecydujesz się zwiększyć rangę w celu uzyskania większej dokładności (kosztem obliczeń), skalowanie zapewnia, że nie musisz dostosowywać wielu innych hiperparametrów w tym procesie. Zapewnia to pewien poziom stabilności modelu.
Praktyczny wpływ LoRA
LoRA wykazała swój potencjał w dostrajaniu LLM do określonych stylów artystycznych w sposób wydajny przez społeczność AI. Było to szczególnie uwidocznione w adaptacji modelu do naśladownictwa stylu artystycznego Greg Rutkowski.
Jako podkreślone w dokumencie z GPT-3 175B jako przykład. Posiadanie indywidualnych instancji dostrajanych modeli z 175B parametrów każdy jest dość kosztowne. Ale z LoRA, liczba trenowalnych parametrów maleje o 10 000 razy, a użycie pamięci GPU jest zmniejszone do jednej trzeciej.
Metodologia LoRA nie tylko stanowi znaczący krok w kierunku uczynienia LLM bardziej dostępnymi, ale także podkreśla potencjał zwiększenia praktycznego zastosowania w dziedzinie AI. Poprzez złagodzenie barier obliczeniowych i ułatwienie bardziej wydajnego procesu adaptacji modelu, LoRA jest gotowa odegrać kluczową rolę w szerszym przyjęciu i wdrożeniu LLM w scenariuszach świata rzeczywistego.
QLoRA (Zkwantyzowana)
Podczas gdy LoRA jest przełomem w redukowaniu potrzeb magazynowych, nadal wymaga potężnego GPU do załadowania modelu do trenowania. Tutaj pojawia się QLoRA, czyli Zkwantyzowana LoRA, łącząc LoRA z kwantyzacją w celu uzyskania bardziej inteligentnego podejścia.
Zwykle parametry wag są przechowywane w formacie 32-bitowym (FP32), co oznacza, że każdy element macierzy zajmuje 32 bity miejsca. Wyobraź sobie, gdybyśmy mogli zmieścić te same informacje w zaledwie 8 lub nawet 4 bitach. To jest rdzeń kwantyzacji. Kwantyzacja odnosi się do procesu mapowania ciągłych, nieskończonych wartości na mniejszy zestaw skończonych, dyskretnych wartości. W kontekście LLM, odnosi się to do procesu konwersji wag modelu z wyższej precyzji typów danych na niższe precyzje.
Oto prostsze podsumowanie QLoRA:
- Początkowa kwantyzacja: Najpierw, duży model językowy (LLM) jest zkwantyzowany do 4 bitów, znacznie redukując ślad pamięci.
- Trenowanie LoRA: Następnie, trenowanie LoRA jest przeprowadzane, ale w standardowej precyzji 32-bitowej (FP32).
Teraz możesz się zastanawiać, dlaczego wracać do 32 bitów na trenowanie po zmniejszeniu do 4 bitów? Cóż, aby skutecznie trenować adaptery LoRA w FP32, wagi modelu muszą również wrócić do FP32. To przejście tam i z powrotem jest robione w inteligentny, krok-po-kroku sposób, aby uniknąć przytłoczenia pamięci GPU.
LoRA znajduje swoje praktyczne zastosowanie w bibliotece Unite.AI Parameter Efficient Fine-Tuning (PEFT), upraszczając jej wykorzystanie. Dla tych, którzy chcą używać QLoRA, jest dostępna poprzez połączenie bibliotek bitsandbytes i PEFT. Dodatkowo, biblioteka Unite.AI Transformer Reinforcement Learning (TRL) library ułatwia nadzorowane dostrajanie z zintegrowanym wsparciem dla LoRA. Razem, te trzy biblioteki zapewniają niezbędne narzędzie do dostrajania wybranego pre-trenowanego modelu, umożliwiając generowanie przekonywujących i spójnych opisów produktów przy określonych instrukcjach atrybutów.
Po dostrajaniu z QLoRA, wagi muszą wrócić do formatu o wysokiej precyzji, co może prowadzić do utraty dokładności i braku optymalizacji w celu przyspieszenia procesu.
Zaproponowanym rozwiązaniem jest podzielenie macierzy wag na mniejsze segmenty i zastosowanie kwantyzacji oraz niskiej rangi adaptacji do każdej grupy indywidualnie. Nowa metoda, nazwana QA-LoRA, próbuje połączyć korzyści kwantyzacji i niskiej rangi adaptacji, utrzymując proces efektywny i model skuteczny dla pożądanych zadań.
Podsumowanie
W tym artykule dotknęliśmy wyzwań stawianych przez ich ogromny rozmiar parametrów. Zanurzyliśmy się w tradycyjnych praktykach dostrajania i ich związanych wymagań obliczeniowych i finansowych. Istotą LoRA leży w jej zdolności do modyfikowania pre-trenowanych modeli bez ponownego trenowania ich w całości, zmniejszając tym samym liczba trenowalnych parametrów i czyniąc proces adaptacji bardziej efektywnym.
Zajrzeliśmy również krótko do Zkwantyzowanej LoRA (QLoRA), połączenia LoRA i Kwantyzacji, które redukuje ślad pamięci modelu, zachowując jednocześnie niezbędną precyzję do trenowania. Z tymi zaawansowanymi technikami, praktycy są teraz wyposażeni w potężne biblioteki, ułatwiające łatwiejsze przyjęcie i wdrożenie LLM w szerokim spektrum scenariuszy świata rzeczywistego.
Te strategie są zaprojektowane, aby balansować pomiędzy uczynieniem LLM adaptowalnymi dla konkretnych zadań a zapewnieniem, że procesy dostrajania i wdrożenia nie są nadmiernie wymagające pod względem zasobów obliczeniowych i magazynowych.




















