Decoding autoregresif menyimpan key dan value attention dari token sebelumnya agar setiap token baru dapat memakai kembali proyeksi yang sudah dihitung. KV cache tersebut membesar mengikuti panjang sequence, jumlah layer, batch size, serta jumlah dan lebar head key/value yang disimpan. Menurunkan presisi numeriknya dapat mengurangi byte yang ditempati tensor cache, tetapi nilai yang dipakai oleh operasi attention berikutnya juga ikut berubah.

Karena itu, kuantisasi KV cache berbeda dari kompresi data yang hanya disimpan lalu dipulihkan tanpa kehilangan informasi. Cache terkuantisasi tetap berada pada jalur inferensi. Setiap query berikutnya dapat berinteraksi dengan key dan value hasil aproksimasi, sehingga persoalannya bukan sekadar berapa byte yang berkurang, tetapi juga di bagian mana error kuantisasi masuk ke attention dan bagaimana implementasi serving membatasinya.

Key dan value memengaruhi bagian attention yang berbeda

Untuk satu attention head, bentuk sederhananya dapat ditulis sebagai:

scores = (Q K^T) / sqrt(d)
weights = softmax(scores)
output = weights V

Jika key pada cache dikuantisasi, error rekonstruksinya mengubah dot product yang membentuk scores. Perubahan skor terjadi sebelum softmax sehingga bobot attention relatif untuk posisi yang tersimpan dapat ikut berubah.

Jika value pada cache dikuantisasi, error rekonstruksinya masuk setelah bobot attention dihitung, melalui weighted sum terhadap V. Dua jalur error tersebut tidak identik meskipun key dan value memakai format penyimpanan yang sama.

Sistem serving dapat menguantisasi kedua tensor, hanya salah satunya, atau memakai parameter kuantisasi yang berbeda untuk masing-masing tensor. Pilihan yang sesuai bergantung pada model, format numerik, metode kalibrasi, dukungan kernel, dan toleransi perubahan output. Penghematan memori saja tidak membuktikan bahwa dua skema memiliki perilaku yang setara.

Granularitas scale menentukan nilai yang berbagi quantizer

Kuantisasi low-bit memetakan rentang nilai riil ke jumlah level representasi yang lebih sedikit. Scale dan, pada skema tertentu, zero point menentukan pemetaan tersebut. Granularitas parameter ini menentukan elemen cache mana yang harus berbagi rentang numerik.

Satu scale untuk tensor besar memiliki metadata yang ringkas, tetapi outlier dapat memperlebar rentang representasi dan menyisakan lebih sedikit level efektif bagi nilai yang terkonsentrasi dekat nol. Granularitas yang lebih halus, misalnya parameter terpisah per channel atau per group, dapat menyesuaikan rentang lokal dengan konsekuensi metadata tambahan dan kernel yang lebih kompleks.

Grouping yang sesuai bersifat spesifik terhadap implementasi. Distribusi key dan value dapat berbeda antar-layer, head, channel, posisi token, dan model. Quantizer yang memadai pada satu grouping tidak dapat diasumsikan mempertahankan perilaku yang sama setelah axis grouping atau group size diubah.

Presisi penyimpanan juga perlu dibedakan dari presisi aritmetika. Cache dapat disimpan dalam representasi low-bit lalu didekuantisasi ke tipe yang lebih lebar sebelum atau selama attention. Implementasi lain dapat memakai kernel khusus yang mengonsumsi representasi terkompresi secara lebih langsung. Format penyimpanan saja tidak menentukan jalur aritmetika.

Outlier dapat mendominasi rentang kuantisasi

Error kuantisasi sangat dipengaruhi oleh rentang yang harus direpresentasikan. Ketika sebuah group memiliki sedikit nilai dengan magnitudo jauh lebih besar daripada nilai lain, scale yang mencakup outlier tersebut dapat mengurangi resolusi pada wilayah nilai yang lebih padat.

Clipping mengubah keseimbangan itu dengan membatasi rentang representasi, tetapi nilai yang terpotong kemudian mengalami error saturasi secara eksplisit. Hasilnya merupakan pilihan kalibrasi, bukan pengurangan error tanpa konsekuensi. Aturan clipping yang sesuai bergantung pada distribusi cache dan perilaku yang perlu dipertahankan.

Penanganan outlier juga dapat mendorong strategi campuran. Implementasi tertentu dapat mempertahankan nilai terpilih atau token terbaru pada presisi lebih tinggi sambil mengompresi bagian lain. Desain seperti ini perlu diperlakukan sebagai algoritma spesifik dengan layout cache dan kebutuhan kernel tersendiri, bukan sifat universal kuantisasi KV.

Kuantisasi dapat terjadi pada titik berbeda selama umur cache

Decoder menambahkan key dan value baru ketika token diproses. Implementasi serving dapat langsung menguantisasi setiap entri baru, menguantisasi block setelah mencapai ukuran tertentu, atau mempertahankan wilayah terbaru dalam tipe yang lebih lebar sebelum mengonversi entri yang lebih lama.

Pilihan tersebut mengubah perilaku memori sekaligus jumlah konversi pada jalur inferensi. Kuantisasi langsung membatasi presisi hampir seluruh cache sejak awal, sedangkan residual berpresisi tinggi membiarkan state terbaru tetap utuh sampai keluar dari wilayah tersebut.

Skema berbasis block juga memiliki kondisi batas. Block yang belum penuh dapat memerlukan penyimpanan sementara atau metadata terpisah. Jika parameter kuantisasi dihitung dari sebuah block, implementasi harus menentukan kapan parameter itu menjadi tetap dan apakah entri sebelumnya dapat direkuantisasi. Ini merupakan semantik sistem serving yang tidak dapat disimpulkan hanya dari label bit-width.

Perhitungan memori mencakup metadata dan wilayah residual

Konversi nominal dari elemen cache 16-bit ke 4-bit menunjukkan pengurangan empat kali pada payload elemen mentah. Perhitungan memori cache nyata dapat lebih rumit.

Scale kuantisasi, zero point, alignment packing, metadata block, residual berpresisi tinggi, pembulatan allocator, dan workspace kernel dapat memakai memori tambahan. Cache juga hidup bersama model weights, activation, metadata request, serta buffer attention sementara.

Untuk capacity planning, besaran yang relevan adalah memori aktual yang dialokasikan untuk cache pada konfigurasi serving target. Bit width tetap menjadi komponen besar, tetapi bukan keseluruhan model memori.

Pemisahan yang sama berlaku untuk klaim throughput. Cache yang lebih kecil dapat mengurangi traffic memori pada jalur eksekusi tertentu, tetapi kuantisasi dan dekuantisasi menambah pekerjaan dan dapat bergantung pada kernel khusus. Peningkatan request throughput atau token latency merupakan sifat empiris dari kombinasi hardware, kernel, batching, dan model yang konkret.

Error digunakan berulang, tetapi tidak harus dikuantisasi berulang

Satu key atau value yang tersimpan dapat dibaca berkali-kali saat token berikutnya dihasilkan. Pemakaian berulang tersebut membuat satu aproksimasi dapat memengaruhi banyak komputasi attention setelahnya.

Hal ini tidak berarti elemen cache yang sama harus dikuantisasi ulang pada setiap langkah decoding. Desain umum dapat menguantisasi entri sekali, menyimpannya, lalu berulang kali membaca atau mendekuantisasi representasi tersebut. Pengaruh berulang dan proses kuantisasi berulang adalah dua konsep berbeda.

Context yang lebih panjang menambah jumlah posisi cache yang tersedia bagi attention dan memperpanjang umur entri awal. Kondisi evaluasi kuantisasi cache pun ikut berubah. Pemeriksaan pada context pendek saja dapat melewatkan perilaku yang muncul ketika banyak posisi terkuantisasi berpartisipasi dalam attention.

Evaluasi harus sama dengan jalur serving

Implementasi cache terkuantisasi perlu dievaluasi memakai format cache, grouping, kebijakan residual, attention kernel, pengaturan decoding, dan rentang context yang sama dengan deployment. Mengganti cache dengan presisi penuh saat evaluasi justru menghilangkan mekanisme yang sedang diuji.

Perbandingan output dapat dilakukan pada beberapa tingkat. Pengujian numerik dapat membandingkan tensor cache hasil rekonstruksi atau output attention pada input terkontrol. Pengujian tingkat model dapat membandingkan logit atau output yang relevan terhadap tugas dengan kondisi decoding yang sama. Pengujian serving dapat mengukur alokasi cache dan latency aktual pada execution stack target.

Tidak ada satu metrik yang menetapkan kesetaraan untuk setiap aplikasi. Perubahan logit kecil dapat tidak berpengaruh pada satu decision boundary deterministik, tetapi dapat mengubah pemilihan token pada konfigurasi decoding lain. Kriteria penerimaan perlu mengikuti perilaku yang benar-benar menjadi ketergantungan aplikasi.

Kuantisasi KV cache pada akhirnya merupakan perubahan representasi inferensi yang memiliki konsekuensi yang terlihat oleh model. Nilainya berasal dari pengurangan biaya penyimpanan state yang tumbuh bersama context aktif, sedangkan batas penerapannya ditentukan oleh error attention, overhead metadata, dukungan kernel, dan toleransi output pada sistem serving yang konkret.