Inteligență artificială

LoRa, QLoRA și QA-LoRA: Adaptabilitate eficientă în modelele de limbaj mare prin factorizarea matricelor de rang scăzut

mm
LoRA : Low-Rank Adaptation of Large Language Models

Modelele de limbaj mare (LLM) au creat un loc special, oferind capacități fără precedent în înțelegerea și generarea textului similar cu cel uman. Puterea LLM poate fi urmărită până la dimensiunea lor enormă, adesea având miliarde de parametri. În timp ce această scară enormă alimentează performanța lor, ea dă naștere și unor provocări, în special atunci când vine vorba de adaptarea modelului pentru sarcini sau domenii specifice. Căile convenționale de gestionare a LLM, cum ar fi reglarea fină a tuturor parametrilor, prezintă o povară computațională și financiară semnificativă, ceea ce constituie o barieră semnificativă pentru adoptarea lor pe scară largă în aplicații din lumea reală.

Într-un articol anterior, am explorat reglarea fină a Modelelor de Limbaj Mare (LLM) pentru a le adapta la cerințe specifice. Am examinat diverse metode de reglare fină, cum ar fi Reglarea fină bazată pe instrucțiuni, Reglarea fină pentru o singură sarcină și Reglarea fină eficientă din punct de vedere al parametrilor (PEFT), fiecare cu abordarea sa unică pentru optimizarea LLM pentru sarcini distincte. Centrală în discuție a fost arhitectura transformer, coloana vertebrală a LLM, și provocările ridicate de cerințele computaționale și de memorie pentru gestionarea unui număr vast de parametri în timpul reglării fine.

Parametrii în LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

Imaginea de mai sus reprezintă scala diferitelor modele de limbaj mare, sortate după numărul de parametri. Notabil: PaLM, BLOOM, etc.

În acest an, au existat progrese care au condus la modele și mai mari. Cu toate acestea, reglarea unor astfel de modele gigantice, deschise, pe sisteme standard este nefezabilă fără tehnici de optimizare specializate.

A intrat în scenă Adaptarea de rang scăzut (LoRA), introdusă de Microsoft în acest articol, cu scopul de a atenua aceste provocări și de a face LLM mai accesibile și adaptabile.

Esența LoRA constă în abordarea sa de adaptare a modelului fără a intra în detalii despre reantrenarea întregului model. În contrast cu reglarea fină tradițională, în care fiecare parametru este supus schimbărilor, LoRA adoptă o cale mai inteligentă. Ea îngheață greutățile modelului preantrenat și introduce matrice de rang scăzut antrenabile în fiecare strat al arhitecturii Transformer. Acest abordaj reduce drastic numărul de parametri antrenabili, asigurând un proces de adaptare mai eficient.

Evoluția strategiilor de reglare a LLM

Reflectând asupra călătoriei reglării LLM, se poate identifica mai multe strategii folosite de practicieni de-a lungul anilor. Inițial, atenția s-a concentrat pe reglarea fină a modelelor preantrenate, o strategie care implică o modificare cuprinzătoare a parametrilor modelului pentru a se potrivi sarcinii specifice. Cu toate acestea, pe măsură ce modelele au crescut în dimensiune și complexitate, au crescut și cerințele computaționale ale acestei abordări.

Următoarea strategie care a câștigat teren a fost reglarea fină a subsetului, o versiune mai restrânsă a predecesoarei sale. Aici, doar un subset de parametri ai modelului este reglat fin, reducând astfel povara computațională într-o anumită măsură. În ciuda meritelor sale, reglarea fină a subsetului nu a putut ține pasul cu rata de creștere a dimensiunii LLM.

Introducere în LoRA

Rangul unei matrice ne oferă o privire asupra dimensiunilor create de coloanele sale, fiind determinat de numărul de rânduri sau coloane unice pe care le are.

  • Matrice de rang complet: Rangul său corespunde numărului mai mic dintre rânduri și coloane.
  • Matrice de rang scăzut: Cu un rang semnificativ mai mic decât atât numărul de rânduri, cât și numărul de coloane, ea captează mai puține caracteristici.

Acum, modelele mari au o înțelegere largă a domeniului lor, cum ar fi limba în modelele de limbaj. Dar, reglarea fină a acestora pentru sarcini specifice adesea necesită evidențierea unei părți mici din aceste înțelegeri. Aici este unde LoRA strălucește. Ea sugerează că matricea care prezintă aceste ajustări de greutate poate fi una de rang scăzut, capturând astfel mai puține caracteristici.

LoRA limitează inteligent rangul matricei de actualizare prin divizarea acesteia în două matrice mai mici de rang. Astfel, în loc de a modifica întreaga matrice de greutate, ea modifică doar o parte a acesteia, făcând procesul de reglare fină mai eficient.

Aplicarea LoRA la Transformatori

LoRA ajută la minimizarea încărcării de antrenare în rețelele neuronale prin concentrarea asupra unor matrice de greutate specifice. În cadrul arhitecturii Transformer, anumite matrice de greutate sunt legate de mecanismul de atenție self, și anume Wq, Wk, Wv și Wo, plus două în modulul Perceptron Multistrat (MLP).

Arhitectura Transformatorilor

Arhitectura Transformatorilor

 

Capete de atenție ale transformatorului

Capete de atenție ale transformatorului

Explicație matematică a LoRA

Să descompunem matematica din spatele LoRA:

  1. Matricea de greutate preantrenată :
    • Începe cu o matrice de greutate preantrenată de dimensiuni . Acest lucru înseamnă că matricea are rânduri și coloane.
  2. Descompunerea de rang scăzut:
    • În loc de a actualiza direct întreaga matrice , care poate fi computațional scump, metoda propune o abordare de descompunere de rang scăzut.
    • Actualizarea la poate fi reprezentată ca produsul a două matrice: și .
      • are dimensiuni
      • are dimensiuni
    • Punctul cheie aici este că rangul este mult mai mic decât atât , cât și , ceea ce permite o reprezentare mai eficientă din punct de vedere computațional.
  3. Antrenare:
    • În timpul procesului de antrenare, rămâne neschimbat. Acest lucru se numește “înghețarea” greutăților.
    • Pe de altă parte, și sunt parametrii antrenabili. Acest lucru înseamnă că, în timpul antrenării, se fac ajustări la matricele și pentru a îmbunătăți performanța modelului.
  4. Înmulțire și adunare:
    • Atât , cât și actualizarea (care este produsul și ) sunt înmulțite cu același intrare (notat cu ).
    • Rezultatele acestor înmulțiri sunt apoi adunate împreună.
    • Acest proces este rezumat în ecuația: Aici, reprezintă ieșirea finală după aplicarea actualizărilor la intrarea .

În esență, această metodă permite o modalitate mai eficientă de actualizare a unei matrice de greutate mari prin reprezentarea actualizărilor utilizând o descompunere de rang scăzut, ceea ce poate fi benefic din punct de vedere al eficienței computaționale și al utilizării memoriei.

LORA

LORA

Inițializare și scalare:

Atunci când se antrenează modele, modul în care se inițializează parametrii poate afecta semnificativ eficiența și eficacitatea procesului de învățare. În contextul actualizării matricei de greutate utilizând și :

  1. Inițializarea matricelor și :
    • Matricea : Această matrice este inițializată cu valori gaussiene aleatoare, cunoscute și sub numele de distribuție normală. Rațiunea din spatele utilizării inițializării gaussiene este de a rupe simetria: neuroni diferiți din același strat vor învăța caracteristici diferite atunci când au greutăți inițiale diferite.
    • Matricea : Această matrice este inițializată cu zero. Prin aceasta, actualizarea începe ca zero la începutul antrenării. Acest lucru asigură că nu există o schimbare bruscă în comportamentul modelului la început, permițând modelului să se adapteze treptat pe măsură ce învață valori adecvate în timpul antrenării.
  2. Scalarea ieșirii din :
    • După calcularea actualizării , ieșirea acesteia este scalată cu un factor de unde este o constantă. Prin scalare, magnitudinea actualizărilor este controlată.
    • Scalarea este deosebit de importantă atunci când rangul se schimbă. De exemplu, dacă decideți să creșteți rangul pentru o precizie mai mare (la costul computațional), scalarea asigură că nu trebuie să ajustați mulți alți hiperparametri în proces. Acest lucru oferă o anumită stabilitate modelului.

Impactul practic al LoRA

LoRA a demonstrat potențialul său de a regla LLM pentru stiluri artistice specifice în mod eficient de către comunitatea de inteligență artificială. Acest lucru a fost remarcat în special în adaptarea unui model pentru a imita stilul artistic al lui Greg Rutkowski.

Pe măsură ce modelele devin mai mari, este din ce în ce mai dificil să le reglăm individual pentru sarcini specifice. De exemplu, având instanțe individuale de modele reglate fin pentru 175B de parametri fiecare este foarte costisitor. Dar, cu LoRA, parametrii antrenabili scad de 10.000 de ori, iar utilizarea memoriei GPU este redusă la o treime.

Impactul LoRA asupra reglării fine a GPT-3

Impactul LoRA asupra reglării fine a GPT-3

Metodologia LoRA nu numai că reprezintă un pas semnificativ spre a face LLM mai accesibile, dar subliniază și potențialul de a reduce decalajul dintre progresele teoretice și aplicațiile practice în domeniul inteligenței artificiale. Prin atenuarea obstacolelor computaționale și facilitarea unui proces de adaptare a modelului mai eficient, LoRA este poziționată să joace un rol cheie în adoptarea și implementarea LLM în diverse scenarii din lumea reală.

QLoRA (Cuantificat)

În timp ce LoRA este un jucător de schimbare în reducerea necesităților de stocare, ea încă necesită o cantitate semnificativă de putere de calcul pentru a încărca modelul pentru antrenare. Aici intervine QLoRA, sau LoRA cuantificat, care combină LoRA cu cuantificarea pentru o abordare mai inteligentă.

Cuantificare

Cuantificare

În mod normal, parametrii de greutate sunt stocați într-un format de 32 de biți (FP32), ceea ce înseamnă că fiecare element din matrice ocupă 32 de biți. Imaginați-vă dacă am putea să strângem aceeași informație în doar 8 sau chiar 4 biți. Acesta este nucleul QLoRA. Cuantificarea se referă la procesul de mapare a valorilor continue infinite la un set mai mic de valori finite discrete. În contextul LLM, ea se referă la procesul de conversie a greutăților modelului de la tipuri de date de înaltă precizie la cele de joasă precizie.

Cuantificare în LLM

Cuantificare în LLM

Iată o descriere mai simplă a QLoRA:

  1. Cuantificare inițială: Mai întâi, Modelul de Limbaj Mare (LLM) este cuantificat la 4 biți, reducând semnificativ amprenta de memorie.
  2. Antrenare LoRA: Apoi, se efectuează antrenarea LoRA, dar în precizia standard de 32 de biți (FP32).

Acum, vă puteți întreba de ce să reveniți la 32 de biți pentru antrenare după ce ați redus la 4 biți. Pentru a antrena eficient adaptatorii LoRA în FP32, greutățile modelului trebuie să revină și ele la FP32. Acest schimb între 4 biți și 32 de biți se face într-un mod inteligent, pas cu pas, pentru a evita supraîncărcarea memoriei GPU.

LoRA găsește aplicații practice în biblioteca de Reglare fină eficientă din punct de vedere al parametrilor (PEFT) de la Hugging Face, simplificând utilizarea sa. Pentru cei care doresc să utilizeze QLoRA, aceasta este accesibilă prin combinarea bibliotecilor bitsandbytes și PEFT. De asemenea, biblioteca de Învățare a Transformatorilor prin Reforzare (TRL) de la HuggingFace facilitează reglarea fină supravegheată cu suport integrat pentru LoRA. Împreună, aceste trei biblioteci oferă instrumentarul esențial pentru reglarea fină a unui model preantrenat selectat, permițând generarea de descrieri de produse convingătoare și coerente atunci când sunt furnizate instrucțiuni specifice de atribut.

Post-reglare fină de la QLoRA, greutățile trebuie să revină la un format de înaltă precizie, ceea ce poate duce la pierderea de precizie și lipsa de optimizare pentru accelerarea procesului.

O soluție propusă este de a grupa matricea de greutate în segmente mai mici și de a aplica cuantificarea și adaptarea de rang scăzut la fiecare grup în mod individual. O metodă nouă, numită QA-LoRA, încearcă să combine beneficiile cuantificării și adaptării de rang scăzut, menținând procesul eficient și modelul eficace pentru sarcinile dorite.

Concluzie

În acest articol, am atins provocările ridicate de dimensiunea enormă a parametrilor. Am explorat practicile tradiționale de reglare fină și cerințele computaționale și financiare asociate. Esența LoRA constă în capacitatea sa de a modifica modele preantrenate fără a le reantrena în întregime, reducând astfel parametrii antrenabili și făcând procesul de adaptare mai rentabil.

De asemenea, am explorat pe scurt QLoRA (LoRA cuantificat), o combinație a LoRA și cuantificării, care reduce amprenta de memorie a modelului, menținând în același timp precizia esențială pentru antrenare. Cu aceste tehnici avansate, practicienii sunt acum echipați cu biblioteci robuste, facilitând adoptarea și implementarea LLM într-o gamă largă de scenarii din lumea reală.

Matrice

Matrice

Aceste strategii sunt create pentru a echilibra între a face LLM adaptabile pentru sarcini specifice și a asigura că procesele de reglare fină și implementare nu sunt prea solicitante din punct de vedere al calculului și resurselor de stocare.

Am petrecut ultimii cinci ani scufundându-mă în lumea fascinantă a Machine Learning și Deep Learning. Pasinea și expertiza mea m-au condus să contribui la peste 50 de proiecte diverse de inginerie software, cu un focus deosebit pe AI/ML. Curiozitatea mea în continuare m-a atras și spre Natural Language Processing, un domeniu pe care sunt dornic să îl explorez mai departe.