KV cache terbatas tampak cocok dengan aturan eviction sederhana: setelah cache penuh, buang pasangan key-value tertua dan pertahankan token terbaru. Pada sebagian transformer decoder-only, aturan ini dapat menurunkan kualitas generasi secara tajam setelah urutan melewati jendela yang dipertahankan. Kegagalan tersebut tidak hanya berasal dari hilangnya konten semantik lama. Token awal dapat menerima attention besar meski teksnya hanya membawa sedikit informasi yang berguna untuk prediksi saat ini.

Perilaku ini umum disebut attention sink. Dampaknya penting bagi desain inferensi streaming karena kebijakan cache yang mempertahankan prefix awal kecil ditambah sliding window terbaru dapat berperilaku sangat berbeda dari sliding window murni dengan batas memori yang serupa.

Softmax attention dapat membuat posisi bernilai rendah berguna secara struktural

Untuk vektor query q, attention terhadap key yang tersimpan di cache memberi bobot ternormalisasi:

a_i = exp(q · k_i) / sum_j exp(q · k_j)

Setiap query mendistribusikan massa attention ke posisi yang terlihat oleh head tersebut. Sebuah token tidak harus membawa konten semantik yang berguna untuk menerima bobot besar. Key miliknya dapat menjadi tujuan yang nyaman bagi massa attention yang tidak diarahkan head ke posisi yang lebih informatif.

Beberapa posisi pertama bersifat khusus karena terlihat oleh hampir semua token berikutnya dalam causal attention. Selama optimasi model, posisi tersebut dapat memperoleh representasi key yang berulang kali menarik attention. Perilaku sink yang muncul merupakan sifat pola attention terlatih, bukan jaminan yang melekat pada string token tertentu.

Perbedaan ini penting untuk eviction cache. Menghapus token lama biasanya berarti menghapus informasi yang tidak lagi dapat diberi attention. Menghapus sink juga dapat mengubah pola normalisasi head yang sebelumnya secara konsisten mengalokasikan bobot ke posisi tersebut. Token yang tersisa kemudian menerima distribusi massa attention berbeda meski seluruh teks terbaru yang relevan secara semantik masih tersedia.

Sliding window murni mengubah domain attention

Misalkan decoder mempertahankan paling banyak W posisi di cache. Dengan kebijakan sliding window murni, token t hanya dapat memberi attention ke rentang terbaru:

[t - W, ..., t - 1]

Setelah panjang urutan melampaui W, setiap operasi decoding mengeluarkan posisi lama berikutnya. Jika model bergantung pada posisi sink awal, key dan value tersebut hilang secara permanen.

Cache yang mempertimbangkan sink dapat mencadangkan S slot untuk token awal dan memakai slot sisanya untuk konteks terbaru:

[prefix S token] + [W - S token terbaru]

Jejak memori tetap terbatas. Riwayat semantik pada jendela terbaru menjadi sedikit lebih pendek karena prefix memakai sebagian slot cache, tetapi struktur attention awal tetap tersedia. Ini merupakan pertukaran alokasi memori yang konkret: S posisi dipakai untuk state prefix persisten, bukan untuk state terbaru tambahan.

Ukuran prefix bergantung pada model. Mempertahankan satu token awal bukan kontrak universal, dan mempertahankan jumlah tetap secara arbitrer tidak menjamin output stabil. Hal yang relevan adalah apakah head attention pada model target bergantung pada posisi awal persisten dalam pola decoding yang digunakan.

Eviction cache dan penanganan posisi adalah persoalan terpisah

Mempertahankan token sink tidak membuat pencatatan posisi menjadi opsional. KV cache menyimpan representasi yang telah dibentuk dengan informasi posisi sesuai arsitektur model. Mengeluarkan posisi tengah dari cache tidak berarti entri yang bertahan dapat diberi label posisi baru secara bebas.

Pada rotary position embeddings, misalnya, rotasi query dan key bergantung pada posisi. Implementasi yang mengubah indeks posisi selama streaming dapat mengubah relasi query-key secara independen dari kebijakan cache. Sebagian sistem serving memakai transformasi posisi atau penanganan khusus cache untuk attention terbatas, tetapi aturan tersebut spesifik terhadap implementasi dan harus sesuai dengan model serta metode inferensi.

Dua sumber kegagalan yang berbeda dapat menghasilkan gejala teks yang mirip:

  • cache menghapus key atau value yang masih dibutuhkan model;
  • perlakuan posisi tidak lagi sesuai dengan asumsi state yang dipertahankan dan query baru.

Eksperimen cache lebih mudah diinterpretasikan ketika hanya satu dimensi berubah pada satu waktu. Membandingkan decoding full-cache, eviction jendela murni, dan eviction prefix-plus-window dengan penanganan posisi identik dapat mengisolasi efek state sink yang dipertahankan.

Attention sink tidak mempertahankan fakta jarak jauh secara umum

Prefix persisten tidak sama dengan memori long-context umum. Token sink dapat menstabilkan perilaku attention tanpa menyimpan detail semantik setiap token yang telah dikeluarkan.

Jika sebuah fakta berada jauh di belakang jendela terbaru dan state KV-nya telah dibuang, cache terbatas yang mempertahankan sink tidak merekonstruksi fakta tersebut. Pendekatan ini cocok untuk generasi streaming dengan batas memori ketika konten sangat lama boleh menjadi tidak dapat diakses. Tugas yang memerlukan akses ke posisi lama arbitrer membutuhkan mekanisme lain, seperti cache lebih besar, retensi selektif berbasis konten, retrieval eksternal, atau arsitektur model yang dirancang untuk pola akses tersebut.

Batas ini juga memengaruhi evaluasi. Perplexity atau kualitas next-token pada urutan streaming menguji stabilitas prediksi lokal, sedangkan probe recall jarak jauh menguji akses ke informasi lama. Kebijakan cache dapat bekerja baik pada yang pertama dan gagal pada yang kedua tanpa kontradiksi.

Perilaku sink dapat berbeda antar-head

Multi-head attention tidak mengharuskan setiap head memakai prefix dengan cara yang sama. Sebagian head dapat menaruh massa besar pada posisi awal, sementara yang lain berfokus pada token terbaru atau lokasi yang bergantung pada konten. Rata-rata bobot attention di seluruh head dapat menyembunyikan struktur ini.

Untuk analisis cache, pola attention per head lebih informatif daripada satu nilai rata-rata seluruh layer. Sejumlah kecil head dengan perilaku sink kuat dapat tetap berpengaruh meski fraksi agregat attention yang dialokasikan ke prefix terlihat kecil.

Hal serupa berlaku antar-layer. Layer awal dan akhir dapat memakai posisi cache secara berbeda. Optimasi serving yang menerapkan satu asumsi eviction untuk setiap layer dan head membuat klaim lebih kuat dibanding optimasi yang didasarkan pada struktur attention yang diamati pada model target.

Memori terbatas mengubah horizon evaluasi

Kebijakan cache dapat terlihat benar pada prompt yang lebih pendek dari kapasitasnya karena eviction belum terjadi. Batas yang relevan dimulai saat generasi melewati titik ketika entri lama harus dikeluarkan.

Pengujian sebaiknya mencakup urutan yang jauh lebih panjang daripada cache yang dikonfigurasi serta membandingkan perilaku sebelum dan sesudah eviction dimulai. Sinyal yang berguna mencakup next-token loss, stabilitas output pada prompt terkontrol, attention yang dialokasikan ke posisi prefix yang dipertahankan, dan jumlah pasti entri KV sepanjang waktu.

Perhitungan memori harus mencakup prefix persisten. Jika batas total adalah W dan S slot dicadangkan, bagian terbaru memiliki kapasitas W - S; memperlakukan jendela terbaru tetap sebesar W akan diam-diam menaikkan anggaran cache.

Perbandingan tambahan dengan full-cache decoding menyediakan referensi, bukan ekspektasi kesetaraan persis. Eviction terbatas memang sengaja menghapus konteks, sehingga divergensi dapat sah ketika konten yang dibuang mulai relevan. Sasaran rekayasa yang lebih sempit adalah menghindari degradasi tambahan akibat menghapus posisi sink yang signifikan secara struktural.

Attention sink memperlihatkan sifat halus pada inferensi transformer: entri cache dapat penting bagi geometri attention meski konten tokennya tampak tidak relevan bagi teks saat ini. Karena itu, kebijakan cache terbatas perlu diperlakukan sebagai perubahan terhadap domain attention model, bukan sekadar reklamasi penyimpanan.