À quoi ressemblera l'architecture LLM de nouvelle génération ? Cette question suscite constamment des débats — et le contributeur et développeur de Zhihu, Yuxuan, propose une comparaison nette entre DeepSeek Sparse Attention (DSA) et Native Sparse Attention (NSA), ainsi qu'un aperçu pratique de l'implémentation des opérateurs DSA avec TileLang. 🚀 Pourquoi DSA > NSA (dans les tâches à long contexte) : D'après des expériences ajoutant DSA à de petits modèles et comparant avec NSA, DSA performe systématiquement mieux — principalement en raison de deux choix de conception clés : 1️⃣ Distillation des scores d'attention → supervision explicite pour la sélection des indices 2️⃣ Sparsité au niveau des tokens plutôt qu'au niveau des blocs → récupération plus précise et plus fine 🔍 1) Distillation des scores d'attention L'attention sparse repose sur la sélection des bonnes paires clé-valeur. DSA supervise directement le module d'indexation en utilisant de vrais scores d'attention, alignant l'entraînement avec l'objectif réel : "choisir les tokens critiques." NSA, en revanche, optimise uniquement la perte du LM, ne fournissant aucune contrainte explicite sur la précision de l'index — ce qui explique sa performance plus faible sur les benchmarks de récupération de documents longs. 🔍 2) Sparsité au niveau des tokens vs au niveau des blocs La précision évolue avec le budget de calcul : indexation plus précise → meilleure récupération. L'indexation au niveau des tokens (DSA) offre naturellement une fidélité supérieure à celle au niveau des blocs (NSA). Dans cette perspective, le goulet d'étranglement de la performance de NSA est attendu — une question intéressante : un bloc de taille=8 aiderait-il NSA à rattraper DSA ? ⚙️ Le véritable défi : former DSA efficacement La formation de DSA implique un échauffement → un finetuning sparse. Le défi : calculer et stocker les scores d'attention des deux branches. Une implémentation naïve nécessite un stockage O(n²) — annulant les économies de mémoire de FlashAttention. Même le pré-filtrage (k=2048, h=512+64) exige encore de grands tampons. 📎 Code : 🧩 Fusion de noyaux pour le sauvetage (Fig 1) Pour éviter de stocker d'énormes scores d'attention intermédiaires, DSA utilise des noyaux fusionnés. Un truc clé consiste à fusionner Index-Score + Top-k dans un seul noyau : • Maintenir un tampon de 2K • Calculer l'Index-Score pour chaque bloc...