Sebuah blok multi-head attention dapat memiliki head yang ketika dihapus hanya sedikit mengubah metrik target pada set evaluasi tertentu. Pengamatan ini membuat pemangkasan head attention menarik: identifikasi head berdampak rendah, hapus kontribusinya, lalu pertahankan head yang lebih penting bagi workload target.
Bagian yang sulit bukan membuat output sebuah head menjadi nol. Yang perlu ditentukan adalah apa yang sebenarnya diukur oleh intervensi tersebut dan apakah model hasilnya benar-benar mengeksekusi lebih sedikit pekerjaan. Head yang dimask, head yang dihapus secara struktural, dan kernel attention yang lebih cepat adalah gagasan yang berkaitan, tetapi bukan hasil yang sama.
Sebuah head menempati satu bagian dari proyeksi attention
Anggap sebuah blok attention memiliki H head dengan dimensi head D_h. Proyeksi query, key, dan value menghasilkan lebar internal sebesar:
H * D_hSetiap head menggunakan satu bagian dari representasi hasil proyeksi tersebut. Output attention-nya kemudian digabungkan dengan output head lain dan diteruskan melalui proyeksi output.
Untuk head h, bentuk sederhananya adalah:
head_h = softmax(Q_h K_h^T / sqrt(D_h)) V_hMenghapus sebuah head berarti menghapus atau menetralkan salah satu cabang tersebut. Jika implementasi model menyimpan semua head dalam matriks proyeksi dense, parameter yang terkait dengan sebuah head biasanya berupa bagian dari tensor yang lebih besar, bukan modul independen.
Detail ini penting untuk pemangkasan struktural. Sistem yang hanya mengalikan head_h dengan nol masih menghitung query, key, value, skor attention, dan sering kali kontribusi output-nya. Perilaku model berubah, tetapi biaya eksekusi dense dapat tetap hampir sama.
Masking head adalah alat pengukuran
Cara langsung untuk memperkirakan sensitivitas adalah mengevaluasi model secara normal, lalu memask satu head dan mengukur perubahan pada metrik tugas atau loss. Untuk skor berbasis loss, salah satu definisi yang dapat digunakan adalah:
impact(h) = loss_with_head_h_masked - baseline_lossNilai kecil menunjukkan bahwa intervensi masking tunggal tersebut hanya memberi sedikit dampak pada input dan metrik yang dievaluasi. Hal itu tidak membuktikan bahwa head tersebut redundan secara global.
Interaksi antar-head memperumit interpretasi. Dua head masing-masing dapat terlihat tidak diperlukan ketika dihapus secara terpisah, tetapi menjadi penting ketika keduanya dihapus. Kondisi sebaliknya juga dapat terjadi ketika beberapa head mengodekan fungsi yang tumpang tindih. Karena itu, skor dari ablation terpisah menggambarkan sensitivitas lokal di sekitar model saat ini, bukan anggaran aditif yang dapat dijumlahkan tanpa evaluasi lanjutan.
Distribusi evaluasi juga menentukan batas klaim. Head dengan dampak rendah pada input klasifikasi pendek dapat berperilaku berbeda pada sequence panjang, bahasa lain, atau tugas generasi. Keputusan pemangkasan mewarisi keterbatasan cakupan data yang digunakan untuk memberi skor.
Pemangkasan struktural mengubah bentuk tensor
Penghapusan parameter yang sebenarnya membutuhkan lebih dari runtime mask. Misalkan satu blok attention menghapus r head sementara D_h tetap. Lebar attention aktif menjadi:
(H - r) * D_hBagian yang sesuai pada proyeksi query, key, dan value dapat dihapus, bersama bagian input yang cocok pada proyeksi output attention. Lebar residual stream tidak harus mengecil; proyeksi output tetap dapat memetakan representasi gabungan head yang lebih kecil kembali ke lebar model.
Hal ini menimbulkan batasan implementasi. Library sering mengasumsikan jumlah head tetap atau tata letak tensor yang teratur di seluruh layer. Model dengan jumlah head yang dipertahankan berbeda pada tiap layer mungkin memerlukan serialisasi yang memahami bentuk tensor, pembaruan konfigurasi, dan kernel yang menerima bentuk tersebut. Jika runtime melakukan padding tensor kembali ke lebar semula atau memilih fallback kernel yang tidak efisien, pengurangan teoretis mungkin tidak menghasilkan pengurangan latensi yang berguna.
Jumlah parameter karena itu lebih mudah diprediksi daripada kecepatan wall-clock. Menghapus bagian proyeksi dense mengurangi bobot tersimpan dan operasi aritmetika yang terkait dengan bagian tersebut. Latensi end-to-end juga bergantung pada bentuk kernel, perpindahan memori, launch overhead, batching, panjang sequence, dan utilisasi hardware.
Urutan pemangkasan dapat mengubah hasil
Memberi peringkat semua head sekali lalu menghapus kelompok dengan peringkat terendah mengasumsikan bahwa tingkat kepentingan tetap sama setelah penghapusan. Perubahan struktural dapat membatalkan asumsi itu karena head yang tersisa kini bekerja tanpa kontribusi yang telah dihapus.
Proses iteratif mengukur model, menghapus sejumlah kecil head berdampak rendah, lalu mengukur lagi. Pendekatan ini membutuhkan lebih banyak pekerjaan evaluasi, tetapi membuat skor lebih dekat dengan keadaan model yang akan menerima keputusan pemangkasan berikutnya.
Granularitas pemangkasan juga mengubah hasil rekayasa. Menghapus satu head dari banyak layer dapat menghasilkan bentuk yang tidak teratur. Menghapus jumlah head yang sama dari layer tertentu dapat lebih mudah didukung runtime, meskipun pemeringkatan yang hanya berdasarkan metrik menyarankan pola yang lebih tersebar. Kebijakan kompresi dan batasan eksekusi perlu dipertimbangkan bersama.
Pemeriksaan kualitas memerlukan lebih dari metrik pemangkasan
Skor pemangkasan berguna untuk memilih kandidat, tetapi validasi akhir sebaiknya menggunakan metrik yang menentukan batas perilaku model yang dapat diterima. Untuk classifier, ini dapat mencakup error per kelas, bukan hanya aggregate loss. Untuk generator, kualitas sequence dapat berubah meskipun token-level loss hanya berubah sedikit.
Input yang menekan panjang konteks, pola langka, atau domain tertentu sangat relevan jika kasus tersebut penting bagi aplikasi. Skor ablation head yang berasal dari calibration set sempit dapat melewatkan perilaku di luar set tersebut.
Perbandingan dengan checkpoint yang belum dipangkas juga harus mempertahankan decoding settings, preprocessing, dan data evaluasi yang sama. Jika tidak, perubahan yang dianggap berasal dari pemangkasan dapat tercampur dengan perbedaan inference yang tidak terkait.
Klaim kecepatan harus berasal dari jalur eksekusi deployment
Pemangkasan head attention memiliki dua syarat keberhasilan yang terpisah. Model yang dipertahankan harus memenuhi batas kualitas yang diperlukan, dan runtime deployment harus mengubah struktur baru menjadi penggunaan resource yang lebih rendah.
Syarat pertama ditetapkan melalui evaluasi setelah pemangkasan. Syarat kedua memerlukan pengukuran pada jalur inference yang sebenarnya. Matriks proyeksi yang lebih kecil dapat mengurangi operasi aritmetika sementara latensi hampir tidak berubah jika operasi lain mendominasi. Pada batch size atau panjang sequence yang berbeda, perubahan struktural yang sama dapat memberi efek berbeda pada throughput.
Karena itu, pemangkasan head lebih menyerupai perubahan program numerik di bawah batasan hardware daripada sekadar menghapus fungsi yang tidak digunakan. Kepentingan head menentukan perubahan mana yang dapat ditoleransi; struktur tensor dan perilaku kernel menentukan apakah perubahan tersebut menghasilkan penghematan praktis.