Proyek llama.cpp telah memperkenalkan dukungan sparse flash attention (FA) untuk backend Metal, yang secara khusus menargetkan fase prefill dari inferensi model. Pembaruan ini mencakup kernel baru yang memadatkan entri mask hingga ke daftar indeks per-baris dan memperluas kernel FA vektor dengan pengumpulan indeks sparse opsional.
- Implementasi menambahkan gerbang sisi host untuk mengaktifkan jalur sparse ketika n_kv_max lebih besar dari 0 dan kondisi lainnya terpenuhi.
- Perbaikan diterapkan untuk memperbaiki bug pengalamatan baris pada kernel sparse flash attention yang sebelumnya menyebabkan kegagalan dalam kasus multi-baris.
- Teknik optimisasi ditambahkan untuk melakukan kompresi indeks sparse satu kali, menghindari pembacaan mask redundan dengan menyimpan posisi hingga di register per-thread.
- Kasus uji dan benchmark kinerja ditambahkan untuk memvalidasi ukuran kepala, jenis kuantisasi, dan berbagai parameter konfigurasi.
Perubahan ini meningkatkan efisiensi bagi pengguna Metal dengan mengurangi lalu lintas memori selama tahap prefill ketika petunjuk perhatian sparse digunakan.