uutiset

Apple antaa suurten mallien oppia olemaan laiskoja: sylkeä ensimmäinen merkki nopeammin ja säilyttää tarkkuuden

2024-08-02

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina



Koneen sydänraportti

Machine Heart -toimitusosasto

Laiskuus saa sinut työskentelemään paremmin.

Llama 3.1 on juuri julkaistu, oletko jo kokeillut sitä? Vaikka tietokoneesi olisi uusin huipputekninen, saatat silti kokea merkittävää viivettä, kun käytät pienintä 8B-versiota. Mallin päättelyn tehokkuuden parantamiseksi tutkijat ovat keksineet erilaisia ​​menetelmiä, mutta monet niistä saavat mallin uhraamaan jonkin verran tarkkuutta.

Äskettäin Applen ja Meta AI:n tutkimusryhmä ehdotti uutta menetelmää, joka voi nostaa Llama 2:n esitäyttövaiheen päättelynopeuden yli kaksinkertaiseksi ja varmistaa, että tarkkuus ei putoa merkittävästi. He kutsuvat tätä lähestymistapaa LazyLLM:ksi, joka tulee sanoista Lazy Large Language Model.



Paperin otsikko: LazyLLM: Dynamic Token Pruning for Efficient Long Context LLM Inference

Paperiosoite: https://arxiv.org/abs/2407.14057

Joten kuinka he saavat LLM:n olemaan laiskoja? Ymmärtääksemme heidän menetelmänsä meidän on ensin tiedettävä, mikä on standardi kehotteeseen perustuva LLM-päätelmäprosessi. Yksinkertaisesti sanottuna prosessi on jaettu kahteen vaiheeseen: esitäyttö ja dekoodaus, kuten kuvassa 1.



Esipopulaatiovaiheessa malli laskee ja tallentaa jokaisen kehotteen KV-välimuistin ja ennustaa ensimmäisen tunnuksen. Kutsumme esipopulaatiovaiheessa käytettyä aikaa "aika ensimmäiseen merkkiin (TTFT)".

Esitäyttövaihetta seuraa dekoodausvaihe. Tässä vaiheessa malli käyttää jälleen välimuistissa olevaa KV:ta purkaakseen iteratiivisesti seuraavan merkin, kunnes pysäytyskriteeri täyttyy.

Esipopulaatiovaiheen aikana kaikki Transformer-tasot käyttävät kaikkia kehotteen tokeneita. TTFT voi olla hidas, kun kehote on pitkä, koska nykyinen paras Transformer-pohjainen LLM on sekä syvä että leveä, ja huomionlaskennan kustannukset kasvavat neliöllisesti kehotteessa olevien merkkien määrän myötä. Esimerkiksi Llama 2 (versio 7B) pinoaa 32 kerrosta muuntajia, ja mallin mitta on 4096. Tässä tapauksessa TTFT vaatii 21-kertaisen seinämäajan jokaisesta seuraavasta dekoodausvaiheesta, mikä on noin 23 % kokonaistuotantoajasta LongBench-benchmarkissa.

Siksi TTFT:n optimointi on erittäin kriittinen vaihe LLM-päätelmän tekemiseksi tehokkaaksi.

Vaikka LLM-päätelmien optimointi on aktiivinen tutkimusalue, monet menetelmät keskittyvät parantamaan dekoodausvaiheen päättelynopeutta. Tutkijat ovat kiinnittäneet vain vähän huomiota TTFT:n parantamiseen. Jotkut pakkauspohjaiset tutkimustulokset voivat implisiittisesti parantaa TTFT:tä pienentämällä LLM:n kokoa.

Toinen tutkimussuunta on TTFT:n parantaminen staattisen muuntaja-arkkitehtuurin alla. Tälle tutkimussuunnalle herää luonnollisesti kysymys: Ovatko kaikki kehotteet välttämättömiä luotaessa ensimmäistä tokenia?

Kuva 2 esittää LLM-analyysin tulokset LongBench-benchmarkilla.



Voidaan nähdä, että ensimmäisellä luodulla tunnuksella syöttötunnisteiden huomiopisteet ovat erittäin harvat, mikä osoittaa, että monet syöttökehotteen merkit ovat redundantteja, ja vaikka ne poistetaan, ne eivät vaikuta seuraavan ennusteeseen. merkki. Tämä havainto on perusta ryhmän ehdottamalle LazyLLM:lle.

LazyLLM:n etuja ovat laaja käyttöalue, koulutustarve ja hyvät tulokset. Kuvassa 3 verrataan standardia LLM:ää ja LazyLLM:ää.



LazyLLM

Kuvio 4 esittää LazyLLM:n yleistä kehystä.



Koko kontekstista alkaen LazyLLM karsii vähitellen tokeneita ja vähentää siten asteittain lopullisen mallin saamiseksi käytettyjen laskelmien määrää. Huomaa, että LazyLLM sallii mallin valita erilaisia ​​tokenien osajoukkoja eri sukupolven vaiheissa, vaikka joitain niistä olisi karsittu aikaisemmissa vaiheissa. Verrattuna staattiseen karsimiseen (kaikki tunnukset karsitaan kerralla), dynaaminen karsiminen optimoi seuraavan merkkien ennusteen jokaisessa sukupolvivaiheessa, mikä auttaa ylläpitämään mallin suorituskykyä.

Progressiivinen merkkileikkaus

Joissakin aiemmissa tutkimuksissa on käytetty menestyksekkäästi merkkien karsimista LLM-päätelmien optimointiin. Näiden menetelmien on kuitenkin kerättävä täydelliset huomiokartat ensimmäisistä ennustetuista tokeneista, jotta voidaan analysoida pikamerkkien tärkeyttä ennen karsimisen aloittamista. Siksi ne eivät sovellu TTFT:n vähentämiseen, koska niiden on silti laskettava kaikki KV-välimuistit esitäyttövaiheen aikana.

Vertailun vuoksi LazyLLM on "erittäin laiska" ja laskee vain tunnukset, jotka ovat tärkeitä seuraavan tunnuksen ennustamiseksi, alkaen ensimmäisestä päättelyn iteraatiosta (esitäytön vaihe).

Ensimmäisessä iteraatiossa keskeinen haaste oli kunkin tunnuksen tärkeyden määrittäminen. Aiempien tutkimusten innoittamana, että merkkien piilotilat kehittyvät, kun ne kulkevat Transformer-kerrosten läpi, tiimin ratkaisu on käyttää kerros kerrokselta merkkien karsimista jokaisessa sukupolven vaiheessa. Tarkemmin sanottuna he käyttävät kunkin kerroksen huomiokarttaa määrittääkseen syöttötunnuksen tärkeyden ennustettavalle tunnukselle.

Tokenin luottamuspisteiden laskemisen jälkeen toinen vaikea ongelma on määrittää kynnys tunnuksen karsimiselle.

Erityisesti eri tasoilla ja eri tehtävissä tämä kynnys voi muuttua huomiopisteiden muuttuessa. Tiimin ratkaisu on käyttää top-k prosenttipisteen valintastrategiaa. Erityisesti, jos tunnuksen luottamuspiste on pienempi kuin syöttötunnuksen k. prosenttipiste, sitä karsitaan. Kun merkki on leikattu, se ei enää osallistu kaikkien myöhempien kerrosten laskemiseen.

Toisin sanoen seuraavien kerrosten käyttämät tunnukset ovat osajoukko aikaisempien kerrosten käyttämistä tokeneista.

Myöhemmät kokeet osoittavat, että kun karsittavan kerroksen sijainti ja leikattujen merkkien määrä ovat erilaiset, myös suorituskyky muuttuu. Tarkemmin sanottuna samalla Transformer-kerroksella mallin suorituskyky heikkenee vähitellen, kun yhä useampia tokeneita poistetaan karsimalla.

He havaitsivat myös, että varhaisten kerrosten karsimiseen verrattuna parempi suorituskyky saavutettiin, kun karsiminen suoritettiin myöhemmissä kerroksissa, mikä osoittaa, että myöhemmät kerrokset ovat vähemmän herkkiä merkkileikkaukselle. Tasapainottaakseen paremmin nopeutta ja tarkkuutta, tiimi käytti progressiivista karsimista kuten kuvassa 4, säilyttäen enemmän tokeneita varhaisissa kerroksissa ja vähentämällä sitten vähitellen merkkien määrää, kun ne virtaavat myöhemmille kerroksille.

Aux Cache (auxiliary cache)

Esipopulaatiovaiheessa ei ole KV-välimuistia, ja jokainen merkki esitetään piilossa. Siksi progressiivinen merkkien karsiminen voidaan saavuttaa poistamalla leikattujen merkkien piilotettu tila. Progressiivisen merkkien karsimisen laajentaminen seuraaviin dekoodausvaiheisiin ei kuitenkaan ole yksinkertaista. Syynä on se, että jokainen dekoodausvaihe käyttää esitäyttövaiheessa laskettua KV-puskuria huomion laskemiseen. Koska LazyLLM suorittaa progressiivisen merkkien karsimisen esipopulaatiovaiheessa, tietyssä tasossa karsitun tunnuksen KV ei näy seuraavan kerroksen KV-välimuistissa.

Muistutuksena on, että LazyLLM-kehys sallii jokaisen sukupolven vaiheen poimia eri merkkien osajoukon täydestä syöttömerkkisekvenssistä kussakin vaiheessa riippumatta siitä, onko niitä karsittu edellisissä vaiheissa. Esimerkiksi seuraavassa dekoodausvaiheessa karsitut tunnukset, joita ei ole KV-välimuistissa, voidaan valita uudelleen huomion laskemista varten. Tässä tapauksessa malli ei voi noutaa näiden tokenien KV-välimuistia.

Intuitiivinen ratkaisu tähän on välittää rahakkeet Transformerin alkuperän läpi. Tämä kuitenkin johtaa saman tunnuksen kaksinkertaiseen laskemiseen ja lopulta hidastaa yleistä sukupolven nopeutta.

Tämän ongelman ratkaisemiseksi tiimi otti käyttöön toisen välimuistin alkuperäisen KV-välimuistin lisäksi: Aux Cache (auxiliary cache).

Jos KV:t, joista on karsittu tokeneita (kuten T4 ja T7 kuvassa 4), eivät näy seuraavien kerrosten KV-välimuistissa, Aux Cache tallentaa niiden piilotetut tilat myöhempien iteraatioiden noutamista varten.

Kuten kuviossa 4 on esitetty, kussakin dekoodausvaiheessa jokainen muuntajakerros hakee ensin aiempien tokenien KV-välimuistin (jos sellainen on olemassa). Niiden tokenien osalta, jotka eivät ole KV-välimuistissa, niiden piilotetut tilat haetaan suoraan edellisen kerroksen Aux-välimuistista ilman, että edellistä kerrosta tarvitsee käydä uudelleen läpi. Aux Cache varmistaa, että jokainen merkki lasketaan enintään kerran kussakin Transformer-kerroksessa, ja varmistaa myös, että LazyLLM on nopeampi kuin tavallinen LLM hitaimmillaan.

koe

Tiimi testasi tätä uutta "laiskaa" lähestymistapaa kahdella suurella kielimallilla: Llama 2 7B ja XGen 7B. Vertailun standardi LLM on sama julkisesti julkaistu esikoulutettu tarkistuspistemalli ilman lisäkoulutusta.

Kokeellinen benchmark on LongBench, usean tehtävän vertailuarvo pitkän sisällön ymmärtämiseen. LongBench-benchmark sisältää 16 tietojoukkoa ja sisältää 6 tehtävää, mukaan lukien yhden asiakirjan Q&A, usean asiakirjan Q&A, yhteenveto, muutaman otoksen oppiminen, synteesitehtävät ja koodin viimeistely.

Arviointimetriikka on kunkin menetelmän tehokkuus ja tehokkuus TTFT-kiihtyvyyden ja tarkkuuden välisen kompromissin suhteen.

tulos

Taulukko 1 antaa TTFT-nopeutuksen ja -tarkkuuden tulokset LazyLLM:lle, standardille LLM:lle ja muille perusmenetelmille.



Tässä taulukossa lähtötaso viittaa standardiin LLM-päätelmään. Satunnainen merkkien pudotus viittaa satunnaisen leikkaamiseen tokeneille. Staattinen merkin karsiminen tarkoittaa kertaluonteista karsimista syöttötunnisteelle edellisten muuntajakerrosten huomiomenetelmän perusteella esitäyttövaiheen aikana. Prompt Compression on nopea pakkausmenetelmä, joka käyttää LLM:ää redundanssin poistamiseen syöttökontekstista.

Kuten taulukosta 1 voidaan nähdä, LazyLLM on kattavasti ylivoimainen TTFT-kiihtyvyydessä, kun taas tarkkuuden heikkeneminen on periaatteessa mitätöntä. On syytä huomauttaa, että LLM:n käyttäminen kehotteiden pakkaamiseen vaatii paljon laskelmia. Siksi, vaikka Prompt Compression nopeuttaa päätelmien tekemistä, sen todellinen TTFT on pidempi kuin tavallinen LLM.

Vaikutus yleiseen rakentamisnopeuteen

Arvioidakseen uuden menetelmän vaikutusta yleiseen sukupolven nopeuteen tiimi analysoi laskelmissa käytettyjen kehotteiden prosenttiosuuden ja sukupolven kiihtyvyyden, katso taulukko 2.



Voidaan nähdä, että LazyLLM-laskelmissa käytettyjen tokenien osuus on aina alle 100%, mikä osoittaa, että LazyLLM ei ole käyttänyt kaikkia tokeneita sukupolven lopussa, mutta teoriassa malli voi käyttää kaikkia tokeneita. Tämä voi tarjota lisäkiihtyvyyttä eri tehtävien kokonaistuotantoprosessiin.

Pudotusnopeudet eri tasoilla

Tiimi analysoi myös leikkauskerroksen sijainnin ja karsittujen merkkien määrän vaikutusta. Tulokset näkyvät kuvassa 6.



Voidaan nähdä, että kun karsiminen suoritetaan samalla Transformer-kerroksella, mitä vähemmän tokeneita on jäljellä, sitä huonompi mallin suorituskyky on. Tämä on myös yhdenmukainen intuitiivisen ymmärryksemme kanssa. Lisäksi verrattuna aikaisemman Transformer-kerroksen karsimiseen, myöhempien kerrosten karsiminen johtaa parempaan suorituskykyyn, mikä osoittaa, että myöhemmät kerrokset ovat vähemmän herkkiä merkkileikkaukselle.

Näiden havaintojen perusteella voidaan sanoa, että progressiivisen merkkileikkauksen tehokkuus on todistettu.

Progressiivinen KV-kasvu

Lopuksi tiimi yritti myös ymmärtää mallin sisäisiä piirteitä käyttämällä token karsimisen logiikkaa. Erityisesti he haluavat tietää kehotteiden kumulatiivisen käyttöosuuden ja vastaavan käyttämättömän osuuden. Tämä "kumulatiivinen tunnuksen käyttö" voidaan määritellä vastaavasti KV-välimuistin kooksi kussakin vaiheessa. Kuva 7 esittää näiden kehotteiden kumulatiivisen käytön LazyLLM:n kussakin vaiheessa.



Tämä tulos tukee hypoteesia, että malli ei koskaan valitse monia tokeneita (vaikka malli voisi teoriassa käyttää kaikkia kehotteen merkkejä.

Ottaen huomioon, että malli voi silti säilyttää tehtävien suorittamisen tarkkuuden, voidaan päätellä, että malli voi tehokkaasti hylätä tokeneja, jotka eivät vaikuta tulosteen laatuun.