AI-modellen en platforms

UltraFastBERT: Een introductie tot exponentieel sneller taalmodelleren

mm
Voeg Unite.AI toe aan je voorkeursbronnen op Google

Taalmodellen en generatieve AI, bekend om hun mogelijkheden, zijn een hot topic in de AI-industrie. Wereldwijde onderzoekers verbeteren hun effectiviteit en mogelijkheden. Deze systemen, meestal diepe leermodellen, worden vooraf getraind op uitgebreide gelabelde gegevens, waarbij neurale netwerken voor zelfaandacht worden geïntegreerd. Ze gebruiken verschillende lagen – feedforward, recurrent, embedded en attention – om invoertekst te verwerken en relevante uitvoer te produceren.

Meestal bevatten de feedforward-lagen van grote taalmodellen de meeste parameters. Studies tonen aan dat deze modellen slechts een fractie van de beschikbare neuronen gebruiken voor uitvoerberekening tijdens inferentie.

Dit artikel introduceert UltraFastBERT, een BERT-gebaseerd kader dat overeenkomt met de effectiviteit van toonaangevende BERT-modellen, maar slechts 0,3% van de neuronen gebruikt tijdens inferentie, specifiek 12 van de 4095 neuronen in elke laag. We zullen de architectuur, functionaliteit en resultaten van UltraFastBERT onderzoeken. Laten we beginnen.

UltraFastBERT: Een introductie tot exponentieel sneller taalmodelleren

Traditioneel gebruikt een taalmodel verschillende componenten om zichzelf uit te rusten met inhoudsgeneratie-mogelijkheden, waaronder feedforward-lagen, recurrente lagen, embedded lagen en attention-lagen. Deze componenten zijn verantwoordelijk voor het leren van patronen tijdens de training en produceren uiteindelijk accurate uitvoer op basis van de invoerteksten. Elke van deze componenten heeft enkele parameters, en in taalmodellen wordt een groot deel van deze parameters in beslag genomen door de feedforward-lagen. Echter, deze feedforward-lagen gebruiken niet 100% van de beschikbare neuronen om uitvoer te genereren voor elke invoer tijdens interferentie, wat leidt tot verspilling van resources die complexiteit, berekeningstijd en berekeningskosten verhogen.

In essentie is het UltraFastBERT-kader een variant van het BERT-kader, gebaseerd op dit concept, en vervangt feedforward-lagen met snellere feedforward-netwerken in zijn architectuur, wat uiteindelijk resulteert in het UltraFastBERT-kader dat slechts 0,3% van de beschikbare neuronen gebruikt en resultaten levert die vergelijkbaar zijn met BERT-modellen van vergelijkbare grootte en trainingsproces, vooral op downstream-taken. Door zijn ontwerpimplementaties zijn de tussenliggende lagen in het UltraFastBERT-kader exponentieel sneller.

Gegeven een snel feedforward (FFF) netwerk en een feedforward (FF) netwerk, elk met n aantal neuronen, is de tijdcomplexiteit van een voorwaartse pas in een feedforward netwerk O(n), terwijl de tijdcomplexiteit O(log2n) is voor een snel feedforward netwerk, en het verschil in tijdcomplexiteit is voornamelijk te wijten aan het feit dat in een snel feedforward netwerk de neuronen zijn georganiseerd in een gebalanceerde binaire boom, en wanneer de invoer wordt verstrekt, voert het netwerk slechts één tak van de boom conditioneel uit. Bovendien leidt het uitvoeren van interferentie op een snel feedforward netwerk tot CMM of Conditionele Matrix Multiplicatie, waarbij de invoerrijen dot met de natuurlijke gewichtkolommen individueel, en de uitvoer van de vorige dot-productoperatie bepaalt het gewicht van de kolommen om door te gaan. Als gevolg daarvan gebruikt het netwerk alle neuronen slechts voor een paar invoeren, en geen enkele invoer vereist meer dan een paar neuronen om door het netwerk te worden verwerkt. De CMM-dotproduct contrasteert met de DMM of Dense Matrix Multiplicatie die de dotproduct van alle invoeren met alle gewichtkolommen berekent.

Om het samen te vatten, is UltraFastBERT een BERT-gebaseerd kader dat resultaten levert die vergelijkbaar zijn met die van toonaangevende BERT-taalmodellen, die

  1. Slechts 0,3% van de beschikbare neuronen gebruikt tijdens de interferentiefase, en slechts 12 neuronen activeert van de in totaal 4095 neuronen voor elke interferentie-laag.
  2. Sterke prestaties levert die vergelijkbaar zijn met die van toonaangevende BERT-modellen door het implementeren van fine-tuning-strategieën op downstream-taken.
  3. Een native implementatie biedt van de CMM of Conditionele Matrix Multiplicatie die de basis vormt voor het snelle feedforward netwerk, en uiteindelijk leidt tot een 78x versnelling van de prestaties in vergelijking met de native geoptimaliseerde DMM of Dense Matrix Multiplicatie.

Feed Forward Neural Netwerken

Een feedforward neuronaal netwerk is een van de meest rechttoe rechtaan kunstmatige neurale netwerken die informatie alleen in de voorwaartse richting verplaatst, van de invoerknopen naar de uitvoerknopen via verborgen knopen. Een van de belangrijkste hoogtepunten van een snel feedforward neuronaal netwerk is dat er geen lussen of cycli in dergelijke netwerken zijn, en ze zijn eenvoudiger te construeren in vergelijking met RNN of Recurrent Neurale Netwerken, en CNN of Conventionele Neurale Netwerken. De architectuur van een snel feedforward neuronaal netwerk bestaat uit drie componenten, namelijk invoerlagen, verborgen lagen en uitvoerlagen, en elke laag bestaat uit eenheden genaamd neuronen, en elke laag is verbonden met de andere met behulp van gewichten.

De neuronen in de invoerlagen ontvangen invoer en doorsturen deze naar de volgende laag. Het aantal neuronen in elke invoerlaag wordt bepaald door de dimensie van de invoergegevens. Vervolgens hebben we de verborgen lagen die niet worden blootgesteld aan de invoer of de uitvoer, en ze zijn verantwoordelijk voor de noodzakelijke berekeningen. De neuronen in elke verborgen laag nemen de gewogen som van de uitvoer van de vorige laag, passen een activatiefunctie toe en geven het resultaat door aan de volgende laag, en het proces herhaalt zich. Ten slotte hebben we de uitvoerlaag die de uitvoer produceert voor de gegeven invoer. Elke neuron in elke laag van een snel feedforward netwerk is verbonden met elke neuron in de volgende laag, waardoor FFF neurale netwerken een volledig verbonden netwerk vormen. Gewichten worden gebruikt om de sterkte van de verbinding tussen de neuronen te vertegenwoordigen, en het netwerk werkt deze gewichten bij om patronen te leren door de gewichten bij te werken op basis van de fout die optreedt in de uitvoer.

Verder zijn er twee belangrijke fasen in de werking van een snel feedforward neuronaal netwerk: de feedforward-fase en de backpropagation-fase.

Feedforward Fase

In de feedforward-fase wordt de invoer aan het netwerk gevoerd, en het netwerk voert deze vervolgens door. De verborgen lagen berekenen de gewogen som van de invoer, en introduceren non-lineariteit in het model door de som van de invoer door een activatiefunctie zoals ReLu, Sigmoid en TanH te sturen. Het proces herhaalt zich totdat de gewichten de uitvoerlaag bereiken, en het model een voorspelling doet.

Backpropagation Fase

Nadat het model een voorspelling heeft gedaan, berekent het de fout tussen de gegenereerde uitvoer en de verwachte uitvoer. De fout wordt vervolgens teruggevoerd door het netwerk, en het netwerk gebruikt een gradient descent-optimalisatiealgoritme om de gewichten aan te passen in een poging de fout te minimaliseren.

UltraFastBERT: Model Architectuur en Werking

Het UltraFastBERT-kader is gebouwd op de crammedBERT-architectuur, en het UltraFastBERT-kader maakt gebruik van alle componenten van het crammedBERT-kader, behalve de aard van de tussenliggende lagen. In plaats daarvan vervangt het UltraFastBERT-kader de transformatie-encoder in de feedforward-netwerken in de tussenliggende lagen van het crammedBERT-kader door snelle feedforward-netwerken. Het UltraFastBERT-kader maakt de volgende wijzigingen in de oorspronkelijke feedforward-netwerken.

  1. Het kader verwijdert het verschil tussen blad- en niet-bladknopen door de GeLu-activatiefunctie over knopen te gebruiken en deze knopen uit te rusten met uitvoergewichten, en door uitvoer-vooringen te verwijderen.
  2. Ten slotte staat het kader meerdere snelle feedforward-netwerken toe in parallel door de tussenliggende uitvoerlagen gezamenlijk te berekenen. Het kader bereikt deze berekening door de som van de afzonderlijke bomen te nemen en vervolgens de som te presenteren als de tussenliggende uitvoerlaag.

Verder volgt het UltraFastBERT-kader in de training het trainingsproces dat wordt gebruikt door het crammedBERT-kader, dat het uitschakelen van de dropout in de voortraining omvat, en het gebruik van de 1-cyclus driehoekige leersnelheidsschema. Het model wordt vervolgens gefinetuned om zijn prestaties op een breed scala aan taken, voornamelijk van de GLUE-benchmark, te maximaliseren voor een totaal van 5 epochs.

Interferentie

Interferentie is een belangrijk onderdeel voor een snel feedforward netwerk, en deze snelle feedforward netwerken vormen een groot deel van grote taalmodellen, en ze zijn bekend om hun uitzonderlijke versnellingspotentieel. Om dit versnellingspotentieel te begrijpen, laten we een voorbeeld nemen van een van de meest geavanceerde taalmodellen, de GPT-3, waarin de feedforward-netwerken in elke transformatie-laag bestaan uit meer dan 49.100 neuronen. Als het getraind kan worden, kan een snel feedforward netwerk (maximale diepte van 15) het oorspronkelijke feedforward netwerk vervangen. Het geïntroduceerde snelle feedforward netwerk zal meer dan 65.000 neuronen hebben, maar het zal slechts 16 van deze neuronen gebruiken voor interferentie, wat neerkomt op ongeveer 0,03% van de beschikbare neuronen voor de GPT-3.

Algoritme en Compatibiliteit

Het UltraFastBERT-kader maakt gebruik van een recursief pseudocode-algoritme voor snelle feedforward-interferentie, en het algoritme wordt weergegeven in de onderstaande afbeelding.

Hier vertegenwoordigt B de batchgrootte, H vertegenwoordigt de breedte van de invoerlagen, en M vertegenwoordigt kolommen. Een andere belangrijke zorg bij het gebruik van een Computational Matrix Multiplication-benadering is of het de snelle feedforward-netwerken onverenigbaar maakt met het proces dat al in gebruik is voor Dense Matrix Multiplicatie en bestaande Deep Learning-kaders. Gelukkig maakt het gebruik van CMM de prestaties niet onverenigbaar, hoewel het de caching-complexiteit wel verhoogt.

Het is essentieel om op te merken dat als onderdeel van het snelle feedforward netwerk, single-threaded Dense Matrix Multiplicatie afhankelijk is van het uitvoeren van MAC- of Multiplicatie- en Accumulatie-instructies, en als gevolg daarvan zal het vervangen van DMM met CMM-benadering CPUs ten goede komen, omdat er minder MAC-instructies nodig zijn om de laaguitvoer per element te berekenen. Daarom, ondanks het feit dat het “neurale vertakking” als een toevoeging aan de geheugenoffset voor relevante pointers in het kader fungeert, wordt de instructie-branchpredictie in het UltraFastBERT-kader nooit volledig geactiveerd om de conditionaaliteit van de CMM te faciliteren, en laadt het alleen de relevante kolommen van de gewichtsmatrix individueel. Bovendien, aangezien het kader rij-kolom-dotproducten uitvoert, is de SIMD- of single-instructie-multiple-data-vektorparallelle verwerking nog steeds een optie om de interferentie-implementaties voor specifieke apparaten te versnellen.

UltraFastBERT: Prestaties en Resultaten

We zullen het hebben over de prestaties van het UltraFastBERT-kader voor fine-tuning en voor interferentie-taken om te analyseren hoe het kader presteert in vergelijking met toonaangevende taalmodellen.

Fine-Tuning Resultaten

De onderstaande figuur toont de prestaties van verschillende modellen op GLUE-dev-testgegevens. Hier vertegenwoordigt N het aantal neuronen dat beschikbaar is voor de kaders voor training, “Avg” vertegenwoordigt de gemiddelde score van alle taken.

Zoals duidelijk te zien is, het UltraFastBERT-kader dat getraind is op de A6000 GPU voor meer dan 24 uur, weet bijna 96% van de predictieve prestaties op GLUE-downstream-taken te behouden in vergelijking met het oorspronkelijke BERT-kader. Bovendien kan het ook worden gezien dat met een toename in de diepte van de snelle feedforward-netwerken, de prestaties van de kaders een daling vertonen, hoewel de meeste prestatieverslechtering optreedt voor de CoLa-taak. Als de CoLa-taak wordt genegeerd, keert het UltraFastBERT-kader een predictieve prestatiescore van ongeveer 98,6%.

Interferentie Resultaten

In dit gedeelte zullen we de prestaties van verschillende feedforward- of snelle feedforward-netwerken op interferentie-implementaties vergelijken, en deze implementaties zijn verdeeld over drie niveaus.

  1. In niveau 1-implementatie wordt de implementatie geconstrueerd met behulp van BLAS-niveau 1-routines, namelijk scalar-vectorproduct en vector-vector-dotproducten.
  2. In niveau 2 maken de implementaties gebruik van BLAS-niveau 2-routines, namelijk batch-gescalariseerde vectorproduct en batch-gematriceerde vector-dotproducten.
  3. In niveau 3 maken de implementaties gebruik van de non-batched BLAS-niveau 3-matrix-matrix-vermenigvuldigingsbenadering, en hoewel het de snelste implementatie is die beschikbaar is voor feedforward-netwerken, zijn dergelijke implementaties niet beschikbaar voor snelle feedforward-netwerken, omdat de bibliotheek de vector-niveau-sparcity van de Computational Matrix Multiplicatie niet ondersteunt.

Bovendien implementeert het UltraFastBERT-kader GPU-implementaties door gebruik te maken van aangepaste CUDA- of PyTorch-kernels.

De bovenstaande tabel vergelijkt de prestaties van het UltraFastBERT-kader met zijn voorgangers, de BERT-gebaseerde kaders, in termen van feedforward- en snelle feedforward-lagen, waar elke kolom de relatieve inferentie-snelle feedforward-over-feedforward-implementatie-speedups bevat wanneer ze gebruikmaken van dezelfde lineaire-algebraïsche routine-primitieven.

Echter, het is de moeite waard om op te merken dat de speedups die in de bovenstaande tabel worden gerapporteerd, bedoeld zijn voor “eerlijke vergelijkingen”, d.w.z. zowel de snelle feedforward- als feedforward-implementaties maken gebruik van identieke lineaire-algebraïsche routine-primitieven. Bovendien, op niveau 1 en niveau 2, zijn de implementaties van de snelle feedforward-netwerken in staat om de interferentie 48x en 78x sneller uit te voeren dan de snelste feedforward-implementatie respectievelijk.

Slotgedachten

In dit artikel hebben we het gehad over UltraFastBERT, een variant van het BERT-kader, gebaseerd op het concept dat feedforward-lagen niet 100% van de beschikbare neuronen gebruiken om uitvoer te genereren voor elke invoer tijdens interferentie, wat leidt tot verspilling van resources die complexiteit, berekeningstijd en berekeningskosten verhogen, en vervangt feedforward-lagen met snellere feedforward-netwerken in zijn architectuur, wat uiteindelijk resulteert in het UltraFastBERT-kader dat slechts 0,3% van de beschikbare neuronen gebruikt en resultaten levert die vergelijkbaar zijn met BERT-modellen van vergelijkbare grootte en trainingsproces, vooral op downstream-taken.

Door zijn ontwerpimplementaties zijn de tussenliggende lagen in het UltraFastBERT-kader exponentieel sneller. Bovendien is de sterke prestatie die wordt geleverd door het UltraFastBERT-kader een bewijs dat LLM’s sterke prestaties kunnen leveren door slechts een fractie van hun parameters te gebruiken voor individuele interferenties, aangezien het UltraFastBERT-kader slechts 0,3% van de beschikbare neuronen gebruikt tijdens interferentie, en toch een 78x versnelling van de prestaties weet te bereiken in vergelijking met interferentietijden.

Kunal Kejriwal is een backend‑engineer die zich specialiseert in Python, PostgreSQL, Redis en cloudinfrastructuur op GCP en AWS. Met drie jaar ervaring in het bouwen en opschalen van productiesystemen schrijft hij over AI‑infrastructuur, gedistribueerde systemen en de architectuur achter het inzetten van machine‑learning workloads.