Connect with us

Inteligență artificială

UltraFastBERT: Exponențial Mai Rapid Modelare Lingvistică

mm

Modelele lingvistice și inteligența artificială generativă, renumite pentru capacitățile lor, sunt un subiect fierbinte în industria IA. Cercetătorii din întreaga lume îmbunătățesc eficacitatea și capacitatea acestor sisteme. Aceste sisteme, de obicei modele de învățare profundă, sunt pre-antrenate pe date etichetate extinse, integrând rețele neuronale pentru atenție auto. Ele utilizează diverse straturi – feedforward, recurente, încorporate și de atenție – pentru a procesa textul de intrare și a produce ieșiri relevante.

În general, straturile feedforward ale modelelor lingvistice mari dețin cei mai mulți parametri. Studii arată că aceste modele utilizează doar o fracțiune din neuroni disponibili pentru calculul ieșirii în timpul inferenței.

Acest articol introduce UltraFastBERT, un cadru bazat pe BERT care se potrivește cu eficacitatea modelelor BERT de top, dar utilizează doar 0,3% din neuroni în timpul inferenței, în special 12 din 4095 în fiecare strat. Vom explora arhitectura, funcționalitatea și rezultatele UltraFastBERT. Să începem.

UltraFastBERT : O Introducere în Modelarea Lingvistică Exponențial Mai Rapidă

Tradițional, un model lingvistic utilizează diverse componente pentru a se dota cu capacități de generare de conținut, incluzând straturi feedforward, recurente, încorporate și de atenție. Aceste componente sunt responsabile pentru a învăța să recunoască modele în timpul antrenamentului și, în final, să genereze ieșiri precise pe baza textelor de intrare. Fiecare dintre aceste componente are anumite parametri, și în modele lingvistice, o parte semnificativă din acești parametri este deținută de straturile feedforward. Cu toate acestea, aceste straturi feedforward nu utilizează 100% din neuroni disponibili pentru a genera ieșiri pentru fiecare intrare la momentul inferenței, ceea ce duce la irosirea resurselor, creșterea complexității, a timpului de calcul și a costurilor computaționale.

La nivelul său fundamental, cadru UltraFastBERT este o variantă a cadru BERT, se bazează pe acest concept și înlocuiește straturile feedforward cu rețele feedforward mai rapide în arhitectura sa, ceea ce duce, în final, la faptul că cadru UltraFastBERT utilizează doar 0,3% din neuroni disponibili, oferind rezultate comparabile cu modelele BERT de aceeași mărime și proces de antrenament, în special pentru sarcinile downstream. Datorită implementărilor sale de proiectare, straturile intermediare din cadru UltraFastBERT sunt exponențial mai rapide,

Dat fiind un rețea feedforward rapidă (FFF) și o rețea feedforward (FF), fiecare cu n număr de neuroni, complexitatea temporală a unei treceri înainte într-o rețea feedforward este O(n), în timp ce complexitatea temporală este O(log2n) pentru o rețea feedforward rapidă, iar diferența în complexitate temporală se datorează în principal faptului că, într-o rețea feedforward rapidă, neuronii sunt organizați într-un arbore binar echilibrat, și atunci când se oferă intrarea, rețeaua execută doar o ramură a arborelui condiționat. Mai mult, efectuarea inferenței pe o rețea feedforward rapidă duce la CMM sau Înmulțirea Matricială Condițională, în care rândurile de intrare se înmulțesc cu coloanele naturale de greutate individual, și ieșirea operației anterioare de produs scalar determină greutatea coloanelor pentru a continua. În consecință, rețeaua utilizează toți neuronii doar pentru câteva intrări, și nicio intrare nu necesită mai mult de câțiva neuroni pentru a fi gestionată de rețea. Produsul scalar CMM se deosebește de DMM sau Înmulțirea Matricială Densă, care calculează produsul scalar al tuturor intrărilor cu toate coloanele de greutate.

Pentru a rezuma, UltraFastBERT este un cadru bazat pe BERT care oferă rezultate comparabile cu modelele lingvistice BERT de ultimă generație, care

  1. Utilizează doar 0,3% din neuroni disponibili în timpul etapei de inferență și angajează doar 12 neuroni dintr-un total de 4095 de neuroni pentru fiecare strat de inferență.
  2. Oferă o performanță puternică comparabilă cu modelele BERT de ultimă generație, prin implementarea strategiilor de reglare fină pentru sarcinile downstream.
  3. Oferă o implementare nativă a CMM sau Înmulțirii Matriciale Condiționale, care reprezintă baza pentru rețeaua feedforward rapidă și, în final, duce la o accelerare de 78 de ori a performanței în comparație cu Înmulțirea Matricială Densă optimizată nativ.

Rețele Neuronale Feedforward

O rețea neuronală feedforward este una dintre cele mai simple rețele neuronale artificiale care mișcă informația doar în direcția înainte, de la nodurile de intrare la nodurile de ieșire, prin noduri ascunse. Unul dintre principalele puncte forte ale unei rețele neuronale feedforward rapide este acela că nu există bucle sau cicluri în astfel de rețele, și sunt mai simple de construit în comparație cu RNN sau Rețele Neuronale Recurente și CNN sau Rețele Neuronale Convenționale. Arhitectura unei rețele neuronale feedforward rapide cuprinde trei componente, și anume straturi de intrare, straturi ascunse și straturi de ieșire, și fiecare strat este alcătuit din unități numite neuroni, și fiecare strat este interconectat cu celălalt cu ajutorul greutăților.

Neuronii prezenți în straturile de intrare primesc intrări și le transmit mai departe către următorul strat. Numărul de neuroni din fiecare strat de intrare este determinat de dimensiunea datelor de intrare. Următorul, avem straturile ascunse care nu sunt expuse nici intrărilor, nici ieșirilor, și sunt responsabile pentru calculele necesare. Neuronii din fiecare strat ascuns iau suma ponderată a ieșirilor oferite de stratul anterior, aplică o funcție de activare și transmit rezultatul către următorul strat, și procesul se repetă din nou. În final, avem stratul de ieșire care produce ieșirea pentru intrările date. Fiecare neuron din fiecare strat al unei rețele feedforward rapide este interconectat cu fiecare neuron din următorul strat, făcând rețelele neuronale feedforward o rețea complet conectată. Greutățile sunt utilizate pentru a reprezenta puterea de conectare dintre neuroni, și rețeaua actualizează aceste greutăți pentru a învăța modelele prin actualizarea greutăților pe baza erorii care apare în ieșire.

Înainte, există două etape cheie în funcționarea unei rețele neuronale feedforward rapide: faza feedforward și faza de propagare inversă.

Faza Feedforward

În faza feedforward, intrarea este oferită rețelei, și apoi se propagă înainte. Straturile ascunse calculează suma ponderată a intrărilor, și introduc neliniaritatea în model prin trecerea sumei intrărilor printr-o funcție de activare, cum ar fi ReLu, Sigmoid și TanH. Procesul se repetă din nou până când greutățile ajung la stratul de ieșire, și modelul face o previziune.

Faza de Propagare Inversă

Odată ce modelul face o previziune, calculează eroarea dintre ieșirea generată și ieșirea așteptată. Eroarea este apoi propagată invers prin rețea, și rețeaua utilizează un algoritm de optimizare a pantei pentru a ajusta greutățile în încercarea de a minimiza eroarea.

UltraFastBERT : Arhitectură și Funcționare a Modelului

Cadru UltraFastBERT este construit pe arhitectura crammedBERT, și cadru UltraFastBERT utilizează toate componentele cadru crammedBERT, cu excepția naturii straturilor intermediare. În schimb, cadru UltraFastBERT înlocuiește encoderul transformer din rețelele feedforward conținute în straturile intermediare ale cadru crammedBERT cu rețele feedforward rapide. Cadru UltraFastBERT face următoarele modificări asupra rețelelor feedforward originale.

  1. Cadru elimină diferența dintre nodurile frunză și nodurile ne-frunză prin utilizarea funcției de activare GeLu în toate nodurile și echiparea acestor noduri cu greutăți de ieșire și eliminarea completă a bias-urilor de ieșire. După aceea, cadru fixează dimensiunea frunzei la 1.
  2. În final, cadru permite multiple rețele feedforward rapide în paralel prin calcularea comună a straturilor de ieșire intermediare. Cadru gestionează această calculare prin luarea sumei arborilor individuali și prezentarea sumei ca strat de ieșire intermediar.

În continuare, în antrenament, cadru UltraFastBERT urmează procedura de antrenament utilizată de cadru crammedBERT, care include dezactivarea dropout-ului în pre-antrenament și utilizarea programului de învățare cu rată triunghiulară 1-ciclu. Modelul este apoi reglat pentru a-și maximiza performanța pe o gamă largă de sarcini, în principal din benchmark-ul GLUE, pentru un total de 5 epoci.

Inferență

Inferența este o parte importantă pentru o rețea feedforward rapidă, și aceste rețele feedforward rapide însele formează o parte semnificativă a modelelor lingvistice mari, și sunt cunoscute pentru potențialul lor excepțional de accelerare. Pentru a înțelege acest potențial de accelerare, să luăm ca exemplu unul dintre cele mai avansate modele lingvistice, GPT-3, în care rețelele feedforward din fiecare strat transformer conțin peste 49.100 de neuroni. Dacă ar fi antrenabil, o rețea feedforward rapidă (adâncime maximă de 15) ar putea înlocui rețeaua feedforward originală. Rețeaua feedforward rapidă introdusă ar avea peste 65.000 de neuroni, dar ar utiliza doar 16 dintre acești neuroni pentru inferență, ceea ce reprezintă aproximativ 0,03% din neuroni disponibili pentru GPT-3.

Algoritm și Compatibilitate

Cadru UltraFastBERT utilizează un algoritm pseudocod recursiv pentru inferența rețelei feedforward rapide, și algoritmul este prezentat în imaginea de mai jos.

Aici, B reprezintă dimensiunea lotului, H reprezintă lățimea straturilor de intrare, și M reprezintă coloane. O altă cauză majoră de îngrijorare legată de utilizarea abordării Înmulțirii Matriciale Condiționale este dacă face rețelele feedforward rapide incompatibile cu procesul care este deja în uz pentru Înmulțirea Matricială Densă și cadrele de învățare profundă existente. Din fericire, utilizarea CMM nu afectează performanța sau introduce incompatibilitate, deși crește complexitatea caching-ului.

Este vital de remarcat că, ca parte a rețelei feedforward rapide, înmulțirea matricială densă cu un singur fir de execuție se bazează pe executarea instrucțiunilor MAC sau Înmulțire și Acumulare, și, în consecință, înlocuirea DMM cu abordarea CMM va beneficia CPU-urile, deoarece sunt necesare mai puține instrucțiuni MAC pentru a calcula ieșirea stratului pe element. Prin urmare, deși utilizează o condiționalitate care este de obicei asociată cu ramificarea, “ramificarea neuronală” acționează ca o adăugare la deplasamentul de memorie al pointerelor relevante în cadru. Prin urmare, în cadru UltraFastBERT, predicția ramificării instrucțiunilor nu este niciodată pe deplin implicată pentru a facilita condiționalitatea CMM, și doar încarcă coloanele relevante ale matricei de greutate individual. Mai mult, deoarece cadru efectuează produse scalare rand-col, procesarea paralelă de vector cu o singură instrucțiune pentru date multiple (SIMD) este încă o opțiune bună pentru a accelera implementările inferenței pentru dispozitive specifice.

UltraFastBERT : Performanță și Rezultate

Vom discuta despre performanța cadru UltraFastBERT pentru sarcinile de reglare fină, precum și pentru sarcinile de inferență, pentru a analiza cum cadru se descurcă în comparație cu modelele lingvistice de ultimă generație.

Rezultate Reglare Fină

Următoarea figură demonstrează performanța diverselor modele pe seturile de test GLUE-dev. Aici, N reprezintă numărul de neuroni disponibili cadrelor pentru antrenament, “Avg” reprezintă scorul mediu al tuturor sarcinilor.

După cum se poate vedea clar, cadru UltraFastBERT, care a fost antrenat pe GPU A6000 timp de peste 24 de ore, reușește să păstreze aproximativ 96% din performanța predictivă pe sarcinile downstream GLUE în comparație cu cadru BERT original. Mai mult, se poate vedea că, odată cu creșterea adâncimii rețelelor feedforward rapide, performanța cadrelor suferă o scădere, deși cea mai mare parte a degradării performanței apare doar pentru sarcina CoLa. Dacă sarcina CoLa este ignorată pentru un moment, cadru UltraFastBERT returnează un scor de performanță predictivă de aproximativ 98,6%.

Rezultate Inferență

În această secțiune, vom compara performanța diverselor rețele feedforward sau rețele feedforward rapide pe implementări de inferență, și aceste implementări sunt răspândite pe trei niveluri.

  1. La nivelul 1, implementarea este construită utilizând rutine BLAS de nivel 1, cum ar fi produsul scalar-vector și produsele scalare vector-vector.
  2. La nivelul 2, implementările utilizează rutine BLAS de nivel 2, cum ar fi produsul scalar-vector batchat și produsele scalare matrice-vector batchate.
  3. La nivelul 3, implementările utilizează abordarea de înmulțire matricială matrice-matrică nebatchată BLAS de nivel 3, și, deși este cea mai rapidă implementare disponibilă pentru rețelele feedforward, astfel de implementări nu sunt disponibile pentru rețelele feedforward rapide, deoarece biblioteca nu suportă sparsitatea vectorială a Înmulțirii Matriciale Condiționale.

În plus, cadru UltraFastBERT utilizează implementări GPU prin utilizarea de nucleu CUDA personalizat sau PyTorch.

Tabelul de mai sus compară performanța cadru UltraFastBERT cu predecesorii săi, cadrele bazate pe BERT, în ceea ce privește straturile feedforward și straturile feedforward rapide, unde fiecare coloană conține vitezele relative de implementare a inferenței Fast Feedforward peste Feedforward atunci când utilizează aceleași primitive de operații liniare algebrice.

Cu toate acestea, este important de remarcat că accelerările raportate în tabelul de mai sus sunt destinate “comparațiilor corecte”, adică atât implementările feedforward rapide, cât și cele feedforward utilizează aceleași operații primitive liniare algebrice. Mai mult, la nivelul 1 și nivelul 2, implementările rețelelor feedforward rapide sunt capabile să efectueze inferența de 48 de ori și, respectiv, 78 de ori mai rapid decât cea mai rapidă implementare feedforward.

Gânduri Finale

În acest articol, am discutat despre UltraFastBERT, o variantă a cadru BERT, care se bazează pe conceptul că straturile feedforward nu utilizează 100% din neuroni disponibili pentru a genera ieșiri pentru fiecare intrare la momentul inferenței, ceea ce duce la irosirea resurselor, creșterea complexității, a timpului de calcul și a costurilor computaționale, și înlocuiește straturile feedforward cu rețele feedforward rapide în arhitectura sa, ceea ce duce, în final, la faptul că cadru UltraFastBERT utilizează doar 0,3% din neuroni disponibili, oferind rezultate comparabile cu modelele BERT de aceeași mărime și proces de antrenament, în special pentru sarcinile downstream.

Datorită implementărilor sale de proiectare, straturile intermediare din cadru UltraFastBERT sunt exponențial mai rapide. Mai mult, performanța puternică oferită de cadru UltraFastBERT este o dovadă că modelele lingvistice mari pot oferi performanță puternică prin implicarea doar a unei fracțiuni din parametrii lor pentru inferențe individuale, deoarece cadru UltraFastBERT utilizează doar 0,3% din neuroni disponibili în timpul inferenței și, totuși, reușește să obțină o accelerare de 78 de ori a timpului de inferență.

"Un inginer de profesie, un scriitor din inimă". Kunal este un scriitor tehnic cu o dragoste și o înțelegere profundă a inteligenței artificiale și a învățării automate, dedicat simplificării conceptelor complexe din aceste domenii prin documentația sa captivantă și informativă.