Как будет выглядеть архитектура следующего поколения LLM? Этот вопрос продолжает вызывать споры — и участник Zhihu и разработчик Юйсюань предлагает резкое сравнение между DeepSeek Sparse Attention (DSA) и Native Sparse Attention (NSA), а также практический взгляд на реализацию операторов DSA с помощью TileLang. 🚀 Почему DSA > NSA (в задачах с длинным контекстом): Из экспериментов, добавляющих DSA к небольшим моделям и сравнивающих с NSA, DSA последовательно показывает лучшие результаты — в основном благодаря двум ключевым дизайнерским решениям: 1️⃣ Дистилляция Attn-Score → явный контроль за выбором индекса 2️⃣ Разреженность на уровне токенов, а не на уровне блоков → более тонкая, более точная выборка 🔍 1) Дистилляция Attn-Score Разреженное внимание зависит от выбора правильных пар ключ-значение. DSA напрямую контролирует индексный модуль, используя истинные оценки внимания, согласовывая обучение с фактической целью: "выбрать критические токены." NSA, наоборот, оптимизирует только LM-убыток, не предоставляя явных ограничений на точность индекса — что объясняет его более слабые результаты на бенчмарках выборки длинных документов. 🔍 2) Разреженность на уровне токенов против уровня блоков Точность масштабируется с вычислительным бюджетом: более точная индексация → лучшая выборка. Индексация на уровне токенов (DSA) естественным образом дает более высокую точность, чем на уровне блоков (NSA). С этой точки зрения, узкое место производительности NSA ожидаемо — интересный вопрос: поможет ли размер блока=8 NSA догнать DSA? ⚙️ Реальная проблема: Эффективное обучение DSA Обучение DSA включает Разогрев → Разреженная донастройка. Проблема: вычисление и хранение оценок внимания обеих ветвей. Наивная реализация требует O(n²) памяти — что отменяет экономию памяти FlashAttention. Даже предварительная фильтрация (k=2048, h=512+64) все еще требует больших буферов. 📎 Код: 🧩 Слияние ядер на помощь (Рис. 1) Чтобы избежать хранения огромных промежуточных Attn-Scores, DSA использует объединенные ядра. Ключевой трюк заключается в объединении Index-Score + Top-k в одном ядре: • Поддерживать буфер 2K • Вычислить Index-Score для каждого блока...