Como será a arquitetura LLM de próxima geração? Esta questão continua a gerar debates — e o colaborador e desenvolvedor do Zhihu, Yuxuan, oferece uma comparação afiada entre DeepSeek Sparse Attention (DSA) e Native Sparse Attention (NSA), além de uma visão prática sobre a implementação de operadores DSA com TileLang. 🚀 Por que DSA > NSA (em tarefas de longo contexto): A partir de experimentos que adicionam DSA a modelos pequenos e comparam com NSA, DSA consistentemente apresenta um desempenho melhor — principalmente devido a duas escolhas de design chave: 1️⃣ Destilação de Attn-Score → supervisão explícita para seleção de índices 2️⃣ Escassez a nível de token em vez de a nível de bloco → recuperação mais precisa e detalhada 🔍 1) Destilação de Attn-Score A atenção esparsa depende da seleção dos pares chave-valor corretos. DSA supervisiona diretamente o módulo de índice usando verdadeiros scores de atenção, alinhando o treinamento com o objetivo real: "escolher os tokens críticos." A NSA, por outro lado, otimiza apenas a perda do LM, não fornecendo nenhuma restrição explícita sobre a precisão do índice — o que explica seu desempenho mais fraco em benchmarks de recuperação de documentos longos. 🔍 2) Escassez a nível de Token vs a nível de Bloco A precisão escala com o orçamento computacional: indexação mais precisa → melhor recuperação. A indexação a nível de token (DSA) naturalmente resulta em maior fidelidade do que a nível de bloco (NSA). Sob essa perspectiva, o gargalo de desempenho da NSA é esperado — uma questão interessante: um tamanho de bloco=8 ajudaria a NSA a alcançar a DSA? ⚙️ O Verdadeiro Desafio: Treinar DSA de Forma Eficiente O treinamento de DSA envolve Warmup → Ajuste Fino Esparso. O desafio: computar e armazenar os scores de atenção de ambos os ramos. Uma implementação ingênua requer O(n²) de armazenamento — anulando as economias de memória do FlashAttention. Mesmo a pré-filtragem (k=2048, h=512+64) ainda exige grandes buffers. 📎 Código: 🧩 Fusão de Kernels para o Resgate (Fig 1) Para evitar armazenar scores de atenção intermediários massivos, DSA utiliza kernels fundidos. Um truque chave é mesclar Index-Score + Top-k em um único kernel: • Manter um buffer de 2K • Calcular Index-Score para cada bloco...