Ricerca
Multi-layer Indexer: sovrapporre selezione e attenzione in DeepSeek Sparse Attention
L’attenzione sparsa riduce il costo dell’inferenza su contesti lunghi rendendo sparsa la matrice di attenzione: ogni query presta attenzione solo a un sottoinsieme della sequenza, scelto secondo uno s
- arXiv
- 2611.03768
- Pubblicato
- 2026-11-02
- Autori
- Serdarcan Dilbaz, Arjun Krishna, Kiran Kamble, Daniel M. Bikel
Abstract degli autori
L’attenzione sparsa riduce il costo dell’inferenza su contesti lunghi rendendo sparsa la matrice di attenzione: ogni query presta attenzione solo a un sottoinsieme della sequenza, scelto secondo uno schema fisso o, nei recenti LLM usati in produzione, appreso per ogni query. In DeepSeek Sparse Attention (DSA), il meccanismo di attenzione di DeepSeek-V3.2 e della famiglia GLM-5, ogni layer è preceduto da un indicizzatore fulmineo che assegna un punteggio all’intera cache e seleziona i k=2048 token con il punteggio più alto a cui il layer dovrà prestare attenzione. Nei contesti lunghi, è la scansione dell’indicizzatore, e non l’attenzione sparsa che alimenta, a determinare il tempo di decodifica. Ma i layer adiacenti selezionano quasi gli stessi token, quindi un layer può usare la selezione dell’layer precedente dell’indicizzatore invece di quella del proprio. In questo modo si elimina la dipendenza: ciascun indicizzatore può così essere eseguito in parallelo con l’attenzione del proprio layer. Il Multi-layer Indexer (MLI) così ottenuto non richiede nuovo addestramento né nuovi pesi. La sua implementazione predefinita non modifica alcun kernel e funziona all’interno del grafo di decodifica di produzione di SGLang; un kernel di decodifica fuso opzionale lo accelera ulteriormente su DeepSeek-V3.2. MLI si combina con IndexCache (il riutilizzo tra layer che GLM-5.2 distribuisce come IndexShare): IndexCache elimina l’indicizzatore da alcuni layer, mentre MLI nasconde la scansione negli altri. Eseguiamo DeepSeek-V3.2 e GLM-5 secondo il protocollo di IndexCache, con rapporti di mantenimento da 1/2 a 1/32 (la frazione di layer che mantengono un indicizzatore) e contesti da 10K a 195K. A parità di rapporto di mantenimento, la combinazione decodifica più velocemente di IndexCache: fino al 14,5% in più su DeepSeek-V3.2 e al 9,8% su GLM-5 con 1/2, e rispettivamente del 7,9% e del 5,1% con 1/4; il vantaggio è massimo quando IndexCache mantiene il maggior numero di indicizzatori e cresce con la lunghezza del contesto. Con un rapporto di mantenimento di 1/r, la combinazione è ancora più veloce di IndexCache con 1/(2r), pur mantenendo il doppio delle nuove selezioni: a 128K raggiunge una velocità di decodifica pari a 1,32x quella del modello senza modifiche con 1/4, superando l’1,28x di IndexCache con 1/8. La sua accuratezza su LongBench, RULER e LongBench v2 resta entro pochi punti percentuali da quella di IndexCache.