Cum va arăta arhitectura LLM-ului de nouă generație? Această întrebare continuă să stârnească dezbateri — iar colaboratorul și dezvoltatorul Zhihu, Yuxuan, oferă o comparație clară între DeepSeek Sparse Attention (DSA) și Native Sparse Attention (NSA), plus o privire practică asupra implementării operatorilor DSA cu TileLang. 🚀 De ce DSA > NSA (în sarcini pe termen lung): De la experimente de adăugare a DSA la modele mici și comparații cu NSA, DSA performează constant mai bine — în principal datorită a două alegeri cheie de design: 1️⃣ Distilarea Attn-Score → supravegherea explicită pentru selecția indicilor 2️⃣ Rare la nivel de token, nu la nivel de bloc→ cu granulație mai fină, o recuperare mai precisă 🔍 1) Distilarea Attn-Score Puțină atenție depinde de selectarea perechilor cheie-valoare potrivite. DSA supraveghează direct modulul de index folosind scoruri reale de atenție, aliniind antrenamentul cu obiectivul real: "alege jetoanele critice." NSA optimizează în schimb doar pierderea LM, fără a oferi nicio constrângere explicită asupra acurateței indicelui — ceea ce explică performanța sa mai slabă la benchmark-urile de recuperare a documentelor lungi. 🔍 2) Rareza la nivel de jetoane vs la nivel de bloc Acuratețea se scalează cu bugetul de calcul: indexare mai precisă → o recuperare mai bună. Indexarea la nivel de token (DSA) oferă în mod natural o fidelitate mai mare decât la nivel de bloc (NSA). Din această perspectivă, blocajul de performanță al NSA este de așteptat — o întrebare interesantă: Ar ajuta NSA dimensiunea blocului = 8 să țină pasul cu DSA? ⚙️ Adevărata provocare: Instruirea eficientă a DSA Antrenamentul DSA implică Warmup → Sparse Finetune. Provocarea: calcularea și stocarea scorurilor de atenție ale ambelor ramuri. O implementare naivă necesită stocare O(n²) — anulând economisirea memoriei în FlashAttention. Chiar și pre-filtrarea (k=2048, h=512+64) necesită totuși tampone mari. 📎 Cod: 🧩 Fuziunea de Kernel la Salvare (Fig. 1) Pentru a evita stocarea unor Attn-Score-uri intermediare masive, DSA folosește nuclee fuziune. Un truc cheie este combinarea Index-Score + Top-k într-un singur nucleu: • Menținerea unui tampon de 2K • Calcularea scorului de indice pentru fiecare bloc...