AI-modeller og platforme

UltraFastBERT: En introduktion til eksponentielt hurtigere sprogmodellering

mm
Føj Unite.AI til dine foretrukne kilder på Google

Sprogmodeller og generative AI, kendt for deres evner, er et varmt emne i AI-industrien. Globale forskere forbedrer deres effektivitet og kapacitet. Disse systemer, typisk dybe læringmodeller, er forudtrænet på omfattende mærket data, der inkorporerer neurale netværk til selvopmærksomhed. De bruger forskellige lag – feedforward, rekurrent, indlejret og opmærksomhed – til at behandle indputtekst og producere relevante output.

De fleste store sprogmodellers feedforward-lag indeholder de fleste parametre. Studier viser, at disse modeller kun bruger en brøkdel af de tilgængelige neuroner til outputberegning under inferens.

Denne artikel introducerer UltraFastBERT, et BERT-baseret framework, der matcher effekten af førende BERT-modeller, men kun bruger 0,3% af neuronerne under inferens, specifikt 12 af 4095 i hvert lag. Vi vil udforske UltraFastBERTs arkitektur, funktionalitet og resultater. Lad os begynde.

UltraFastBERT: En introduktion til eksponentielt hurtigere sprogmodellering

Traditionelt set bruger en sprogmodel forskellige komponenter til at udstyre sig selv med indholdsgenereringsfunktioner, herunder feedforward-lag, rekurrente lag, indlejrede lag og opmærksomheds-lag. Disse komponenter er ansvarlige for at lære at genkende mønstre under træning og generere præcise output på baggrund af indputteksten. Hver af disse komponenter har nogle parametre, og i sprogmodeller er en stor del af disse parametre holdt af feedforward-lagene. Imidlertid bruger disse feedforward-lag ikke 100% af de tilgængelige neuroner til at generere output for hver indput under interferenstid, hvilket fører til spild af ressourcer, der øger kompleksitet, beregnings tid og beregningsomkostninger.

I sin kerne er UltraFastBERT-frameworket en variant af BERT-frameworket, bygger på dette koncept og erstatter feedforward-lag med hurtigere feedforward-netværk i sin arkitektur, hvilket resulterer i, at UltraFastBERT-frameworket kun bruger 0,3% af de tilgængelige neuroner, mens det leverer resultater, der er sammenlignelige med BERT-modeller af samme størrelse og træningsproces, især på downstream-opgaverne. Takket være sine designimplementeringer er de intermediate lag i UltraFastBERT-frameworket eksponentielt hurtigere.

Givet et hurtigt feedforward-netværk (FFF) og et feedforward-netværk (FF), hver med n antal neuroner, er tidskompleksiteten for en fremadgang i et feedforward-netværk O(n), mens tidskompleksiteten er O(log2n) for et hurtigt feedforward-netværk, og forskellen i tidskompleksitet skyldes primært, at i et hurtigt feedforward-netværk er neuronerne organiseret i en balanceret binær træ, og når indputten gives, udfører netværket kun én gren af træet betinget. Desuden resulterer udførelse af interferens på et hurtigt feedforward-netværk i CMM eller betinget matrixmultiplication, hvor indputrækkerne prikker med de naturlige vægtkolonner individuelt, og outputtet fra den foregående prikproduktoperation bestemmer vægten af kolonnerne til at fortsætte med. Resultatet er, at netværket kun bruger alle neuronerne for få indput, og ingen indput kræver mere end få neuroner til at blive behandlet af netværket. CMM-prikproduktet modsiger DMM eller tæt matrixmultiplication, der beregner prikproduktet af alle indput med alle vægtkolonner.

For at sammenfatte er UltraFastBERT et BERT-baseret framework, der leverer resultater, der er sammenlignelige med førende BERT-sprogmodeller, der

  1. Kun bruger 0,3% af de tilgængelige neuroner under interferenstid og engagerer kun 12 neuroner ud af i alt 4095 neuroner for hvert interferenslag.
  2. Leverer stærk præstation, der er sammenlignelig med førende BERT-modeller, ved at implementere finjusteringsstrategier på downstream-opgaver.
  3. Tilbyder en naturlig implementering af CMM eller betinget matrixmultiplication, der danner grundlaget for det hurtige feedforward-netværk, og resulterer i en 78-gangs hastighedsforøgning i forhold til interferenstider.

Feed Forward Neural Netværk

Et feedforward neuralnetværk er et af de mest direkte kunstige neuralnetværk, der flytter informationen kun i fremadretning, fra indputtnoderne til outputtnoderne via skjulte noder. En af de vigtigste højdepunkter ved et hurtigt feedforward neuralnetværk er, at der ikke er nogen løkker eller cykler i sådanne netværk, og de er simplere at konstruere i forhold til RNN eller rekurrente neuralnetværk og CNN eller konventionelle neuralnetværk. Arkitekturen af et hurtigt feedforward neuralnetværk består af tre komponenter, nemlig indputtlag, skjulte lag og outputlag, og hvert lag består af enheder kaldet neuroner, og hvert lag er forbundet til det andet med hjælp af vægte.

Neuronerne i indputtlagene modtager indput, og sender det videre til det næste lag. Antallet af neuroner i hvert indputlag bestemmes af dimensionen af indputdata. Herefter har vi de skjulte lag, der ikke er eksponeret for indput eller output, og de er ansvarlige for de nødvendige beregninger. Neuronerne i hvert skjult lag tager den vægtede sum af outputtet givet af det foregående lag, anvender en aktiveringsfunktion og sender resultatet til det næste lag, og processen gentager sig. Til sidst har vi outputlaget, der producerer outputtet for de givne indput. Hvert neuron i hvert lag af et hurtigt feedforward-netværk er forbundet med hvert neuron i det næste lag, hvilket gør FFF-neuralnetværk et fuldt forbundet netværk. Vægte bruges til at repræsentere styrken af forbindelsen mellem neuronerne, og netværket opdaterer disse vægte for at lære mønstre ved at opdatere vægtene på baggrund af fejlen, der opstår i outputtet.

Herefter er der to vigtige faser i arbejdet med et hurtigt feedforward neuralnetværk: feedforward-fasen og backpropagation-fasen.

Feedforward Fase

I feedforward-fasen gives indputten til netværket, og det udfører derefter en fremadgang. De skjulte lag beregner den vægtede sum af indputten og introducerer ikke-linearity i modellen ved at sende summen af indputten gennem en aktiveringsfunktion som ReLu, Sigmoid og TanH. Processen gentager sig, indtil vægtene når outputlaget, og modellen giver en forudsigelse.

Backpropagation Fase

Når modellen giver en forudsigelse, beregner den fejlen mellem den genererede output og den forventede output. Fejlen backpropageres herefter gennem netværket, og netværket anvender en gradient descent-optimeringsalgoritme til at justere vægtene i et forsøg på at minimere fejlen.

UltraFastBERT: Modelarkitektur og funktionsmåde

UltraFastBERT-frameworket er bygget på crammedBERT-arkitekturen, og UltraFastBERT-frameworket anvender alle komponenterne i crammedBERT-frameworket undtagen naturen af de intermediate lag. I stedet erstatter UltraFastBERT-frameworket transformer-encoderen i feedforward-netværkene i de intermediate lag af crammedBERT-frameworket med hurtige feedforward-netværk. UltraFastBERT-frameworket foretager følgende ændringer af de originale feedforward-netværk.

  1. Frameworket fjerner forskellen mellem blade og ikke-blade ved at anvende GeLu-aktiveringsfunktionen på tværs af noder og udstyre disse noder med outputvægte og fjerner outputforbud i sin helhed. Efterfølgende fastsætter frameworket bladstørrelsen til 1.
  2. Til sidst tillader frameworket multiple hurtige feedforward-netværkstræer i parallel ved at beregne de intermediate outputlag fælles. Frameworket opnår denne beregning ved at tage summen af de enkelte træer og derefter præsenterer summen som det intermediate outputlag.

Herefter følger UltraFastBERT-frameworket træningsproceduren, der er anvendt af crammedBERT-frameworket, der inkluderer deaktivering af dropout i fortræning og anvendelse af 1-cyklus triangel-læringsrate-skema. Modellen er derefter finjusteret til at maksimere dens præstation på en bred vifte af opgaver, primært GLUE-benchmark, i alt 5 epocher.

Interferens

Interferens er en vigtig del for et hurtigt feedforward-netværk, og disse hurtige feedforward-netværk i sig selv danner en stor del af store sprogmodeller, og de er kendt for deres exceptionelle accelerationspotentiale. For at forstå dette accelerationspotentiale, lad os tage et eksempel på en af de mest avancerede sprogmodeller, GPT-3, hvor feedforward-netværkene i hver transformer-lag består af over 49.100 neuroner. Hvis det er muligt at træne, kunne et hurtigt feedforward-netværk (maksimal dybde på 15) erstatte det originale feedforward-netværk. Det introducerede hurtige feedforward-netværk ville have over 65.000 neuroner, men det ville kun anvende 16 af disse neuroner til interferens, hvilket svarer til omtrent 0,03% af de neuroner, der er tilgængelige for GPT-3.

Algoritme og kompatibilitet

UltraFastBERT-frameworket anvender en rekursiv pseudokodealgoritme til hurtig feedforward-interferens, og algoritmen er afbildet i billedet nedenfor.

Her repræsenterer B batch-størrelsen, H repræsenterer bredden af indputtlagene, og M repræsenterer kolonner. En anden vigtig årsag til bekymring ved brug af en Computational Matrix Multiplication-tilgang er, om det gør de hurtige feedforward-netværk inkompatible med processen, der allerede er i brug for Dense Matrix Multiplication og eksisterende Deep Learning-frameworks. Heldigvis påvirker brugen af CMM ikke præstationen eller introducerer inkompatibilitet, selvom det øger caching-kompleksiteten.

Det er vigtigt at bemærke, at som en del af det hurtige feedforward-netværk, afhænger single-threaded Dense Matrix Multiplication af udførelse af MAC eller Multiplication and Accumulation-instruktioner, og resultaterne af, at DMM erstattes med CMM-tilgangen, vil være til fordel for CPU’er, da færre MAC-instruktioner er nødvendige for at beregne lag-output per element. Derfor, på trods af at det anvender en betingelse, der normalt er forbundet med branching, fungerer “neural branching” som en tilføjelse til hukommelsesoffset til relevante pege på frameworket. Derfor i UltraFastBERT-frameworket er instruction branch prediction aldrig fuldt engageret for at facilitere betingelsen af CMM, og kun loader de relevante kolonner af vægtmatrixen individuelt. Desuden, da frameworket udfører række-kolonne-dot-produkter, er SIMD eller single-instruction-multiple-data-vektor-parallellisering stadig en god mulighed for at accelerere interferensimplementeringer for bestemte enheder.

UltraFastBERT: Præstation og resultater

Vi vil tale om UltraFastBERT-frameworkets præstation for finjustering såvel som for interferensopgaver for at analysere, hvordan frameworket klarer sig i forhold til førende sprogmodeller.

Finjusteringsresultater

Følgende figur demonstrerer præstationen af forskellige modeller på GLUE-dev-testdatamængder. Her repræsenterer N antallet af neuroner, der er tilgængelige for frameworket til træning, “Avg” repræsenterer den gennemsnitlige score af alle opgaver.

Som det kan ses, klarer UltraFastBERT-frameworket, der er trænet på A6000-GPU i over 24 timer, at fastholde omtrent 96% af den prædiktive præstation på GLUE-downstream-opgaver i forhold til det originale BERT-framework. Desuden kan det også ses, at med en øgning i dybden af de hurtige feedforward-netværk, oplever frameworkets præstation en nedgang, selvom det meste af præstationsnedgangen kun sker for CoLa-opgaven. Hvis CoLa-opgaven ignoreres for en stund, returnerer UltraFastBERT-frameworket en prædiktiv præstationscore på omkring 98,6%.

Interferensresultater

I dette afsnit vil vi sammenligne præstationen af forskellige feedforward- eller hurtige feedforward-netværk på interferensimplementeringer, og disse implementeringer er fordelt på tre niveauer.

  1. På niveau 1 er implementeringen konstrueret ved hjælp af BLAS-niveau-1-rutiner, nemlig skalar-vektor-produkt og vektor-vektor-dot-produkter.
  2. På niveau 2 anvender implementeringerne BLAS-niveau-2-rutiner, nemlig batchede skalar-vektor-produkter og batchede matrix-vektor-dot-produkter.
  3. På niveau 3 anvender implementeringerne den ikke-batchede BLAS-niveau-3-matrix-matrix-multiplication-tilgang, og selvom det er den hurtigste implementering tilgængelig for feedforward-netværk, er sådanne implementeringer ikke tilgængelige for hurtige feedforward-netværk, da biblioteket ikke understøtter vektor-niveau-sparsethed af Computational Matrix Multiplication.

Desuden anvender UltraFastBERT-frameworket GPU-implementeringer ved hjælp af enten brugerdefineret CUDA eller PyTorch-kerner.

Den ovenstående tabel sammenligner UltraFastBERT-frameworkets præstation med dens forgængere, BERT-baserede framework, i forhold til feedforward- og hurtige feedforward-lag, hvor hver kolonne indeholder den relative interferens-hurtig-feedforward-over-feedforward-implementeringshastighedsforøgelse, når de anvender de samme lineære algebraiske rutine-primitiver.

Men det er værd at bemærke, at hastighedsforøgelserne, der rapporteres i ovenstående tabel, er beregnet for “fair sammenligninger”, dvs. både hurtige feedforward- og feedforward-implementeringer anvender de samme lineære algebraiske rutine-primitiver. Desuden på niveau 1 og niveau 2 er implementeringerne af hurtige feedforward-netværk i stand til at udføre interferensen 48 gange og 78 gange hurtigere end den hurtigste feedforward-implementering, respectively.

Afsluttende tanker

I denne artikel har vi talt om UltraFastBERT, en variant af BERT-frameworket, bygger på konceptet, at feedforward-lag ikke anvender 100% af de tilgængelige neuroner til at generere output for hver indput under interferenstid, hvilket fører til spild af ressourcer, der øger kompleksitet, beregnings tid og beregningsomkostninger, og erstatter feedforward-lag med hurtigere feedforward-netværk i sin arkitektur, hvilket resulterer i, at UltraFastBERT-frameworket kun anvender 0,3% af de tilgængelige neuroner, mens det leverer resultater, der er sammenlignelige med BERT-modeller af samme størrelse og træningsproces, især på downstream-opgaverne.

Takket være sine designimplementeringer er de intermediate lag i UltraFastBERT-frameworket eksponentielt hurtigere. Desuden er den stærke præstation, der leveres af UltraFastBERT-frameworket, en bevis for, at LLM’er kan levere stærk præstation ved at engagere kun en brøkdel af deres parametre for individuelle interferenser, da UltraFastBERT-frameworket kun anvender 0,3% af de tilgængelige neuroner under interferens, og alligevel opnår en 78-gangs hastighedsforøgning over interferenstider.

Kunal Kejriwal er en backend-ingeniør med speciale i Python, PostgreSQL, Redis og cloud-infrastruktur på GCP og AWS. Med tre års erfaring i at bygge og skalere produktionssystemer skriver han om AI-infrastruktur, distribuerede systemer og arkitekturen bag implementering af maskinlæringsarbejdsbelastninger.