Olet tutkijan haastattelussa OpenAI:ssa. Haastattelija kysyy: "Miten laajentaisit LLM:n kontekstin pituutta 2K:sta 128K:hen?" Sinä: "Hienosäädän mallia pidemmillä dokumenteilla 128K-kontekstilla" Haastattelu ohi. Tässä on mitä jäit huomaamatta:
Kontekstiikkunan laajentamisessa ei ole kyse vain suuremmista matriiseista. Perinteisessä muuntajassa tokenien laajentaminen 8-kertaiseksi lisää muistitarvetta 64-kertaiseksi huomion neliömäisen monimutkaisuuden vuoksi. Katso alla olevaa kuvaa! Joten miten hallitsemme sen? jatkaa... 👇
1) Harva huomio Se rajoittaa huomion laskennan tokenien osajoukkoon seuraavasti: - Paikallisen huomion käyttäminen (merkit huolehtivat vain naapureistaan). - Anna mallin oppia, mihin tokeneihin keskittyä. Mutta tässä on kompromissi laskennallisen monimutkaisuuden ja suorituskyvyn välillä.
Samanlaista ideaa käytettiin ModernBERTissä. → Täysi maailmanlaajuinen huomio joka 3. kerros → Paikallinen huomio (128 merkkiä) muuten Tulos: - 16 kertaa suurempi jakson pituus - Paljon parempi suorituskyky - Muistitehokkain enkooderi Yksinkertainen mutta tehokas. 👇
Tässä on intuitiivinen selitys paperista: Kuvittele itsesi lukemassa kirjaa. Pitääkö sinun jokaisen lukemasi lauseen kohdalla olla täysin tietoinen koko juonesta, jotta ymmärrät suurimman osan siitä (täysi maailmanlaajuinen huomio)? Vai riittääkö tietoisuus nykyisestä luvusta (paikallinen huomio), kunhan silloin tällöin ajattelee sen merkitystä pääjuonen kannalta (globaali huomio)? Suurimmassa osassa tapauksista se on jälkimmäinen.
2) Välähdä huomiota Tämä on nopea ja muistia tehokas menetelmä, joka säilyttää perinteisten tarkkaavaisuusmekanismien tarkkuuden, eli käyttää globaalia huomiota, mutta tehokkaasti. Koko idea pyörii GPU-muistin tietojen liikkeen optimoinnin ympärillä. Ymmärretään!
Joitakin taustatietoja: - Lanka on pienin suoritusyksikkö. - Useat langat muodostavat lohkon. Myös: - Lohkon säikeillä on yhteinen nopea (mutta niukkas) muisti nimeltä SRAM. - Kaikilla lohkoilla on yhteinen globaali muisti nimeltä HBM (runsas mutta hidas). Tarkista tämä 👇
Huomio siirtää suuria matriiseja SRAM:n ja HBM:n välillä: QK:n laskeminen: - Jaa matriisit kierteisiin - laskea ja - Lähetä tuote HBM:lle Softmaxin laskeminen: - Jaa tuote kierteisiin - laskea ja - lähettää tulosteen HBM:lle Toista kaikille kerroksille. Tarkista tämä 👇
Flash-huomio sisältää laitteistotason optimointeja, joissa se käyttää SRAM:ia välitulosten välimuistiin. Tällä tavalla se vähentää tarpeettomia liikkeitä ja tarjoaa jopa 7,6-kertaisen nopeuden tavallisiin huomiomenetelmiin verrattuna. Tarkista tämä 👇
98,94K