Autoriai:
(1) Davidas Raposo, „Google DeepMind“ ir su tokiu pat indėliu;
(2) Samas Ritteris, „Google DeepMind“;
(3) Blake'as Richardsas, Google DeepMind ir McGill universitetas ir Mila;
(4) Timothy Lilicrapas, „Google DeepMind“;
(5) Peter Conway Humphreys, „Google DeepMind“;
(6) Adamas Santoro, „Google DeepMind“ ir su tokiu pat indėliu.
Redaktoriaus pastaba: tai yra 1 dalis iš 5 tyrimo, kuriame išsamiai aprašomas būdas, kaip transformatoriumi pagrįstus kalbos modelius padaryti efektyvesnius, dinamiškai paskirstant skaičiavimo išteklius. Likusią dalį skaitykite žemiau.
3.1. Apskaičiuojamo biudžeto apibrėžimas
3.2. Maršrutas aplink transformatorių blokus
3.3. Maršruto schemos
3.4. Maršruto parinkimo įgyvendinimas
3.5. Mėginių ėmimas ir 3.6. Treniruočių metodai
Transformatoriumi pagrįsti kalbos modeliai vienodai paskirsto FLOP įvesties sekose. Šiame darbe parodome, kad transformatoriai gali išmokti dinamiškai paskirstyti FLOP (arba apskaičiuoti) konkrečioms sekos pozicijoms, optimizuodami paskirstymą pagal seką skirtingiems sluoksniams visame modelio gylyje. Mūsų metodas užtikrina bendrą skaičiavimo biudžetą, apribodamas žetonų (𝑘), galinčių dalyvauti dėmesio sau ir MLP skaičiavimuose tam tikrame lygyje, skaičių. Apdorotinus žetonus nustato tinklas, naudodamas viršutinį maršruto parinkimo mechanizmą. Kadangi 👘 yra apibrėžtas a priori, ši paprasta procedūra naudoja statinį skaičiavimo grafiką su žinomais tenzoriaus dydžiais, skirtingai nuo kitų sąlyginio skaičiavimo metodų. Nepaisant to, kadangi 👘 žetonų tapatybės yra sklandžios, šis metodas gali nevienodai išnaudoti FLOP per laiko ir modelio gylio matmenis. Taigi apskaičiuojamos išlaidos yra visiškai nuspėjamos sumoje, tačiau dinamiškos ir jautrios kontekstui žetonų lygiu. Taip apmokyti modeliai ne tik išmoksta dinamiškai paskirstyti skaičiavimus, bet ir daro tai efektyviai. Šie modeliai atitinka pradinį našumą lygiaverčiam FLOPS ir sieninio laikrodžio laikui treniruotėms, tačiau jiems reikia dalies FLOP per ėjimą į priekį ir gali būti iki 50 % greičiau žengti per atranką po treniruotės.
Ne visoms problemoms išspręsti reikia tiek pat laiko ar pastangų. Analogiškai kalbant modeliuojant ne visiems žetonams ir sekoms reikia tiek pat laiko ar pastangų, kad būtų galima tiksliai numatyti. Ir vis dėlto, transformatorių modeliai išleidžia tiek pat skaičiavimo vienam prieigos raktui. Idealiu atveju transformatoriai naudotų mažesnį bendrą skaičiavimo biudžetą, nes be reikalo skaičiuoti neleis.
Sąlyginis skaičiavimas yra metodas, kuriuo bandoma sumažinti bendrą skaičiavimą, išleidžiant jį tik tada, kai reikia (Bengio ir kt., 2016; Bengio, 2013; Bengio ir kt., 2013). Įvairūs algoritmai siūlo sprendimus, kada ir kiek reikia naudoti skaičiavimus (Ainslie ir kt., 2023; Bapna ir kt., 2020; Fedus ir kt., 2022). Tačiau bendros šios sudėtingos problemos formuluotės gali neveikti gerai su esamais aparatūros apribojimais, nes jos linkusios įvesti dinaminius skaičiavimo grafikus (Dehghani ir kt., 2018; Graves, 2016). Perspektyviausi sąlyginio skaičiavimo metodai gali būti tie, kurie dera su mūsų dabartine aparatūros krūva, kurioje pirmenybė teikiama statinėms skaičiavimo diagramoms, ir žinomiems tenzorių dydžiams, kurie parenkami siekiant maksimaliai išnaudoti aparatinę įrangą.
Čia mes svarstome kalbos modeliavimo problemą naudojant statinį skaičiavimo biudžetą, kuris gali būti mažesnis nei naudojamas vanilinio transformatoriaus. Tinklas turi išmokti dinamiškai paskirstyti turimą skaičiavimą, kiekviename lygmenyje priimdamas sprendimus, kur išleisti turimą biudžetą. Mūsų įgyvendinime bendras skaičiavimas yra vartotojo apibrėžtas ir nekintamas prieš mokymą, o ne tinklo sprendimų, priimamų skrydžio metu, funkcija. Taigi, aparatinės įrangos efektyvumo padidėjimą, pvz., sumažintą atminties plotą arba sumažėjusį FLOP per pirminį perdavimą, galima numatyti ir išnaudoti iš anksto. Kaip parodysime, šis pelnas gali būti pasiektas neprarandant bendro našumo.
Mes naudojame metodą, panašų į Mixture of Experts (MoE) transformatorius, kuriuose dinaminiai prieigos rakto lygio maršruto sprendimai priimami visame tinklo gylyje. Nukrypdami nuo ŪM, pasirenkame arba taikyti skaičiavimą žetonui (kaip būtų standartinio transformatoriaus atveju), arba perduoti jį per likutinį ryšį (lieka nepakitęs ir išsaugomas skaičiavimas). Taip pat, priešingai nei MoE, šį maršrutą taikome tiek persiunčiamiems MLP, tiek kelių galvų dėmesiui. Kadangi tai taip pat turi įtakos mūsų apdorojamiems raktams ir užklausoms, maršruto parinkimas priima sprendimus ne tik dėl to, kuriuos prieigos raktus atnaujinti, bet ir dėl to, kuriuos prieigos raktus galima pasiekti. Šią strategiją vadiname gylių mišiniu (MoD), norėdami pabrėžti, kaip atskiri žetonai pereina per skirtingą skaičių sluoksnių arba blokų per transformatoriaus gylį (žr. 1 pav.).
MoD technika taip pat leidžia pakeisti našumą su greičiu. Viena vertus, galima išmokyti MoD transformatorių, kuris net 1,5 % pagerina vanilinius transformatorius pagal galutinį log tikimybių mokymo tikslą lygiaverčiams treniruotiesiems FLOP (isoFLOP), ir tuo pat metu treniruoti reikia tiek pat laiko, kiek sieninis laikrodis. Kita vertus, galima treniruoti MoD transformatorių, kuris pasiekia treniruočių nuostolių paritetą su isoFLOP optimaliu vaniliniu transformatoriumi, tačiau kuris naudoja dalį FLOP (daugiau 50 %) vienam tiesioginiam praėjimui, todėl yra greitesnis. Kartu šie rezultatai reiškia, kad MoD transformatoriai išmoksta protingai nukreipti maršrutą (ty praleidžiami skaičiavimai, kurie yra nereikalingi), nes jie gali pasiekti vienodas arba geresnes logines tikimybes vienai sekai, nepaisant mažesnio FLOP pėdsako per pirmyn praėjimą.
Šis dokumentas pasiekiamas arxiv pagal CC BY 4.0 DEED licenciją.