AI-mallit ja alustat
UltraFastBERT: Eksponentiaalisesti Nopeampi Kielen Mallinnus
Kielen mallit ja generatiivinen tekoäly ovat tunnettuja kyvyistään, ja ne ovat kuumaa aiheetta tekoälyteollisuudessa. Globaalit tutkijat parantavat niiden tehokkuutta ja kykyä. Nämä järjestelmät, tyypillisesti syvät oppimismallit, ovat esikoulutettu laajalle merkitylle aineistolle, joka sisältää neuroverkkoja itsehuomioon. Ne käyttävät erilaisia kerroksia – eteenpäin syötetty, toistuva, upotettu ja huomio – prosessoidakseen syötetekstiä ja tuottamaan merkityksellisiä tuloksia.
Useimmiten suurten kielen mallien eteenpäin syötetyt kerrokset sisältävät eniten parametreja. Tutkimukset osoittavat, että nämä mallit käyttävät vain osan saatavilla neurooneja tulosteen laskemiseen inference-ajan aikana.
Tässä artikkelissa esitetään UltraFastBERT, BERT-pohjainen kehys, joka vastaa johtavien BERT-mallien tehokkuutta, mutta käyttää vain 0,3% neurooneja inference-ajan aikana, erityisesti 12 neuroonia 4095 neuroonista kussakin kerroksessa. Tarkastelemme UltraFastBERT:n arkkitehtuuria, toimintaa ja tuloksia. Aloita.
UltraFastBERT: Johdanto Eksponentiaalisesti Nopeampaan Kielen Mallinnukseen
Perinteisesti kielen malli käyttää erilaisia komponentteja varustamaan itsensä sisällön luomiskyvyillä, mukaan lukien eteenpäin syötetyt kerrokset, toistuvat kerrokset, upotetut kerrokset ja huomio-kerrokset. Nämä komponentit ovat vastuussa oppimisesta tunnistamaan kuvioita koulutuksen aikana ja lopulta tuottamaan tarkan tulosteen syötetekstin perusteella. Kunkin näistä komponenteista on joitakin parametreja, ja kielen malleissa suurin osa näistä parametreista on eteenpäin syötetyissä kerroksissa. Kuitenkin nämä eteenpäin syötetyt kerrokset eivät käytä 100% saatavilla neurooneja tulosteen tuottamiseen jokaisen syötteen kohdalla inference-ajan aikana, mikä johtaa resurssien haaskaukseen, joka lisää monimutkaisuutta, laskentaaikaa ja laskentakustannuksia.
UltraFastBERT-kehys on variantti BERT-kehystä, joka perustuu tähän käsitteeseen, ja korvaa eteenpäin syötetyt kerrokset nopeammilla eteenpäin syötetyillä verkkoilla arkkitehtuurissaan, mikä lopulta johtaa siihen, että UltraFastBERT-kehys käyttää vain 0,3% saatavilla neurooneista ja tuottaa tulokset, jotka ovat vertailukelpoisia BERT-mallien kanssa samankokoisilla ja koulutusprosesseilla, erityisesti alimmissa tehtävissä. Kehyksen suunnittelun toteutusten ansiosta UltraFastBERT-kehys on eksponentiaalisesti nopeampi.
Oletetaan nopea eteenpäin syötetty (FFF) verkko ja eteenpäin syötetty (FF) verkko, kummallakin n neuroonia, eteenpäin syötetyn verkkojonon aikakompleksisuus on O(n), kun taas nopean eteenpäin syötetyn verkkojonon aikakompleksisuus on O(log2n), ja aikakompleksisuuden ero johtuu ennen kaikkea siitä, että nopeassa eteenpäin syötetyssä verkossa neurooneja on järjestetty tasapainotussa binääripuuessa, ja kun syöte annetaan, verkko suorittaa vain yhden puun haaran ehdollisesti. Lisäksi nopean eteenpäin syötetyn verkkojonon suorittaminen johtaa ehdolliseen matriisimonikertaukseen (CMM), jossa syöterivit pisteytetään luonnollisten painoparametrien sarakkeiden kanssa yksittäin, ja edellisen pisteytysoperaation tulos määrää painoparametrien sarakkeiden painoa jatkamiseen. Tuloksena verkko käyttää kaikkia neurooneja vain muutamille syötteille, eikä yksikään syöte vaadi enempää kuin muutamia neurooneja verkosta. CMM-pisteytys eroaa tiheän matriisimonikertauksesta (DMM), joka laskee pisteytyksen kaikkien syötteiden ja painoparametrien sarakkeiden kanssa.
Yhteenvetona UltraFastBERT on BERT-pohjainen kehys, joka tuottaa tulokset, jotka ovat vertailukelpoisia johtavien BERT-kielen mallien kanssa, ja
- Käyttää vain 0,3% saatavilla neurooneista interference-vaiheessa, ja käyttää vain 12 neuroonia 4095 neuroonista kussakin interference-kerroksessa.
- Tuottaa vahvan suorituskyvyn, joka on vertailukelpoinen johtavien BERT-mallien kanssa, toteuttamalla hienosäätöstrategioita alimmissa tehtävissä.
- Tarjoaa alkuperäisen toteutuksen ehdollisesta matriisimonikertauksesta (CMM), joka muodostaa nopean eteenpäin syötetyn verkkojonon perustan, ja johtaa 78-kertaiseen nopeutumiseen suorituskyvyssä verrattuna alkuperäiseen optimoituun tiheään matriisimonikertaukseen (DMM).
Eteenpäin Syötetyt Neuroverkot
Eteenpäin syötetty neuroverkko on yksi suorituksellisimmista tekoälyverkoista, joka siirtää tietoa ainoastaan eteenpäin, syöte-solmuista tuloste-solmuihin piilossa olevien solmujen kautta. Yksi eteenpäin syötetyn neuroverkon tärkeimmistä piirteistä on, että siinä ei ole silmukoita tai syklejä, ja se on yksinkertaisempi kuin RNN (Recurrent Neural Network) tai CNN (Conventional Neural Network). Eteenpäin syötetyn neuroverkon arkkitehtuuri koostuu kolmesta komponentista: syötekerroksista, piilossa olevista kerroksista ja tulostekerroksista, ja kunkin kerroksen yksiköt ovat neurooneja, ja kunkin kerroksen yhteydessä on painot, jotka yhdistävät ne toisiinsa.
Neurooneja syötekerroksissa vastaanottavat syötteitä ja eteenpäin syötetään seuraavaan kerrokseen. Neurooneja kussakin syötekerroksessa määräytyy syötedatan ulottuvuuden mukaan. Seuraavaksi on piilossa olevat kerrokset, jotka eivät ole alttiina syötteelle tai tulosteelle, ja ne ovat vastuussa tarvittavista laskuista. Kunkin piilossa olevan kerroksen neurooneja ottaa syötteen edellisestä kerroksesta, soveltaa aktivaatiofunktiota ja välittää tuloksen seuraavaan kerrokseen, ja prosessi toistuu. Lopulta on tulostekerros, joka tuottaa tulosteen annetuille syötteille. Kunkin eteenpäin syötetyn neuroverkon neurooneja on yhdistetty jokaiseen seuraavan kerroksen neurooniin, mikä tekee FFF-neuroverkoista täysin yhdistetyn verkon. Painot edustavat neurooneja yhdistävän yhteyden voimakkuutta, ja verkko päivittää näitä painoja oppiakseen kuvioita virheen perusteella.
Eteenpäin syötetyn neuroverkon toiminnassa on kaksi tärkeää vaihetta: eteenpäin syötetty vaihe ja takaisin syötetty vaihe.
Eteenpäin Syötetty Vaihe
Eteenpäin syötetyssä vaiheessa syöte annetaan verkolle, ja se etenee eteenpäin. Piilossa olevat kerrokset laskevat syötteen painotetun summan, ja tuovat epälineaarisuuden malliin syötteen kautta aktivaatiofunktiota, kuten ReLu, Sigmoid ja TanH. Prosessi toistuu, kunnes painot saavuttavat tulostekerroksen, ja malli tekee ennusteen.
Takaisin Syötetty Vaihe
Kun malli tekee ennusteen, se laskee virheen ennustetun tulosteen ja odotetun tulosteen välillä. Virhe syötetään takaisin verkon läpi, ja verkko käyttää gradientin laskeutumisalgoritmiä painojen säätämiseen virheen minimointiin.
UltraFastBERT: Mallin Arkkitehtuuri ja Toiminta
UltraFastBERT-kehys perustuu crammedBERT-arkkitehtuuriin, ja UltraFastBERT-kehys käyttää kaikkia crammedBERT-kehyskomponentteja paitsi välikerrosten luonteen. Sen sijaan UltraFastBERT-kehys korvaa transformer-encoderin eteenpäin syötetyissä verkkoissa välikerrosten crammedBERT-kehyskomponenteissa nopeilla eteenpäin syötetyillä verkkoilla. UltraFastBERT-kehys tekee seuraavat muutokset alkuperäisiin eteenpäin syötettyihin verkkoihin.
- Kehys poistaa eron lehti- ja ei-lehtisolmujen välillä käyttämällä GeLu-aktivaatiofunktiota solmuissa ja varustamalla ne tulostepainoilla ja poistamalla tulostebiaiset kokonaan. Tämän jälkeen kehys kiinnittää lehtien koon 1:een.
- Lopulta kehys sallii useita nopeita eteenpäin syötettyjä verkkoja rinnakkain laskemalla yhdessä välimaisten tulosteiden kerrokset. Kehys suorittaa tämän laskelman ottamalla yhteenvetona yksittäisiä puita ja esittämällä yhteenvetona välimaisten tulosteiden kerroksen.
Jatkamalla, koulutuksessa UltraFastBERT-kehys noudattaa koulutusmenettelyä, jota crammedBERT-kehys käyttää, mukaan lukien dropoutin poistamisen esikoulutuksessa ja 1-syklinen kolmiomainen oppimissuhde. Malli säädetään maksimoimaan sen suorituskyky laajalla joukolla tehtäviä, pääasiassa GLUE-benchmarkin alitehtävissä, yhteensä 5 epochia.
Häiriö
Häiriö on tärkeä osa nopeaa eteenpäin syötettävää verkkoa, ja nämä nopeat eteenpäin syötettävät verkot muodostavat suuren osan suurista kielen malleista, ja ne ovat tunnettuja poikkeuksellisesta kiihdytysmahdollisuudestaan. Ymmärtääksemme tämän kiihdytysmahdollisuuden, otetaan esimerkki yhdestä edistyneimmistä kielen malleista, GPT-3, jossa eteenpäin syötettävät verkot jokaisessa transformer-kerroksessa koostuvat yli 49 100 neuroonista. Jos koulutettavissa, nopea eteenpäin syötetty verkko (enimmillään 15 kerrosta) voisi korvata alkuperäisen eteenpäin syötetyn verkon. Esitetty nopea eteenpäin syötetty verkko sisältäisi yli 65 000 neuroonia, mutta se käyttäisi vain 16 näistä neurooneista häiriössä, mikä vastaa noin 0,03% GPT-3:n saatavilla olevista neurooneista.
Algoritmi ja Yhteensopivuus
UltraFastBERT-kehys käyttää rekursiivista pseudokoodialgoritmiä nopeaan eteenpäin syötettyyn häiriöön, ja algoritmi on esitetty alla olevassa kuvassa.

Tässä B edustaa syötekokoa, H edustaa syötekerrosten leveyttä, ja M edustaa sarakkeita. Toinen tärkeä huolenaihe nopean eteenpäin syötetyn verkon käytössä on se, vaikuttaako se siihen, onko se yhteensopiva prosessin kanssa, jota jo käytetään tiheän matriisimonikertauksen ja olemassa olevien syvän oppimisen kehysten kanssa. Onneksi ehdollisen matriisimonikertauksen (CMM) käyttö ei vaikuta suorituskykyyn tai aiheuta yhteensopivuutta, vaikka se lisää välimuistin monimutkaisuutta.
On tärkeää huomata, että nopean eteenpäin syötetyn verkon osana yksilöivä tiheä matriisimonikertaus riippuu MAC- tai kertolasku- ja kertymislaskuohjeiden suorittamisesta, ja tuloksena “neuraalinen haarautuminen” toimii lisäyksenä muistiin siirtymiseen relevantteihin osoittimiin kehyksessä. Siksi UltraFastBERT-kehys ei käytä koskaan täysin ohjelmointiblokin ennustamista ehdollisen matriisimonikertauksen ehdollisuuden mahdollistamiseksi, ja lataa ainoastaan relevantit sarakkeet painomatriisista yksittäin. Lisäksi, koska kehys suorittaa rivi-sarakkeiden pisteytyksiä, SIMD- tai yksittäisen ohjeen useiden tietojen vektoriparallelius on edelleen hyvä vaihtoehto nopeuttamaan häiriön toteutuksia tiettyjen laitteiden osalta.
UltraFastBERT: Suorituskyky ja Tulokset
Tutkimme UltraFastBERT-kehysmallin suorituskykyä hienosäätö- ja häiriötehtävissä, jotta voimme analysoida, miten kehys suoriutuu johtavien kielen mallien kanssa.
Hienosäätö Tulokset
Seuraava kuva osoittaa eri mallien suorituskyvyn GLUE-dev-testidataseteissa. Tässä N edustaa neurooneja, jotka ovat saatavilla kehyksille koulutuksessa, “Keskiarvo” edustaa kaikkien tehtävien keskiarvoa.

Kuten voidaan selvästi nähdä, UltraFastBERT-kehys, joka on koulutettu A6000-GPU:lla yli 24 tunnin ajan, säilyttää lähes 96% ennustuskyvystä GLUE-alitehtävissä verrattuna alkuperäiseen BERT-kehysmalliin. Lisäksi voidaan nähdä, että nopeiden eteenpäin syötettävien verkkojen syvyyden kasvaessa kehysten suorituskyky heikkenee, vaikka suurin osa suorituskyvyn heikkenemisestä tapahtuu ainoastaan CoLa-tehtävässä. Jos CoLa-tehtävää ei oteta huomioon, UltraFastBERT-kehys palauttaa ennustuskykyarvon noin 98,6%.
Häiriö Tulokset
Tässä osiossa vertailemme useiden eteenpäin syötettyjen ja nopeiden eteenpäin syötettyjen verkkojen suorituskykyä häiriötehtävissä, ja nämä toteutukset ovat jaettu kolmeen tasoon.
- Tasolla 1 toteutus on rakennettu BLAS 1 -rutiineilla, kuten skalaari-vektori-tuote ja vektori-vektori-pisteytys.
- Tasolla 2 toteutukset käyttävät BLAS 2 -rutiineja, kuten erääntynyt skalaari-vektori-tuote ja erääntynyt matriisi-vektori-pisteytys.
- Tasolla 3 toteutukset käyttävät epäerääntynyttä BLAS 3 -matriisimonikertauksen lähestymistapaa, ja vaikka se on nopein toteutus eteenpäin syötetyille verkkoille, tällaisia toteutuksia ei ole saatavilla nopeille eteenpäin syötetyille verkkoille, koska kirjasto ei tue vektoritasoista sparsiteettia ehdollisessa matriisimonikertauksessa.
Lisäksi UltraFastBERT-kehys käyttää GPU-toteutuksia käyttämällä mukautettuja CUDA- tai PyTorch- ytimiä.

Yllä oleva taulukko vertaa UltraFastBERT-kehysmallin suorituskykyä sen edeltäjiin, BERT-pohjaisiin kehyksiin, eteenpäin syötettyjen ja nopeiden eteenpäin syötettyjen verkkojen osalta, ja kunkin sarakkeen sisältää suhteellisen nopeuden nopean eteenpäin syötetyn ja eteenpäin syötetyn toteutuksen välillä, kun ne käyttävät samoja lineaarisia algebraisia rutiinien primitiivejä.
On kuitenkin huomattava, että nopeutukset, jotka on ilmoitettu yllä olevassa taulukossa, on tarkoitettu “rehellisiksi vertailuiksi”, eli sekä nopea eteenpäin syötetty että eteenpäin syötetty toteutus käyttävät saman lineaarisen algebraisen rutiinin primitiivejä. Lisäksi tasolla 1 ja tasolla 2 nopeiden eteenpäin syötettyjen verkkojen toteutukset voivat suorittaa häiriön 48-kertaisella ja 78-kertaisella nopeudella verrattuna nopeimpaan eteenpäin syötettyyn toteutukseen.
Lopputulet
Tässä artikkelissa olemme keskustelleet UltraFastBERT:stä, BERT-pohjaisesta kehyksestä, joka perustuu siihen, että eteenpäin syötetyt kerrokset eivät käytä 100% saatavilla neurooneja tulosteen tuottamiseen jokaisen syötteen kohdalla häiriöajan aikana, mikä johtaa resurssien haaskaukseen, joka lisää monimutkaisuutta, laskentaaikaa ja laskentakustannuksia, ja korvaa eteenpäin syötetyt kerrokset nopeammilla eteenpäin syötetyillä verkkoilla arkkitehtuurissaan, mikä lopulta johtaa siihen, että UltraFastBERT-kehys käyttää vain 0,3% saatavilla neurooneista ja tuottaa tulokset, jotka ovat vertailukelpoisia BERT-mallien kanssa samankokoisilla ja koulutusprosesseilla, erityisesti alimmissa tehtävissä.
Kehyksen suunnittelun toteutusten ansiosta UltraFastBERT-kehys on eksponentiaalisesti nopeampi. Lisäksi UltraFastBERT-kehysmallin vahva suorituskyky on osoitus siitä, että LLM:t voivat tuottaa vahvan suorituskyvyn osallistumalla vain osaan niiden parametreja yksittäisissä häiriöissä, koska UltraFastBERT-kehys käyttää vain 0,3% saatavilla neurooneista häiriöajan aikana ja saavuttaa 78-kertaisen nopeutuksen häiriöaikoihin verrattuna.












