• Megjelenési dátum
    Február 18, 2025
  • Megosztás

Ebben a blogbejegyzésben a LoRA (Low-Rank Adaptation Of Large Language Models) módszer részleteiről és alapelveiről fogok beszélni, miközben végigmegyek. a papír. A cikk fő célja egy olyan új struktúra bemutatása, amely csökkenti a modell finomhangolási költségeit, miközben növeli a teljesítményét. A finomhangoló műveletek egy ideje fontos helyet foglalnak el a természetes nyelvi feldolgozás tanulmányozásában. Tegyük fel, hogy van egy képzett modellje, és szeretné bővíteni tudását. Ezt finomhangolással is megteheti, anélkül, hogy a modellt a semmiből kioktaná.

Tegyük fel, hogy egy modellnek n paramétere van a betanítás után, és finomítani kell rajta. Ha teljes finomhangolási módszert használ, a modell összes paramétere frissülni fog. Ha olyan modelleket vesszük figyelembe, amelyek több milliárd paraméterrel rendelkeznek, az összes paraméter frissítése idő- és tárolási problémákat okoz. A cikkben a jobb vagy paron teljesítményű eredményeket hangsúlyozzuk a RoBERTa, DeBERTa, GPT-2 és GPT-3 modelleknél a LoRA módszerrel.

A cikk megemlíti, hogy a LoRA módszert Li et. tanulmányai ihlették. al (2018a) és Aghajanyan et al. (2020). Ezek a tanulmányok hangsúlyozzák, hogy a túlparaméterezett modellek sikere valójában az alacsony belső dimenzión alapul. Ez lett az a pont, amely a LoRA módszer hipotézisét alakította.

A LoRA módszer egy teljes mértékben a rangfaktorizáción alapuló vizsgálat. Ebben a módszerben két szekvenciális mátrixot adunk párhuzamosan a neurális hálózatok néhány sűrű rétegéhez, amint az 1. ábrán látható. Ezeket a szekvenciális mátrixokat egy adott rangkonfiguráció képezi. Az alábbi ábra azt mutatja, hogyan néz ki egy sűrű réteg a szekvenciális rangmátrixok hozzáadása után. A bemeneti változók mind az eredeti előképzési súlymátrixon, mind a szekvenciális mátrixok első mátrixán keresztül kerülnek elküldésre. Ezután a kimeneti értékeket a két párhuzamos mátrix kimenetének összegzésével számítjuk ki.

 

Ekran Resmi 2024-12-26 15.25.36.png
Forrás: https://arxiv.org/abs/2106.09685

A LoRA módszer

A neurális hálózatok sok sűrű réteggel rendelkeznek, amelyek mátrixszorzást hajtanak végre. A súlymátrixok ezekben a rétegekben valójában teljes rangú mátrixok (minden sor és oszlop független). De Aghajanyan et al. említett lapjukban hogy az előre betanított nyelvi modelleknek alacsony az „instrisz dimenziója”. Ezen a vonatkozáson belül alakította ki a LoRA hipotézist. Így a LoRA hipotézis az lett, hogy a modellek a súlymátrix kisdimenziós változásaival tanulhatnak az adott feladathoz való alkalmazkodás során.

A mátrix frissítései mátrixokon keresztül történtek 

Ekran_Resmi_2024_12_26_15_32_57_6efdebb733.png

alacsony rangú választja el. Itt B egy dxr mátrix, A egy rxk mátrix, míg r (rang) sokkal kisebb, mint d és k. A finomhangolás során a rendszer megakadályozza a Wo gradiens frissítéseit. Mind a Wo, mind a ∆W mátrixokat megszorozzuk ugyanazokkal a bemeneti értékekkel, és az eredményeket összeadjuk, és létrejön a h= w0 + ∆Wx = w0 +BAx kimenet.

A képzés elején véletlenszerű Gauss-inicializálást alkalmaztak az A mátrixértékeknél és teljes nulla inicializálást a B mátrixértékeknél. Más szavakkal, a BA az elején egyenlő nullával.

LoRA alkalmazás a transzformátor építészetben

4 súlymátrix van Wq, Wk, Wv, Wo az önfigyelő modulban és 2 súlymátrix az MLP modulban a transzformátor architektúrában. A LoRA adaptáció során lefagyasztották a súlyokat az MLP modulban, és a módszert figyelmi súlyokra alkalmazták, hogy az edzés egyszerű legyen.

Előnyök   

  • A LoRA által nyújtott legnagyobb kényelem a memória- és tárhelyhasználat. Például a cikkben megemlítik, hogy egy Ádámmal betanított nagy transzformátor modellnél a VRAM-használat akár 2/3-al is csökken, ha << r d. Ennek az az oka, hogy a befagyasztott paraméterek optimalizáló állapotai nem maradnak meg.
  • A GPT-3 175B modell esetében a VRAM-fogyasztás 1.2 TB-ról 350 GB-ra csökkent.
  • Abban a forgatókönyvben, ahol r=4, és csak az érték és a lekérdezési mátrixok súlya módosult, az ellenőrzőpont mérete 350 GB-ról 35 MB-ra csökkent. Ez lehetővé tette a képzést kevesebb GPU-val.
  • Ráadásul, mivel a legtöbb paraméterben nincs gradiens frissítés, a GPT-25 3B LoRA-val való betanítása során 175%-os gyorsulást értek el a teljes finomhangolási folyamathoz képest.

A cikk azt is megemlíti, hogy ha a finomhangolási folyamat egy másik nyelvhez szükséges, akkor a teljes modellt kell használni a LoRA helyett.

További ismeretek

Mi az a rang

Rang a mátrix lineárisan független oszlopainak vagy sorainak száma. Tegyük fel, hogy van egy n oszlopos mátrixunk, és minden oszlop független egymástól, akkor azt mondhatjuk, hogy ennek a mátrixnak az oszloprangja n. Ismét, ha egy n soros mátrix minden sora független egymástól, akkor ismét elmondhatjuk, hogy a mátrix sorrangja n.

A mátrix sor- és oszloprangsorának egyenlőnek kell lennie. Példaként tekinthetjük az alábbi mátrixot.

A mátrix = [[1,2,5], [2]]

Ha figyelmesen megnézzük a mátrixot, láthatjuk, hogy a 2. sor kétszerese az 1. sornak. Hasonlóképpen, a mátrix 2. és 3. oszlopa 2, illetve 5-szöröse az 1. oszlopnak. Más szóval, míg a mátrixban soronként ugyanazon a vonalon két vektor, egy másik soron pedig három különböző vektor található oszlopalapon, soronként és oszloponként csak egy egyedi vektor található. Ez azt jelenti, hogy a mátrix rangja 1.

A rang megkereséséhez a mátrixot echelon formájúvá alakítjuk, majd kiszámítjuk, hány sor áll legalább egy nullától eltérő értékből.

Mi az alacsony rangú mátrix

A mátrixokban a rang egyenlő vagy kisebb lehet az oszlopok vagy sorok számával. Azokat a mátrixokat, amelyek lineárisan független sorai vagy oszlopai kisebbek, mint a sorok vagy oszlopok aktuális száma, alacsony rangú mátrixoknak nevezzük. Azokat a mátrixokat, amelyekben minden sor vagy oszlop független, teljes rangú mátrixoknak nevezzük.

Mi az a rangfaktorizálás/dekompozíció

Egy r rangú mátrixot átírhatunk B=LR^T-re, ha L és R mátrixokra bontjuk. Itt L egy mxr dimenziójú mátrix, míg R^T egy rxn méretű mátrix. Ezt a folyamatot a rangbontás.

A rangfaktorizálás fontossága:

A rangfaktorizációs folyamat fontossága Lehetővé teszi, hogy egy mátrixot kisebb L és R mátrixokra osszanak fel, és kisebb helyen tartsuk őket. Ez azt jelenti, hogy tárolhatja B-t az L és R faktorok tárolásával. Ez a B tárolási követelményeit (m+n)r számra csökkenti, mn szám helyett. Itt érdemes még megemlíteni, hogy miután egy mátrixot felbontunk erre a két kis mátrixra, sok számítást lehet végezni a mátrixról anélkül, hogy ugyanazt a mátrixot újra előállítanánk. Emiatt, ha alacsony rangú mátrixszal foglalkozunk, a rangfaktorizálást mindig fontos első lépésnek tekintjük. A rangsorolást követően a számítások sokkal gyorsabban és kevesebb memória felhasználásával végezhetők el.

Továbbá

Az alacsony rangú mátrixokkal kapcsolatos részletesebb információkért olvassa el Ethan R. Epperly-t blog és a LoRA papír. Ezenkívül részletesen megvizsgálhatja a LoRA kódalapú alkalmazásait a webhelyen Microsoft/LoRA github adattár.

Gizem ABALI, okl. / Csapatvezető