Prefix cache dapat menghilangkan komputasi prefill yang berulang tanpa mengubah output model, tetapi hanya jika key dan value yang tersimpan mewakili konteks prefix yang sama dengan state yang seharusnya dihasilkan request baru. Kecocokan teks yang terlihat belum cukup. Jalur serving pada akhirnya bekerja dengan token ID, posisi, parameter model, dan state attention yang bergantung pada implementasi.

Batas ini membuat prefix caching berbeda dari cache teks biasa. Cache teks menyimpan hasil yang terkait dengan sebuah input. KV prefix cache menyimpan state perantara yang validitasnya bergantung pada komputasi yang membentuknya.

Cache mewakili state, bukan teks sumber

Pada sebuah layer transformer, entri cache diturunkan dari hidden state setelah prefix melewati komputasi sebelumnya. Dalam bentuk attention yang disederhanakan, state token h_i menghasilkan key dan value:

k_i = W_K h_i
v_i = W_V h_i

Komputasi nyata dapat mencakup layout multi-head atau grouped-query, transformasi posisi, normalisasi, dan detail lain yang spesifik terhadap arsitektur. Intinya, k_i dan v_i tidak ditentukan oleh string karakter yang terlihat saja.

Dua request yang menampilkan teks sama dapat menghasilkan tokenisasi berbeda jika konfigurasi tokenizer atau preprocessing berbeda. Request dengan token ID yang sama pada posisi berbeda juga dapat menghasilkan state attention yang tidak kompatibel pada arsitektur yang memasukkan posisi ke representasi cache. Pemakaian ulang pada kondisi yang tidak cocok akan mengubah state yang diterima token berikutnya.

Karena itu, cache key yang aman harus mengidentifikasi input model efektif serta setiap kondisi serving yang dapat mengubah representasi cache. Field persisnya bergantung pada implementasi; invariannya tetap sama.

Identitas prefix mencakup urutan token

Autoregressive attention membuat state pada suatu posisi prefix bergantung pada konteks yang tersedia di posisi tersebut. Jika dua request memiliki token ID yang sama hanya setelah perbedaan sebelumnya, rentang yang kembali sama itu pada umumnya bukan segmen cache independen yang dapat dipakai ulang.

Perhatikan dua urutan token berikut:

A: [11, 24, 31, 42, 57]
B: [11, 24, 99, 42, 57]

Dua posisi pertama membentuk prefix yang sama. Token 42 dan 57 kembali sama setelahnya, tetapi hidden state keduanya dapat berbeda karena konteks sebelumnya berbeda. Prefix cache dapat memakai ulang segmen awal yang sama; kesamaan token ID pada bagian berikutnya tidak berarti KV state juga sama.

Hal yang sama membuat cache berbasis block melacak block prefix secara berurutan, bukan memperlakukannya sebagai kumpulan tanpa urutan. Kecocokan sebuah block berguna hanya jika seluruh state sebelumnya yang dibutuhkan block tersebut juga kompatibel.

Penanganan posisi termasuk dalam syarat validitas

Informasi posisi dapat masuk ke attention melalui beberapa mekanisme. Pada rotary position embeddings, misalnya, rotasi yang bergantung pada posisi diterapkan ke komponen query dan key. Arsitektur lain dapat memakai mekanisme posisi yang berbeda.

Jika prefix dalam cache dipindahkan ke posisi logis lain, reuse secara langsung mungkin tidak lagi mewakili komputasi yang dilakukan prefill tanpa cache. Beberapa implementasi serving dapat menyediakan transformasi atau layout cache khusus, tetapi perilaku tersebut merupakan properti implementasi, bukan jaminan umum KV caching.

Batas konservatifnya jelas: entri cache perlu mempertahankan interpretasi posisi saat entri itu dibuat, kecuali implementasi serving secara eksplisit mendefinisikan konversi yang benar.

Attention mask dan struktur sequence dapat menimbulkan batas serupa. State cache yang dibuat dengan satu pola visibility tidak otomatis valid pada pola visibility lain meski token ID sama.

Identitas model masuk ke batas cache

KV state merupakan hasil dari parameter model. Checkpoint, adapter, atau set parameter yang berbeda dapat mengubah key dan value hasil proyeksi untuk urutan token yang sama.

Sistem serving karena itu perlu mencegah entri dari satu konfigurasi model efektif digunakan oleh konfigurasi yang tidak kompatibel. Bergantung pada stack, identitas efektif dapat mencakup base checkpoint beserta adapter atau komponen lain yang mengubah forward computation.

Precision dan detail kernel memerlukan pembedaan yang lebih hati-hati. Kernel atau format numerik berbeda dapat menghasilkan state yang berbeda secara numerik tanpa harus mendefinisikan model semantik yang berbeda. Kemungkinan berbagi buffer cache antarjalur eksekusi tersebut bergantung pada kompatibilitas representasi, layout memori, dan jaminan serving engine. Hal itu tidak dapat disimpulkan dari nama model saja.

Reuse prefix dan decode caching menangani pengulangan yang berbeda

Autoregressive decoding biasa mempertahankan KV state dari token yang sudah diproses dalam request saat ini. Pada langkah generation berikutnya, model menghitung state token baru tanpa menghitung ulang seluruh sequence sebelumnya.

Prefix caching memperluas reuse ke beberapa request. Sistem mengenali bahwa request baru dimulai dengan prefix yang state kompatibelnya sudah tersedia, lalu melewati sebagian komputasi prefill yang terkait.

Perbedaan ini memengaruhi lifecycle dan isolasi. Decode cache per request dapat dibuang saat generation selesai. Prefix cache lintas request memerlukan kebijakan eviction, aturan identitas cache, dan kontrol isolasi yang sesuai dengan data yang dipertahankan. Pilihan operasional tersebut tidak mengubah syarat matematis reuse, tetapi menentukan apakah entri yang kompatibel secara matematis juga layak dibagikan.

Kecocokan yang lebih panjang tidak memperbaiki entri yang tidak valid

Cache-hit rate yang tinggi dapat terlihat menarik meski aturan identitasnya terlalu longgar. Jika cache menganggap dua konteks yang tidak kompatibel sebagai konteks setara, hit rate yang lebih besar justru membuat lebih banyak request memakai state yang semestinya dihitung ulang.

Validasi karena itu perlu membandingkan eksekusi dengan cache terhadap jalur tanpa cache pada model dan kondisi request yang sama. Pertanyaan yang relevan adalah apakah reuse mempertahankan perilaku output yang diharapkan serving engine dalam batas numerik yang didokumentasikan, bukan sekadar apakah lookup berhasil.

Cache-key collision juga perlu dibedakan dari ekuivalensi yang memang disengaja. Hash dapat mengidentifikasi block token secara ringkas, tetapi nilai hash yang sama bukan bukti matematis bahwa konteks dasarnya sama, kecuali implementasi memverifikasi informasi yang memadai atau memang menerima risiko collision sebagai bagian dari desain. Konstruksi hash dan penanganan collision adalah bagian dari implementasi cache, bukan semantik transformer.

Prefix KV caching aman pada batas ketika sebuah entri masih mewakili state perantara yang seharusnya dihasilkan request saat ini. Kesamaan token diperlukan untuk reuse exact-prefix biasa, tetapi sistem serving juga harus mempertahankan posisi, konteks sebelumnya, komputasi model efektif, serta batas eksekusi yang dikodekan oleh representasi cache. Di luar batas itu, reuse bukan lagi optimasi atas komputasi yang sama, melainkan komputasi yang berbeda.