Kunstmatige intelligentie

LoRa, QLoRA en QA-LoRA: Efficiënte aanpasbaarheid in grote taalmodellen door middel van lage-rangmatrixfactorisatie

mm
LoRA : Low-Rank Adaptation of Large Language Models

Grote taalmodellen (LLM’s) hebben een unieke niche gecreëerd door hun ongekende mogelijkheden om menselijke tekst te begrijpen en te genereren. De kracht van LLM’s kan worden herleid tot hun enorme omvang, die vaak miljarden parameters heeft. Terwijl deze enorme omvang hun prestaties stimuleert, creëert het tegelijkertijd uitdagingen, vooral wanneer het gaat om modelaanpassing voor specifieke taken of domeinen. De conventionele methoden voor het beheer van LLM’s, zoals het fijnafstemmen van alle parameters, vormen een zware computationele en financiële last, waardoor het een significante barrière vormt voor hun brede adoptie in real-worldtoepassingen.

In een eerder artikel zijn we ingegaan op het fijnafstemmen van grote taalmodellen (LLM’s) om ze aan te passen aan specifieke vereisten. We hebben verschillende fijnafstemmethoden onderzocht, zoals instructiegebaseerd fijnafstemmen, enkele taak fijnafstemmen en parameter-efficiënt fijnafstemmen (PEFT), elk met zijn unieke aanpak om LLM’s te optimaliseren voor verschillende taken. Centraal in de discussie stond de transformerarchitectuur, de ruggengraat van LLM’s, en de uitdagingen die worden opgeworpen door de computationele en geheugeneisen van het omgaan met een groot aantal parameters tijdens het fijnafstemmen.

Parameters in LLM

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

Het bovenstaande beeld vertegenwoordigt de omvang van verschillende grote taalmodellen, gerangschikt naar hun aantal parameters. Opvallend: PaLM, BLOOM, etc.

Vanaf dit jaar zijn er vooruitgangen geboekt die hebben geleid tot nog grotere modellen. Echter, het afstemmen van dergelijke gigantische, open-source modellen op standaardsystemen is onhaalbaar zonder gespecialiseerde optimalisatietechnieken.

Low-Rank Adaptation (LoRA) werd geïntroduceerd door Microsoft in dit artikel, met als doel deze uitdagingen te mitigeren en LLM’s meer toegankelijk en aanpasbaar te maken.

Het hart van LoRA ligt in zijn aanpak om modelaanpassing te bereiken zonder in te gaan op de complexiteit van het opnieuw trainen van het hele model. In tegenstelling tot traditioneel fijnafstemmen, waarbij elke parameter onderhevig is aan verandering, past LoRA een slimmere route toe. Het bevat de vooraf getrainde modelgewichten en introduceert trainbare rangdecompositiematrices in elke laag van de Transformer-architectuur. Deze aanpak vermindert aanzienlijk het aantal trainbare parameters, waardoor een efficiëntere aanpassingsproces ontstaat.

De evolutie van LLM-afstemstrategieën

Als we terugkijken op de reis van LLM-afstemming, kunnen we verschillende strategieën identificeren die door beoefenaars in de loop der jaren zijn gebruikt. Aanvankelijk lag de focus op het fijnafstemmen van de vooraf getrainde modellen, een strategie die een alomvattende verandering van modelparameters omvat om aan de specifieke taak te voldoen. Echter, naarmate de modellen in omvang en complexiteit toenamen, namen ook de computationele eisen van deze aanpak toe.

De volgende strategie die aandacht kreeg, was subset fijnafstemmen, een meer beperkte versie van zijn voorganger. Hierbij worden alleen een subset van de modelparameters fijn afgestemd, waardoor de computationele last enigszins wordt verlicht. Ondanks zijn verdiensten kon subset fijnafstemmen niet bijhouden met de groeisnelheid van LLM’s.

Toen beoefenaars verder gingen om efficiëntere wegen te verkennen, ontstond full fijnafstemmen als een rigoureuze maar belonende aanpak.

Inleiding tot LoRA

De rang van een matrix geeft ons een glimp van de dimensies die worden gecreëerd door zijn kolommen, bepaald door het aantal unieke rijen of kolommen.

  • Volledige-rangmatrix: De rang komt overeen met het kleinere aantal tussen zijn rijen of kolommen.
  • Lage-rangmatrix: Met een rang die aanzienlijk kleiner is dan zowel zijn rij- als kolomtelling, vat het minder kenmerken.

Nu, grote modellen begrijpen een breed begrip van hun domein, zoals taal in taalmodellen. Maar, het fijnafstemmen ervan voor specifieke taken vereist vaak alleen het benadrukken van een klein deel van deze begrippen. Hier schittert LoRA. Het suggereert dat de matrix die deze gewichtaanpassingen weergeeft een lage-rangmatrix kan zijn, waardoor het minder kenmerken vangt.

LoRA beperkt slim de rang van deze update-matrix door deze op te splitsen in twee kleinere rangmatrices. Dus, in plaats van het hele gewichtsmatrix te veranderen, verandert het alleen een deel ervan, waardoor het fijnafstemmen een efficiënter proces wordt.

LoRA toepassen op Transformers

LoRA helpt de trainingslast in neurale netwerken te minimaliseren door zich te concentreren op specifieke gewichtsmatrices. Onder de Transformer-architectuur zijn bepaalde gewichtsmatrices verbonden met de self-attention-mechanisme, namelijk Wq, Wk, Wv en Wo, naast twee meer in de Multi-Layer Perceptron (MLP)-module.

Transformers-architectuur

Transformers-architectuur

 

transformer attention heads

Transformer-attention heads

Wiskundige verklaring achter LoRA

Laten we de wiskunde achter LoRA uiteenzetten:

  1. Voorgeprogrammeerde gewichtsmatrix :
    • Het begint met een voorgeprogrammeerde gewichtsmatrix van dimensies . Dit betekent dat de matrix rijen en kolommen heeft.
  2. Lage-rang decompositie:
    • In plaats van de hele matrix rechtstreeks bij te werken, wat computationeel duur kan zijn, stelt de methode een lage-rang decompositie-aanpak voor.
    • De update tot kan worden weergegeven als een product van twee matrices: en .
      • heeft dimensies
      • heeft dimensies
    • De sleutelpunt hier is dat de rang veel kleiner is dan zowel als , waardoor een meer computationeel efficiënte weergave mogelijk is.
  3. Trainen:
    • Tijdens het trainingsproces blijft onveranderd. Dit wordt “bevriezen” van de gewichten genoemd.
    • Aan de andere kant zijn en de trainbare parameters. Dit betekent dat, tijdens de training, aanpassingen worden gemaakt aan de matrices en om de prestaties van het model te verbeteren.
  4. Vermenigvuldiging en optelling:
    • Beide en de update (die het product is van en ) worden vermenigvuldigd met dezelfde invoer (aangeduid als ).
    • De uitvoer van deze vermenigvuldigingen wordt vervolgens opgeteld.
    • Dit proces wordt samengevat in de vergelijking: Hier vertegenwoordigt de uiteindelijke uitvoer na het toepassen van de updates op de invoer .

Kort samengevat, deze methode stelt een efficiëntere manier voor om een grote gewichtsmatrix bij te werken door de updates weer te geven met behulp van een lage-rangdecompositie, wat gunstig kan zijn in termen van computationele efficiëntie en geheugengebruik.

LORA Animation

LORA

Initialisatie en schaling:

Bij het trainen van modellen kan de manier waarop we de parameters initialiseren de efficiëntie en effectiviteit van het leerproces aanzienlijk beïnvloeden. In de context van onze gewichtsmatrixupdate met en :

  1. Initialisatie van matrices en :
    • Matrix : Deze matrix wordt geïnitialiseerd met willekeurige Gaussische waarden, ook bekend als een normale verdeling. De reden achter het gebruik van Gaussische initialisatie is om de symmetrie te doorbreken: verschillende neuronen in dezelfde laag zullen verschillende kenmerken leren wanneer ze verschillende initiële gewichten hebben.
    • Matrix : Deze matrix wordt geïnitialiseerd met nullen. Door dit te doen, begint de update als nul aan het begin van de training. Het zorgt ervoor dat er geen abrupte verandering is in het gedrag van het model aan het begin, waardoor het model geleidelijk kan aanpassen terwijl geschikte waarden leert tijdens de training.
  2. Schaling van de uitvoer van :
    • Na het berekenen van de update , wordt de uitvoer ervan geschaald met een factor van waar een constante is. Door te schalen, wordt de grootte van de updates gecontroleerd.
    • De schaling is vooral cruciaal wanneer de rang verandert. Als je bijvoorbeeld besluit de rang te verhogen voor meer nauwkeurigheid (ten koste van berekening), zorgt de schaling ervoor dat je niet veel andere hyperparameters in het proces hoeft aan te passen. Het biedt een niveau van stabiliteit aan het model.

LoRA’s praktische impact

LoRA heeft zijn potentieel aangetoond om LLM’s efficiënt aan te passen aan specifieke artistieke stijlen door mensen uit de AI-gemeenschap. Dit werd opvallend tentoongesteld in de aanpassing van een model om de artistieke stijl van Greg Rutkowski na te bootsen.

LoRA vindt zijn praktische toepassing in de Hugging Face Parameter Efficient Fine-Tuning (PEFT) bibliotheek, waardoor het gebruik ervan wordt vereenvoudigd. Voor degene die QLoRA willen gebruiken, is het toegankelijk via een combinatie van de bitsandbytes en PEFT bibliotheken. Bovendien biedt de HuggingFace Transformer Reinforcement Learning (TRL) bibliotheek ondersteuning voor toezicht op fijnafstemmen met geïntegreerde ondersteuning voor LoRA. Samen bieden deze drie bibliotheken het essentiële gereedschap voor het fijnafstemmen van een geselecteerd vooraf getraind model, waardoor de generatie van overtuigende en samenhangende productbeschrijvingen mogelijk wordt wanneer specifieke attribuutinstructies worden gegeven.

Na het fijnafstemmen van QLoRA, moeten de gewichten terugkeren naar een hoge precisieformaat, wat kan leiden tot verlies van nauwkeurigheid en ontbreekt in optimalisatie voor het versnellen van het proces.

Een voorgestelde oplossing is om de gewichtsmatrix op te delen in kleinere segmenten en kwantisatie en lage-rangadaptatie toe te passen op elk segment afzonderlijk. Een nieuwe methode, genaamd QA-LoRA, probeert de voordelen van kwantisatie en lage-rangadaptatie te combineren, terwijl het proces efficiënt en het model effectief blijft voor de gewenste taken.

QLoRA (Gequantiseerd)

Terwijl LoRA een game-changer is in het verminderen van de opslagbehoefte, vraagt het nog steeds een zware GPU om het model te laden voor training. Hier komt QLoRA, of Gequantiseerde LoRA, in beeld, dat LoRA combineert met kwantisatie voor een slimmere aanpak.

Kwantisatie

Kwantisatie

Normaal gesproken worden gewichtparameters opgeslagen in een 32-bitsformaat (FP32), wat betekent dat elk element in de matrix 32 bits aan ruimte in beslag neemt. Stel je voor dat je dezelfde informatie zou kunnen comprimeren in slechts 8 of zelfs 4 bits. Dat is het kernidee achter QLoRA. Kwantisatie verwijst naar het proces van het toewijzen van continue oneindige waarden aan een kleinere verzameling discrete eindige waarden. In de context van LLM’s verwijst het naar het proces van het omzetten van de gewichten van het model van hogere precisiegegevenstypen naar lagere precisiegegevenstypen.

Kwantisatie in LLM

Kwantisatie in LLM

Hier is een eenvoudiger uitleg van QLoRA:

  1. Initiële kwantisatie: Eerst wordt het grote taalmodel (LLM) gekwantiseerd naar 4 bits, waardoor de geheugenvoetafdruk aanzienlijk wordt verkleind.
  2. LoRA-training: Vervolgens wordt LoRA-training uitgevoerd, maar in de standaard 32-bitsprecisie (FP32).

Nu vraag je je misschien af waarom je teruggaat naar 32 bits voor training nadat je hebt gekrompen tot 4 bits. Nou, om LoRA-adapters effectief te trainen in FP32, moeten de modelgewichten ook terugkeren naar FP32. Deze schakeling heen en weer gebeurt op een slimme, stap-voor-stap-manier om de GPU-geheugenbelasting te voorkomen.

LoRA vindt zijn praktische toepassing in de Hugging Face Parameter Efficient Fine-Tuning (PEFT) bibliotheek, waardoor het gebruik ervan wordt vereenvoudigd. Voor degene die QLoRA willen gebruiken, is het toegankelijk via een combinatie van de bitsandbytes en PEFT bibliotheken. Bovendien biedt de HuggingFace Transformer Reinforcement Learning (TRL) bibliotheek ondersteuning voor toezicht op fijnafstemmen met geïntegreerde ondersteuning voor LoRA. Samen bieden deze drie bibliotheken het essentiële gereedschap voor het fijnafstemmen van een geselecteerd vooraf getraind model, waardoor de generatie van overtuigende en samenhangende productbeschrijvingen mogelijk wordt wanneer specifieke attribuutinstructies worden gegeven.

Conclusie

In dit artikel hebben we de uitdagingen behandeld die worden opgeworpen door hun enorme parameters. We zijn ingegaan op traditionele fijnafstempraktijken en hun geassocieerde computationele en financiële eisen. Het hart van LoRA ligt in zijn vermogen om vooraf getrainde modellen te wijzigen zonder ze helemaal opnieuw te trainen, waardoor het aantal trainbare parameters wordt verlaagd en het aanpassingsproces kosten-efficiënter wordt.

We zijn ook ingegaan op Gequantiseerde LoRA (QLoRA), een combinatie van LoRA en kwantisatie, die de geheugenvoetafdruk van het model vermindert terwijl het de essentiële precisie voor training behoudt. Met deze geavanceerde technieken zijn beoefenaars nu uitgerust met een robuuste bibliotheek, waardoor de bredere adoptie en implementatie van LLM’s in real-worldscenario’s wordt vergemakkelijkt.

Matrix

Matrix

Deze strategieën zijn ontworpen om een balans te vinden tussen het maken van LLM’s aanpasbaar voor specifieke taken en het waarborgen dat de fijnafstemmings- en implementatieprocessen niet te zwaar zijn in termen van berekening en opslagbronnen.

Ik heb de afgelopen vijf jaar doorgebracht met het onderdompelen van mezelf in de fascinerende wereld van Machine Learning en Deep Learning. Mijn passie en expertise hebben me geleid om bij te dragen aan meer dan 50 diverse software-engineeringprojecten, met een bijzondere focus op AI/ML. Mijn voortdurende nieuwsgierigheid heeft me ook aangetrokken tot Natural Language Processing, een vakgebied dat ik graag verder wil verkennen.