KV cache dengan kapasitas tetap dapat mencegah memori inferensi terus bertambah pada aliran token yang panjang. Namun, membuang semua token lama secara ketat berdasarkan urutan kedatangan dapat mengganggu attention lebih besar daripada sekadar hilangnya isi token tersebut. Pada sebagian transformer autoregresif, posisi awal menerima bobot attention yang berarti walaupun semantik tokennya tidak berkaitan langsung dengan prediksi saat ini. Posisi seperti ini disebut attention sink.
Konsekuensi pada serving cukup spesifik: sliding cache yang mempertahankan prefix awal kecil bersama token terbaru dapat berperilaku berbeda dari cache berukuran sama yang hanya berisi token paling baru. Mekanisme ini berkaitan dengan state attention dan pengelolaan posisi, bukan pemulihan teks lama yang sudah dibuang.
Softmax tetap membagi probabilitas ke posisi yang terlihat
Untuk satu query pada satu attention head, causal self-attention menghasilkan bobot ternormalisasi atas key yang masih terlihat:
scores = (q K^T) / sqrt(d)
weights = softmax(scores + mask)
output = weights VJumlah bobot bernilai satu pada posisi yang tersedia. Model karena itu dapat membentuk pola saat beberapa posisi menyerap probabilitas tanpa keterkaitan kuat dengan isi token yang berguna. Pengamatan empiris mengenai attention sink menemukan pola semacam ini pada posisi token awal di beberapa konfigurasi transformer autoregresif.
Perilaku tersebut bukan jaminan matematis bahwa token pertama pasti menjadi sink. Kekuatannya bergantung pada arsitektur, training, representasi posisi, layer, head, dan input. Implementasi serving tidak dapat menetapkan satu ukuran prefix universal hanya dari mekanisme ini.
FIFO eviction menghapus isi sekaligus target attention yang sudah terbentuk
Misalkan kapasitas cache hanya enam posisi setelah aliran yang lebih panjang diproses. Retensi FIFO murni dapat berisi state terbaru saja:
... dibuang ... | t19 t20 t21 t22 t23 t24Layout yang mempertahankan sink dapat menyediakan sebagian kapasitas untuk prefix awal:
t0 t1 | ... dibuang ... | t21 t22 t23 t24Kedua layout tetap membuang konteks historis. Layout kedua tidak mengembalikan informasi dari t2 sampai t20. Ia hanya mempertahankan state key-value awal tertentu sambil menyimpan window terbaru.
Pemisahan ini mencegah attention sink dianggap sebagai memori jangka panjang. Fakta yang hanya terdapat pada token tengah yang sudah dibuang tidak lagi tersedia secara langsung melalui entri KV tersebut. Retensi prefix menangani stabilitas attention saat cache dipangkas; mekanisme itu tidak membuat cache terbatas setara secara semantik dengan full-context attention.
Pengelolaan posisi menjadi bagian dari kebenaran cache
KV eviction tidak cukup didefinisikan sebagai daftar tensor yang dipertahankan. Attention juga bergantung pada representasi posisi yang terkait dengan state tersebut.
Pada absolute position embeddings, cached state sudah mencerminkan posisi yang dipakai ketika state dibuat. Pada rotary position embeddings, rotasi yang bergantung pada posisi diterapkan pada query dan key. Runtime yang menggeser, mengindeks ulang, atau merekonstruksi cached state harus mempertahankan semantik posisi yang diharapkan model dan kernel attention.
Hal ini semakin relevan ketika prefix tetap dan recent window yang bergerak berada dalam satu cache. Kedekatan indeks pada buffer ringkas tidak berarti token tersebut berdekatan pada aliran asli. Runtime dapat memakai strategi pengelolaan posisi yang berbeda, sehingga indeks buffer tidak boleh dianggap sebagai posisi model tanpa memeriksa kontrak implementasinya.
Prefix sink memakai bagian dari kapasitas yang sama
Mempertahankan token sink memiliki biaya kapasitas langsung. Jika batas cache adalah C, prefix memakai S posisi, dan tidak ada region cadangan lain, maksimal C - S posisi tersedia untuk recent window yang bergerak.
Prefix yang lebih besar berarti cakupan riwayat terbaru lebih pendek pada kapasitas cache tetap. Prefix yang lebih kecil menyediakan lebih banyak state terbaru, tetapi mungkin tidak cukup mempertahankan pola attention pada model tertentu. Tidak ada satu konstanta yang tepat untuk semua model dan runtime.
Batas memori juga tetap mencakup geometri KV biasa: jumlah layer yang memakai cache, KV head, head dimension, representasi elemen, layout batch atau request, serta overhead allocator. Retensi sink mengubah posisi token yang menempati cache; mekanisme ini tidak menghilangkan komponen memori lainnya.
Attention sink berbeda dari sliding-window attention
Model dengan sliding-window attention secara arsitektural memiliki pola attention yang ditentukan model untuk layer terkait. Runtime yang memangkas KV cache dari model yang semula memakai causal attention lebih luas sedang menerapkan batas serving setelah komputasi model ditetapkan.
Retensi cache yang mempertahankan sink dapat mengurangi kegagalan akibat pemangkasan tersebut pada konfigurasi yang sesuai, tetapi tidak mengubah full attention menjadi sliding-window attention native. Sebaliknya, model yang sejak awal memakai local attention terbatas dapat memiliki kebutuhan cache yang ditentukan arsitekturnya, bukan oleh kebijakan sink eksternal.
Pemisahan yang sama berlaku pada kuantisasi KV cache. Kuantisasi mengubah presisi representasi state yang dipertahankan; sink-aware eviction mengubah posisi yang tetap tersedia. Keduanya dapat dipakai bersamaan, tetapi menangani komponen memori dan mode error yang berbeda.
Validasi perlu melewati batas kapasitas cache
Kebijakan cache dapat terlihat benar pada prompt yang lebih pendek dari kapasitas karena eviction belum terjadi. Perilakunya baru berubah setelah panjang aliran melewati batas cache. Pengujian karena itu perlu memasuki fase eviction dan membandingkan output dengan referensi yang sesuai untuk model serta konfigurasi posisi yang sama.
Kesamaan token secara persis tidak menjadi jaminan bagi metode cache yang mengaproksimasi perilaku full-context. Evaluasi dapat memeriksa pergeseran output, perilaku tugas, stabilitas numerik, okupansi cache, dan latency pada runtime yang benar-benar dipakai. Batas yang dapat diterima ditentukan kebutuhan aplikasi, bukan oleh retensi sink saja.
Attention sink menunjukkan bahwa KV eviction bukan sekadar antrean penyimpanan. Setelah runtime menghapus state dari konteks attention, pemilihan token dan semantik posisi ikut memengaruhi perilaku model. Mempertahankan prefix kecil dapat menyediakan target attention yang tetap sambil membatasi memori, tetapi konteks tengah yang dibuang tetap tidak tersedia. Batas semantik tersebut perlu tetap eksplisit dalam desain serving.