Inference transformer autoregresif biasanya menyimpan state key dan value dari token sebelumnya agar setiap token baru dapat melakukan attention ke konteks terdahulu tanpa menghitung ulang state tersebut. Cache bertambah seiring panjang sequence. Untuk stream yang berjalan lama, pertumbuhan itu akhirnya menjadi kendala memori meskipun generation tetap berlangsung satu token pada satu waktu.
KV cache eviction membatasi state tersebut dengan membuang posisi cache tertentu. Efek terhadap memori cukup langsung: lebih sedikit pasangan key-value yang dipertahankan berarti lebih sedikit ruang cache yang terpakai. Efek terhadap model lebih halus. Setelah sebuah posisi dihapus, layer attention berikutnya tidak dapat memakai key dan value yang sebelumnya di-cache dalam komputasi attention biasa. Kebijakan eviction dengan demikian mengubah penggunaan resource sekaligus riwayat attention efektif.
Karena itu, retensi cache merupakan keputusan tentang perilaku model, bukan sekadar detail manajemen memori.
Pertumbuhan cache mengikuti state sequence yang dipertahankan
Dalam causal self-attention, token yang dihasilkan membentuk key dan value untuk setiap layer attention yang relevan. Pada posisi decoding berikutnya, query untuk token baru dibandingkan dengan key yang di-cache, lalu bobot attention yang dihasilkan menggabungkan value yang di-cache.
Gambaran sederhananya:
token t
-> hitung query, key, value
-> query melakukan attention ke key yang dipertahankan dari posisi <= t
-> pertahankan state key-value terpilih untuk token t + 1Tanpa eviction, jumlah posisi yang di-cache meningkat saat sequence bertambah. Penggunaan memori persis bergantung pada arsitektur dan representasi serving: jumlah layer, jumlah key-value head, dimensi head, format numerik, serta layout atau quantization cache ikut berpengaruh. Grouped-query attention, misalnya, memakai lebih sedikit key-value head dibanding multi-head attention biasa dengan jumlah query head yang sama.
Pokoknya tidak bergantung pada detail implementasi tersebut. Jika setiap posisi sebelumnya tetap di-cache, state KV per sequence meningkat bersama panjang konteks yang dipertahankan. Budget cache tetap membutuhkan suatu bentuk truncation, compression, offloading, recomputation, atau selective retention.
Sliding window memberi recency budget yang tetap
Kebijakan terbatas paling sederhana hanya menyimpan W posisi terbaru. Saat posisi baru tiba setelah window penuh, posisi cache tertua di-evict.
sebelum: [41 42 43 44 45]
baru: 46
sesudah: [42 43 44 45 46]Ini menghasilkan batas memori yang jelas dan sesuai untuk workload yang dependency bergunanya terutama bersifat lokal. Kebijakan ini juga menciptakan batasan yang tegas: informasi yang hanya direpresentasikan melalui posisi yang sudah di-evict tidak lagi tersedia secara langsung melalui key dan value posisi tersebut.
Batasan itu dapat muncul jauh setelah titik eviction. Sebuah stream mungkin memuat identifier, constraint, atau pernyataan awal yang baru relevan ribuan token kemudian. Menyimpan token terbaru mempertahankan kontinuitas lokal, tetapi tidak mempertahankan akses long-range secara arbitrer.
Arsitektur model yang memang dirancang atau dilatih dengan local atau sliding-window attention merupakan kasus berbeda. Pola attention-nya sejak awal membatasi posisi yang dapat diakses query. Menerapkan window pada waktu serving ke model yang biasanya memakai full causal attention mengubah konteks yang tersedia dibanding jalur inference standarnya.
Token awal dapat memiliki efek attention yang tidak biasa
Recency murni bukan satu-satunya pola retensi untuk streaming inference. Riset StreamingLLM melaporkan efek yang disebut attention sinks: mempertahankan sejumlah kecil token awal bersama token terbaru menstabilkan streaming generation pada model autoregresif yang dievaluasi, bahkan setelah token di tengah dihapus.
Kebijakan terkait memiliki dua wilayah yang dipertahankan:
[token awal] ... bagian tengah dibuang ... [recent window]Ini tidak memulihkan konteks tengah yang hilang. Kebijakan tersebut mempertahankan posisi awal tertentu yang dapat menerima massa attention besar sekaligus menjaga konteks lokal di dekat posisi decoding saat ini.
Perbedaan itu penting dalam implementasi. Kebijakan cache berbasis attention sinks tidak boleh dianggap sebagai jaminan umum bahwa beberapa token pertama memuat fakta semantik stream. Peran yang diamati berkaitan dengan perilaku attention pada model dan setup tertentu. Fakta tingkat aplikasi yang berada pada posisi yang dibuang tetap dapat menjadi tidak tersedia.
Sistem serving karena itu perlu memperlakukan retensi sink sebagai teknik inference yang bergantung pada model dan memvalidasinya terhadap model family serta workload yang tepat, bukan menganggap fixed prefix apa pun sudah memadai.
Skor attention dapat mengarahkan selective retention
Keluarga kebijakan lain mencoba mempertahankan posisi yang diperkirakan lebih relevan daripada yang ditunjukkan recency sederhana. Skor berbasis attention merupakan salah satu sinyal yang mungkin dipakai. Sistem dapat mempertahankan posisi yang menerima attention tinggi, menggabungkannya dengan recent window, atau memilih cache entry pada granularitas lebih halus seperti attention head individual.
Ini mengubah failure mode. Recency window secara deterministik kehilangan posisi lama. Kebijakan berbasis skor dapat mempertahankan posisi lama, tetapi kriteria pemilihannya didasarkan pada bukti yang tersedia saat seleksi. Query di masa depan mungkin membutuhkan posisi yang sebelumnya tampak tidak penting.
Pertimbangkan interaksi panjang yang memuat dua fakta lama:
A: deployment region = ap-southeast-1
B: retry delay = 400 msJika attention terbaru berulang kali memakai A tetapi tidak B, skor retensi dapat mengutamakan A. Permintaan berikutnya tentang retry timing tetap dapat membutuhkan B. Attention masa lalu merupakan bukti penggunaan masa lalu; itu bukan jaminan relevansi masa depan.
Perilaku per-head menambah komplikasi lain. Attention head yang berbeda dapat memiliki pola akses berbeda. Metode cache yang menerapkan satu ranking token secara seragam pada semua head dapat membuang state yang berguna bagi head dengan pola berbeda. Metode yang membedakan retrieval-oriented head dari head yang lebih lokal mencoba memanfaatkan perbedaan ini, tetapi juga menambah analisis atau kalibrasi khusus model.
Penanganan posisi harus sesuai dengan model
Menghapus cache entry tidak berarti token yang tersisa dapat diberi nomor ulang secara sembarang.
Model transformer mengodekan posisi melalui mekanisme yang ditentukan arsitektur, seperti rotary position embeddings atau skema positional lainnya. Implementasi serving harus mempertahankan penanganan posisi yang kompatibel dengan model dan transformasi cache yang diterapkan. Memperlakukan entry yang dipertahankan seolah sejak awal menempati sequence kontigu yang lebih pendek dapat mengubah komputasi attention.
Ini salah satu alasan KV eviction tidak ekuivalen dengan menghapus teks dari input string lalu menjalankan inference biasa pada teks yang lebih pendek. Cached state dihitung dalam konteks positional tertentu, dan metode serving menentukan cara posisi berikutnya berinteraksi dengan state yang dipertahankan.
Dukungan framework juga berpengaruh. Kebijakan cache yang diterapkan oleh serving engine dapat bergantung pada attention kernel, layout cache, atau pencatatan posisi yang khusus model. Perilaku sebuah metode riset tidak dapat disimpulkan hanya dari aturan retensi tingkat tingginya.
Penghematan memori dan retensi semantik adalah pengukuran terpisah
Cache terbatas dapat memenuhi target memori secara tepat tetapi tetap merusak kualitas output untuk workload yang bergantung pada konteks yang telah di-evict. Karena itu, perhitungan memori tidak dapat menjadi satu-satunya evaluasi.
Evaluasi yang berguna memisahkan setidaknya tiga pertanyaan.
Pertama, apakah kebijakan mempertahankan batas cache yang dimaksud pada panjang sequence dan kondisi batching yang realistis? Ini memeriksa sasaran sistem.
Kedua, apakah kebijakan mempertahankan perilaku model yang dibutuhkan aplikasi? Pengujian perlu mencakup dependency pada berbagai jarak, terutama fakta atau constraint yang melintasi batas eviction. Kemiripan teks agregat dapat melewatkan kegagalan pada identifier persis, simbol kode, nilai numerik, atau instruksi.
Ketiga, berapa biaya latency yang menyertai kebijakan tersebut? Memilih entry, memindahkan blok cache, menghitung skor retensi, atau memakai kernel khusus dapat menambah kerja. Metode yang menyimpan lebih sedikit entry tidak otomatis mengurangi end-to-end latency pada setiap serving stack.
Pengukuran tersebut perlu memakai pengaturan decoding yang sama saat membandingkan kebijakan retensi. Perbedaan sampling dapat menyamarkan apakah perubahan output berasal dari penanganan cache atau randomness pemilihan token.
Kebijakan retensi perlu mengikuti pola dependency
Cache eviction paling dapat dipertanggungjawabkan ketika aplikasi memiliki batas yang diketahui atas riwayat berguna atau ketika evaluasi menunjukkan selective retention mempertahankan dependency yang relevan. Feed berkelanjutan dengan struktur sangat lokal dapat cocok dengan recent-window policy. Workload yang memerlukan recall persis dari posisi terdahulu secara arbitrer memberi batasan yang jauh lebih berat pada bounded cache.
External state dapat mengubah batas tersebut. Aplikasi dapat mengekstrak fakta tahan lama ke structured storage atau mengambil kembali materi terdahulu yang relevan ke prompt. Desain itu memindahkan sebagian long-range dependency ke luar raw KV cache. Hal tersebut tidak membuat eviction lossless; sistem mendapat jalur lain untuk memulihkan informasi terpilih.
Batas praktisnya sederhana: KV cache adalah model state untuk attention, bukan durable memory store. Setelah sistem serving menghapus entry, posisi tersebut harus dianggap tidak tersedia bagi attention biasa berikutnya kecuali mekanisme lain secara eksplisit memulihkan informasinya. Fixed memory budget dengan demikian juga merupakan kebijakan tetap tentang bagian masa lalu mana yang tetap dapat dijangkau secara komputasional.