Inference transformer autoregressive menyimpan tensor key dan value dari token sebelumnya agar setiap token baru dapat melakukan attention ke posisi terdahulu tanpa menghitung ulang seluruh prefix. KV cache tersebut bertambah bersama sequence length, jumlah layer, batch size, dan jumlah key-value head yang disimpan. Pada context panjang, jejak memorinya dapat langsung membatasi jumlah request konkuren atau context length yang dapat digunakan.

Kuantisasi KV cache mengurangi byte per elemen yang disimpan. Namun, aproksimasi yang dihasilkan tidak setara dengan menguantisasi struktur data pasif. Cached key ikut dalam perhitungan attention score, sedangkan cached value dicampur berdasarkan attention weight yang dihasilkan. Error pada kedua tensor itu karena itu memasuki operasi attention pada titik yang berbeda.

Key memengaruhi distribusi yang digunakan untuk membaca cache

Untuk satu attention head, query vector q dibandingkan dengan cached key vector k_j. Dengan mengabaikan mask untuk sementara, score posisi j adalah:

s_j = q · k_j / sqrt(d)

Jika key yang disimpan direkonstruksi dari representasi terkuantisasi sebagai k_j + e_j, score-nya menjadi:

s'_j = s_j + q · e_j / sqrt(d)

Key error diproyeksikan terhadap query saat ini. Komponen error yang orthogonal terhadap q tidak berkontribusi pada score tersebut, sedangkan komponen yang searah mengubahnya secara langsung. Cached key yang sama karena itu dapat menghasilkan score error berbeda untuk future query yang berbeda.

Score yang terganggu itu kemudian melewati softmax. Perubahan score kecil tidak memetakan ke perubahan attention weight yang tetap karena softmax bergantung pada keseluruhan score vector. Ketika beberapa posisi memiliki score yang mirip, perturbation dapat mengubah peringkat relatifnya. Ketika satu posisi dipisahkan oleh margin score besar, perturbation numerik yang sama dapat memberi efek lebih kecil pada ranking.

Hal ini membuat key quantization menjadi aproksimasi yang membentuk distribusi. Efeknya tidak sepenuhnya tercakup oleh reconstruction error yang diukur pada tensor key saja.

Value memengaruhi konten setelah attention weight terbentuk

Attention output adalah weighted sum dari cached value:

o = sum_j a_j v_j

di mana a_j adalah attention weight untuk posisi j. Jika hanya value yang dikuantisasi dan reconstructed value adalah v_j + r_j, maka dengan attention weight tetap, perturbation output adalah:

delta_o = sum_j a_j r_j

Value error karena itu diagregasikan melalui attention distribution. Error pada posisi dengan attention kecil berkontribusi lebih sedikit terhadap output dibanding error berukuran sama pada posisi dengan attention tinggi.

Dalam cache terkuantisasi nyata, key dan value dapat sama-sama aproksimatif. Key error terlebih dahulu mengubah weight, lalu weight yang berubah diterapkan pada approximate value. Memperlakukan satu cache reconstruction metric sebagai ukuran kualitas lengkap menyembunyikan perbedaan ini.

Evaluasi yang berguna dapat mempertahankan pengukuran terpisah untuk key reconstruction, value reconstruction, attention-score drift, dan downstream task output. Tensor metric mendiagnosis codec; metric berikutnya menunjukkan bagaimana aproksimasi merambat melalui komputasi model.

Granularitas kuantisasi menentukan rentang mana yang berbagi scale

Low-bit quantization memetakan sekumpulan floating-point value ke jumlah level representable yang terbatas. Scale dan offset, bila ada, menentukan source range yang dicakup level tersebut. Kelompok elemen yang berbagi parameter itu menjadi pilihan desain utama.

Satu scale untuk tensor besar ringkas dalam metadata tetapi harus mencakup rentang setiap elemen dalam kelompok. Jika sedikit elemen bermagnitudo besar memperluas rentang, resolusi di sekitar value yang lebih kecil menjadi lebih kasar. Kelompok yang lebih halus dapat beradaptasi dengan rentang lokal dengan biaya metadata scale lebih banyak dan packing atau kernel yang lebih rumit.

Sumbu grouping dapat berupa token position, channel, head, atau fixed-size block. Pilihan ini tidak saling setara. Skema per-token beradaptasi ketika activation range berubah antar-posisi. Skema per-channel dapat beradaptasi pada channel yang magnitudonya berbeda secara konsisten. Block scheme berada di antara tensor-level scaling yang luas dan metadata yang sangat halus.

Granularitas yang sesuai bergantung pada statistik cache tensor dari model tertentu dan implementasi inference. Quantizer tidak seharusnya mengasumsikan key dan value memiliki struktur range yang sama hanya karena bentuk tensornya berkaitan.

Outlier dapat mendominasi low-bit range

Uniform quantization sangat sensitif terhadap range yang ditetapkan untuk setiap group. Jika sebagian besar elemen berada dalam interval sempit tetapi beberapa memiliki magnitude jauh lebih besar, memperluas scale untuk mencakup outlier tersebut meningkatkan jarak antar-level terkuantisasi bagi elemen lain.

Clipping dapat menukar outlier error dengan resolusi lebih halus di central range. Trade-off ini bergantung pada model dan tensor. Clipping komponen key dapat mengubah future attention score melalui query alignment, sedangkan clipping komponen value mengubah konten yang tersedia untuk aggregation.

Pilihan lain adalah mempertahankan token terbaru tertentu atau komponen tensor tertentu pada precision lebih tinggi sambil menguantisasi sisanya. Representasi campuran ini menambah bookkeeping dan kompleksitas kernel, tetapi membuat error budget eksplisit daripada memaksa setiap cached element melalui satu format numerik.

Perlakuan khusus juga memerlukan cache semantics yang stabil. Jika entry berpindah antar-precision class saat cache bertambah, implementasi harus mendefinisikan kapan conversion terjadi dan memastikan position indexing serta attention mask tetap merujuk token logis yang sama.

Residual high-precision window mengubah profil error

Desain cache dapat mempertahankan recent window pada working precision model dan menguantisasi entry lama setelah keluar dari window. Ini menghindari kuantisasi berulang pada cache entry saat masih baru dan membatasi jumlah high-precision cache memory.

Pendekatan ini menciptakan dua region attention dengan karakteristik numeric error berbeda. Posisi terbaru direpresentasikan pada precision lebih tinggi, sedangkan posisi lama membawa quantization error. Jika workload sering bergantung pada distant context, region lama tetap aktif dalam attention dan tidak dapat dianggap cold storage hanya karena tokennya lebih tua.

Window size karena itu merupakan parameter memori sekaligus parameter aproksimasi. Memperbesarnya menaikkan cache memory tetapi menunda kuantisasi untuk lebih banyak posisi. Memperkecilnya menghemat memori lebih awal tetapi mengekspos fraksi active context yang lebih besar ke low-bit representation.

Evaluasi sebaiknya mencakup prompt dengan evidence relevan pada jarak berbeda dari generated token. Jika tidak, benchmark yang didominasi short-range dependency dapat meremehkan efek kuantisasi entry cache lama.

Perhitungan memori mencakup metadata dan temporary buffer

Pengurangan storage utama dari mengganti high-precision element dengan low-bit element hanyalah sebagian dari perhitungan memori. Quantized group memerlukan scale dan, untuk beberapa skema, offset. Packing dapat memperkenalkan alignment constraint. Kernel juga dapat membutuhkan temporary dequantization atau accumulation buffer.

Byte efektif per cached token harus mencakup biaya tersebut. Untuk cache dengan N quantized element yang dikelompokkan dalam set berukuran G, model perhitungan sederhana adalah:

cache_bytes = packed_data_bytes
            + number_of_groups * metadata_bytes_per_group
            + persistent_auxiliary_bytes

Temporary workspace perlu diukur terpisah karena memengaruhi peak memory meskipun tidak disimpan per token. Perbedaan ini penting ketika tujuannya meningkatkan request concurrency: persistent cache yang lebih kecil masih dapat mencapai peak-memory limit jika execution path mengalokasikan transient buffer besar.

Bandwidth juga dapat penting selain kapasitas. Attention terhadap cache panjang membaca banyak stored key dan value. Representasi ringkas mengurangi byte yang diambil dari memori, tetapi manfaatnya bergantung pada kemampuan kernel mengonsumsi packed format tanpa menghapus penghematan itu melalui conversion mahal atau memory access pattern yang buruk. Storage format dan kernel design karena itu perlu dievaluasi bersama.

Kualitas cache memerlukan evaluasi yang sadar sequence

Pengukuran tensor error satu kali tidak dapat mewakili akumulasi error selama autoregressive generation. Setiap generated token membuat cache entry baru, dan pilihan token model memengaruhi context untuk langkah berikutnya. Setelah kuantisasi mengubah token selection, eksekusi selanjutnya tidak lagi berbagi prefix identik dengan high-precision reference.

Dua mode evaluasi menjawab pertanyaan berbeda. Teacher-forced atau fixed-prefix comparison dapat mengisolasi numeric drift untuk query dan cache content yang identik. Free-running generation menangkap efek gabungan pada decoding trajectory aktual, tetapi divergence membuat per-position tensor comparison kurang langsung ditafsirkan setelah output terpisah.

Kedua pandangan berguna saat memilih cache format. Fixed-prefix test memperlihatkan attention-score dan output perturbation pada input terkontrol. End-task check menunjukkan apakah perturbation tersebut berarti bagi perilaku yang dibutuhkan aplikasi.

KV cache quantization paling mudah diprediksi ketika key dan value diperlakukan sebagai interface numerik terpisah menuju attention, bukan satu memory block homogen. Target memori menetapkan tekanan kompresi, tetapi grouping, clipping, precision window, dan kernel behavior menentukan di mana aproksimasi memasuki komputasi. Format yang memenuhi memory budget tetap memerlukan error budget yang terikat pada attention behavior, bukan hanya jumlah byte yang dihemat.