Du er i et intervju som forsker hos OpenAI. Intervjueren spør: "Hvordan ville du utvidet kontekstlengden til en LLM fra 2K til 128K tokens?" Du: «Jeg finjusterer modellen på lengre dokumenter med 128K kontekst.» Intervjuet er over. Her er det du gikk glipp av:
Å utvide kontekstvinduet handler ikke bare om større matriser. I en tradisjonell transformator øker utvidelse av tokens med 8x minnebehovet med 64x på grunn av den kvadratiske kompleksiteten til oppmerksomheten. Se bildet nedenfor! Så, hvordan håndterer vi det? fortsette... 👇
1) Sparsom oppmerksomhet Den begrenser oppmerksomhetsberegningen til et delsett av tokens ved å: - Bruke lokal oppmerksomhet (tokens ivaretar bare naboene). - La modellen lære hvilke tokens den skal fokusere på. Men dette har en avveining mellom beregningskompleksitet og ytelse.
En lignende idé ble brukt i ModernBERT. → Full global oppmerksomhet hvert tredje lag → Lokal oppmerksomhet (128 brikker) ellers Resultat: - 16 ganger større sekvenslengde - Mye bedre ytelse - Mest minne-effektive koder Enkelt, men kraftfullt.
Her er en intuitiv forklaring hentet fra papiret: Se for deg at du leser en bok. For hver setning du leser, trenger du å være fullstendig klar over hele handlingen for å forstå det meste av det (full global oppmerksomhet)? Eller er bevissthet om det nåværende kapittelet nok (lokal oppmerksomhet), så lenge du av og til tenker tilbake på dets betydning for hovedplottet (global oppmerksomhet)? I de aller fleste tilfeller er det sistnevnte.
2) Flash oppmerksomhet Dette er en rask og minneeffektiv metode som beholder nøyaktigheten til tradisjonelle oppmerksomhetsmekanismer, det vil si at den bruker global oppmerksomhet, men effektivt. Hele ideen dreier seg om å optimalisere databevegelsen i GPU-minnet. La oss forstå!
Noen bakgrunnsdetaljer: - Tråden er den minste utførelsesenheten. - Flere tråder danner en blokk. Også: - Tråder i en blokk deler et raskt (men lite) minne kalt SRAM. - Alle blokker deler et globalt minne kalt HBM (rikelig, men sakte). Sjekk dette 👇
Oppmerksomheten flytter store matriser mellom SRAM og HBM: Slik beregner du QK: - distribuere matriser til tråder - beregne, og - sende produktet til HBM Slik beregner du softmax: - distribuere produktet til tråder - beregne, og - Send utdata til HBM Gjenta for alle lag. Sjekk dette 👇
Flash-oppmerksomhet involverer optimaliseringer på maskinvarenivå der den bruker SRAM til å bufre de mellomliggende resultatene. På denne måten reduserer den overflødige bevegelser, og gir en hastighet på opptil 7,6 ganger i forhold til standard oppmerksomhetsmetoder. Sjekk dette 👇
3) DeepSeek Sparse Attention (DSA) DeepSeeks nye V3.2-modell introduserer DeepSeek Sparse Attention (DSA), som reduserer kompleksiteten fra O(L²) til O(Lk), hvor k er fast. Slik fungerer det: En lettvekts Lightning Indexer vurderer hvilke tokens som faktisk betyr noe for hver spørring. Lite antall hode, kjører i FP8, beregningsmessig billig. Deretter henter en seleksjonsmekanisme kun de øverste k nøkkelverdioppføringene. Hovedinnsikten er at kun 2048 tokens blir valgt per spørring, uavhengig av kontekstens lengde. Så den kostbare oppmerksomhetsberegningen skjer på denne lille delmengden, ikke hele 128K-sekvensen.
Ved 128K-kontekst faller forhåndsfyllingskostnadene fra ~0,65 til ~0,35 dollar per million tokens. Og dekoding faller fra ~$2,4 til ~$0,8. Og prestasjonen forblir den samme. På noen langtidskontekst-benchmarks scorer V3.2 faktisk høyere. Sparsom oppmerksomhet er ikke noe nytt. Men å få det til å fungere uten å miste kvalitet er vanskelig. Hva er noen andre teknikker for å øke kontekstlengdene til LLM-er?
152,61K