Seperti apa arsitektur LLM generasi berikutnya? Pertanyaan ini terus memicu perdebatan - dan kontributor & pengembang Zhihu Yuxuan menawarkan perbandingan tajam antara DeepSeek Sparse Attention (DSA) dan Native Sparse Attention (NSA), ditambah pandangan praktis dalam menerapkan operator DSA dengan TileLang. 🚀 Mengapa DSA > NSA (dalam tugas konteks panjang): Dari eksperimen menambahkan DSA ke model kecil dan membandingkan dengan NSA, DSA secara konsisten berkinerja lebih baik — terutama karena dua pilihan desain utama: 1️⃣ Distilasi Attn-Score → pengawasan eksplisit untuk pemilihan indeks 2️⃣ Jarangnya tingkat token daripada tingkat Blok→ pengambilan yang lebih halus dan lebih akurat 🔍 1) Distilasi Attn-Score Perhatian yang jarang bergantung pada pemilihan pasangan nilai kunci yang tepat. DSA secara langsung mengawasi modul indeks menggunakan skor perhatian yang sebenarnya, menyelaraskan pelatihan dengan tujuan aktual: "pilih token kritis." NSA sebaliknya hanya mengoptimalkan kehilangan LM, tidak memberikan batasan eksplisit pada akurasi indeks - yang menjelaskan kinerjanya yang lebih lemah pada tolok ukur pengambilan dokumen panjang. 🔍 2) Sparsity Tingkat Token vs Blok Akurasi berskala dengan anggaran komputasi: pengindeksan yang lebih presisi → pengambilan yang lebih baik. Pengindeksan tingkat token (DSA) secara alami menghasilkan kesetiaan yang lebih tinggi daripada tingkat blok (NSA). Dari perspektif ini, kemacetan kinerja NSA diharapkan — pertanyaan menarik: Akankah block-size=8 membantu NSA mengejar DSA? ⚙️ Tantangan Sebenarnya: Melatih DSA Secara Efisien Pelatihan DSA melibatkan Warmup → Sparse Finetune. Tantangannya: menghitung dan menyimpan skor perhatian kedua cabang. Implementasi naif membutuhkan penyimpanan O(n²) — meniadakan penghematan memori FlashAttention. Bahkan pra-penyaringan (k=2048, h=512+64) masih menuntut buffer yang besar. 📎 Kode: 🧩 Kernel Fusion untuk Menyelamatkan (Gambar 1) Untuk menghindari penyimpanan Attn-Scores menengah yang besar, DSA menggunakan kernel yang menyatu. Trik utamanya adalah menggabungkan Index-Score + Top-k dalam satu kernel: • Pertahankan buffer 2K • Komputasi Index-Score untuk setiap blok...