Attention cache yang dibatasi menciptakan mode kegagalan tertentu pada autoregressive transformer: menghapus semua token lama dapat mengganggu attention meskipun token tersebut tidak lagi membawa konten tugas yang berguna. Beberapa posisi awal dapat menyerap attention mass dari banyak query berikutnya. Jika cache eviction menghapusnya, kualitas generation dapat menurun lebih besar daripada yang diperkirakan dari nilai semantiknya.
Posisi-posisi ini sering disebut attention sinks. Implikasi praktisnya sempit tetapi berguna: streaming cache dapat mempertahankan prefix kecil berisi posisi sink sambil merotasi sisa kapasitasnya untuk token-token terbaru.
Sink berkaitan dengan alokasi attention, bukan fakta yang tersimpan
Untuk satu attention head, query pada posisi t memberikan bobot ke key yang tersimpan di cache melalui softmax atas attention score. Bobot tersebut non-negatif dan jumlahnya satu. Karena itu, sebuah posisi dapat menerima sebagian probability mass bahkan ketika tidak ada token masa lalu yang sangat relevan dengan query saat ini.
Attention sink adalah posisi yang berulang kali menerima mass tersebut dari query-query berikutnya. Perilaku ini berbeda dari semantic retrieval. Token sink tidak harus memuat fakta yang dibutuhkan output selanjutnya. Perannya muncul dari pola attention model.
Perbedaan ini penting saat merancang eviction. Kebijakan yang hanya berdasarkan usia token mengasumsikan bahwa posisi lama secara seragam menjadi tidak diperlukan. Perilaku sink melanggar asumsi tersebut: posisi yang sangat lama dapat tetap berguna secara struktural sementara posisi yang lebih baru membawa konteks aktual terkini.
Sliding window menghapus dua hal sekaligus
Sliding-window cache konvensional mempertahankan W pasangan key-value terbaru dan menghapus semua yang mendahuluinya. Setelah generation melewati batas window, prefix asli menghilang.
Ini memberikan memori yang terbatas, tetapi sekaligus mengubah kumpulan key yang tersedia bagi setiap softmax berikutnya. Jika posisi sink awal sebelumnya terus menerima attention mass, penghapusannya memaksa mass tersebut didistribusikan ulang ke key yang tersisa. Pengulangan operasi ini seiring window bergerak dapat membuat inference menjauh dari pola attention yang terlihat ketika prefix masih utuh.
Cache yang menyadari sink memisahkan prefix dari region yang berotasi. Dengan kapasitas cache C, sistem dapat mencadangkan S entri untuk posisi sink awal dan memakai C - S entri sisanya untuk konteks terbaru:
cache = [sink prefix] + [most recent tokens]Skema ini tidak membuat konteks menjadi tak terbatas. Token di antara prefix yang dipertahankan dan region terbaru tetap dibuang. Prefix yang dipertahankan menangani alokasi attention; region terbaru menyediakan konteks lokal.
Penanganan posisi tetap menjadi bagian dari desain
Mempertahankan pasangan key-value tertentu tidak cukup jika state posisi ditangani secara tidak konsisten. Varian transformer mengodekan posisi di tempat yang berbeda, dan implementasi cache harus mempertahankan asumsi posisi yang digunakan model.
Pada rotary position embeddings, misalnya, rotasi posisi memengaruhi query dan key. Implementasi streaming harus memperhitungkan posisi yang terkait dengan key di cache ketika cache yang terlihat dipadatkan atau digeser. Memperlakukan tensor key-value yang dipertahankan seolah-olah dibuat pada posisi baru yang sembarang dapat mengubah attention score.
Hal ini terpisah dari retensi sink. Satu keputusan menentukan entri mana yang tetap berada di memori; keputusan lain menentukan bagaimana posisi entri tersebut berpartisipasi dalam attention. Desain bounded-cache yang benar harus memenuhi keduanya.
Jumlah sink adalah parameter yang bergantung pada model
Tidak ada ukuran prefix universal yang berlaku untuk setiap transformer. Pola attention bergantung pada arsitektur, parameter, tokenization, dan konfigurasi inference. Mencadangkan terlalu banyak cache untuk posisi sink juga mengurangi ruang yang tersedia bagi konteks terbaru.
Pengukuran yang berguna karena itu bukan sekadar apakah token awal menerima attention. Periksa perilaku generation pada sequence yang jauh lebih panjang daripada kapasitas cache, terutama setelah banyak siklus eviction. Bandingkan window yang hanya berisi token terbaru dengan cache berkapasitas total sama yang mencadangkan prefix kecil. Perbandingan ini mengisolasi pilihan alokasi tanpa memberi salah satu konfigurasi memori tambahan.
Pemeriksaan per-head dapat memberi konteks tambahan karena perilaku attention tidak harus seragam di seluruh head atau layer. Statistik agregat dapat menyembunyikan sebagian kecil head yang secara konsisten memberikan mass ke posisi awal.
Retensi sink tidak memulihkan konteks yang sudah di-evict
Prefix sink yang dipertahankan bukan pengganti long-context memory. Setelah token di bagian tengah keluar dari region yang berotasi, key dan value miliknya tidak lagi tersedia bagi attention biasa. Jika generation berikutnya membutuhkan informasi dari token tersebut, retensi sink tidak dapat merekonstruksinya.
Ini menetapkan batas mekanisme dengan jelas. Attention sinks menangani degradasi akibat penghapusan posisi yang secara struktural persisten dari cache terbatas. Mekanisme ini tidak menyelesaikan retrieval atas konten lama tanpa batas, dan juga tidak menghilangkan kebutuhan untuk mengevaluasi perilaku posisi dan kapasitas cache secara bersamaan.
Untuk streaming inference, pertanyaan yang relevan karena itu bukan hanya berapa banyak token yang muat di memori. Cache eviction juga memilih struktur attention yang tetap bertahan. Mempertahankan prefix sink kecil dapat menjaga struktur tersebut lebih dekat dengan perilaku model yang sudah terbentuk sementara region terbaru terus bergerak maju.