Hoe zal de next-gen LLM-architectuur eruitzien? Deze vraag blijft debatten oproepen — en Zhihu-bijdrager & ontwikkelaar Yuxuan biedt een scherpe vergelijking tussen DeepSeek Sparse Attention (DSA) en Native Sparse Attention (NSA), plus een praktische kijk op het implementeren van DSA-operators met TileLang. 🚀 Waarom DSA > NSA (in lange-contexttaken): Uit experimenten waarbij DSA aan kleine modellen werd toegevoegd en vergeleken met NSA, blijkt dat DSA consequent beter presteert — voornamelijk vanwege twee belangrijke ontwerpkeuzes: 1️⃣ Attn-Score distillatie → expliciete supervisie voor indexselectie 2️⃣ Token-niveau sparsiteit in plaats van blok-niveau → fijnmaziger, nauwkeuriger ophalen 🔍 1) Attn-Score Distillatie Sparce attention hangt af van het selecteren van de juiste key-value paren. DSA superviseert direct de indexmodule met behulp van echte aandachtsscores, waardoor de training wordt afgestemd op het werkelijke doel: "kies de kritische tokens." NSA optimaliseert daarentegen alleen de LM-verlies, zonder expliciete beperking op de indexnauwkeurigheid — wat zijn zwakkere prestaties op benchmarks voor lange documentophaling verklaart. 🔍 2) Token- vs Blok-Niveau Sparsiteit Nauwkeurigheid schaalt met het rekenbudget: nauwkeuriger indexeren → beter ophalen. Token-niveau indexeren (DSA) levert van nature een hogere trouw dan blok-niveau (NSA). Vanuit dit perspectief is de prestatieknelpunt van NSA te verwachten — een interessante vraag: Zou blok-grootte=8 NSA helpen om DSA in te halen? ⚙️ De Werkelijke Uitdaging: DSA Efficiënt Trainen DSA-training omvat Warmup → Sparse Finetune. De uitdaging: het berekenen en opslaan van de aandachtsscores van beide takken. Een naïeve implementatie vereist O(n²) opslag — wat de geheugensbesparingen van FlashAttention tenietdoet. Zelfs pre-filtering (k=2048, h=512+64) vereist nog steeds grote buffers. 📎 Code: 🧩 Kernelfusie als Oplossing (Fig 1) Om het opslaan van enorme tussenliggende Attn-Scores te vermijden, gebruikt DSA samengevoegde kernels. Een belangrijke truc is het samenvoegen van Index-Score + Top-k in één kernel: • Houd een 2K-buffer aan • Bereken Index-Score voor elk blok...