Saat inference autoregresif, key dan value yang sudah dihitung digunakan kembali dari KV cache sehingga tidak perlu dihitung ulang untuk setiap token baru. Kuantisasi pada cache tersebut mengubah lebih dari sekadar representasi byte. Aproksimasi yang tersimpan menjadi input bagi operasi attention berikutnya, sehingga error-nya dapat mengubah attention score sekaligus vektor yang digabungkan oleh score tersebut.

Batas ini berbeda dari kuantisasi weight model. Tensor weight dipakai kembali lintas request, sedangkan state KV dibentuk dari sequence yang sedang diproses dan bertambah mengikuti panjang cache. Rentang numeriknya juga dapat berbeda antar-layer, head, posisi, dan request.

Error pada key masuk sebelum softmax

Untuk satu attention head, query baru q dibandingkan dengan key K yang tersimpan:

s = q K^T / sqrt(d)
a = softmax(s)
o = a V

Jika key tersimpan direkonstruksi sebagai K + E_K, vektor score menjadi:

s' = q (K + E_K)^T / sqrt(d)
   = s + q E_K^T / sqrt(d)

Dengan demikian, error pada key masuk sebelum softmax. Dampaknya tidak ditentukan hanya oleh besar absolut error kuantisasi. Arah query saat ini ikut menentukan karena gangguan score memuat perkalian q E_K^T.

Softmax kemudian memetakan score yang sudah berubah menjadi vektor probabilitas baru. Perubahan score yang kecil dapat berdampak kecil saat logit yang bersaing terpisah jauh, tetapi dapat mengubah attention relatif secara lebih nyata saat beberapa score berdekatan. Karena itu, batas tetap pada error rekonstruksi key tidak setara dengan batas tetap pada error probabilitas attention.

Error pada value masuk setelah bobot attention terbentuk

Anggap key tetap eksak, tetapi value tersimpan direkonstruksi sebagai V + E_V. Dengan bobot attention a yang tidak berubah, output menjadi:

o' = a (V + E_V)
   = o + a E_V

Error pada value masuk melalui weighted sum, bukan melalui pembentukan score. Kontribusi setiap value tersimpan mengikuti bobot attention untuk query saat ini.

Pada cache terkuantisasi yang sebenarnya, error key dan value dapat muncul bersamaan. Output kemudian mencerminkan perubahan vektor bobot sekaligus value yang bersifat aproksimasi. Menganggap seluruh error KV sebagai satu metrik rekonstruksi skalar dapat menutupi perbedaan ini. Dua quantizer dengan error tingkat tensor yang mirip dapat memengaruhi attention secara berbeda jika satu mempertahankan key lebih akurat sedangkan yang lain mempertahankan value lebih akurat.

Granularitas kuantisasi menentukan nilai yang berbagi scale

Representasi low-bit biasanya memetakan sekelompok nilai floating-point menggunakan scale dan, bergantung pada skema, zero point atau konvensi offset lain. Aturan pengelompokan menentukan nilai mana yang harus berbagi parameter kuantisasi.

Scale yang dibagi pada area besar membutuhkan metadata lebih sedikit, tetapi harus mencakup rentang numerik area tersebut. Grup yang lebih kecil dapat menyesuaikan rentang lokal, dengan konsekuensi metadata scale yang lebih banyak serta pekerjaan indexing atau kernel tambahan. Untuk state KV, sumbu pengelompokan dapat mencakup posisi token, channel, head, atau block, tetapi pilihan persisnya bergantung pada implementasi.

Karena itu, bit width saja tidak cukup untuk menggambarkan kualitas cache. Dua implementasi dapat sama-sama menyimpan elemen empat bit sambil memakai group size, aturan clipping, presisi scale, serta perlakuan key/value yang berbeda. Layout memori dan perilaku numeriknya tidak harus sama.

Pertumbuhan cache mengubah trade pada serving

Untuk satu layer transformer dengan tensor key dan value tersimpan, kebutuhan cache bertambah mengikuti jumlah posisi sequence yang dipertahankan. Pengurangan bit per elemen cache dapat menurunkan payload tensor dominan, tetapi total memori juga mencakup metadata kuantisasi, overhead allocator, padding, dan bagian berpresisi lebih tinggi yang mungkin dipertahankan implementasi.

Sebagian desain serving mempertahankan token terbaru pada presisi lebih tinggi dan mengkuantisasi block cache yang lebih lama. Susunan ini memisahkan dua kebutuhan: state terbaru dapat menghindari penanganan quantize-dequantize secara langsung, sedangkan state lama memakai ruang cache lebih kecil. Namun, error kuantisasi pada posisi lama tetap hadir saat posisi tersebut kembali mendapat attention.

Dampak praktis juga bergantung pada jalur serving. Dequantization dapat digabungkan ke attention kernel, dilakukan ke penyimpanan sementara, atau ditangani melalui jalur lain yang spesifik terhadap backend. Cache yang lebih kecil tidak dengan sendirinya menetapkan latensi end-to-end yang lebih rendah; traffic memori, pekerjaan konversi, dukungan kernel, bentuk batch, dan panjang sequence semuanya ikut berperan.

Evaluasi harus sesuai dengan besaran yang ingin dipertahankan

Quantizer cache dapat dinilai melalui error rekonstruksi, tetapi perilaku attention merupakan besaran downstream yang memakai tensor hasil rekonstruksi. Error key dapat menggeser urutan atau margin score, sedangkan error value mengubah vektor yang diagregasi setelah weighting.

Hal tersebut tidak membuat error tingkat tensor menjadi tidak berguna. Metrik itu hanya menjawab pertanyaan yang lebih sempit. Evaluasi serving yang hanya melaporkan ukuran cache dan error rekonstruksi dapat melewatkan perubahan pada perilaku token keluaran, komputasi attention, atau output tingkat tugas.

Batas implementasinya cukup spesifik: kuantisasi KV cache adalah mekanisme kompresi state dengan aproksimasi yang tetap aktif pada komputasi token berikutnya. Kesesuaiannya bergantung pada skema kuantisasi, implementasi attention, perilaku numerik model, dan workload serving. Bit width saja tidak dapat menggambarkan batas tersebut.