Model bahasa besar atau large language model (LLM) tidak hanya membutuhkan memori untuk menyimpan bobot model. Saat menghasilkan jawaban, model juga menyimpan informasi perantara dari token yang sudah diproses. Penyimpanan ini disebut key-value cache atau KV cache. Pada percakapan panjang atau layanan yang melayani banyak pengguna sekaligus, KV cache dapat menjadi salah satu pemakai memori terbesar.
Memahami KV cache membantu pengembang memilih model, panjang konteks, dan strategi inferensi yang sesuai dengan kapasitas perangkat. Tujuannya bukan sekadar membuat penggunaan memori sekecil mungkin, melainkan menyeimbangkan kecepatan, kualitas jawaban, latensi, dan jumlah permintaan yang dapat dilayani.
Apa Itu KV Cache pada LLM?
Model transformer menggunakan mekanisme attention untuk menghubungkan token saat ini dengan token lain dalam konteks. Dalam proses itu, setiap lapisan attention menghasilkan representasi yang disebut key dan value. Karena LLM biasanya menghasilkan teks satu token demi satu token, informasi dari token sebelumnya dapat digunakan kembali pada langkah berikutnya.
KV cache menyimpan representasi tersebut agar model tidak perlu menghitung ulang seluruh key dan value dari awal pada setiap token baru. Tanpa cache, proses generasi bisa melakukan pekerjaan berulang yang mahal. Dengan cache, perhitungan berulang berkurang, tetapi ruang memori yang dibutuhkan terus bertambah seiring panjang konteks dan jumlah percakapan aktif.
KV cache berbeda dari cache jawaban yang menyimpan respons siap pakai untuk pertanyaan berulang. Isinya adalah data numerik perantara untuk perhitungan attention, bukan kumpulan jawaban yang dapat langsung ditampilkan kepada pengguna.
Mengapa KV Cache Bisa Menghabiskan VRAM?
Kebutuhan memori cache dipengaruhi oleh beberapa faktor utama: jumlah lapisan model, jumlah kepala key-value, dimensi setiap kepala, panjang konteks, ukuran batch, serta presisi numerik yang digunakan. Semakin panjang prompt dan keluaran yang dipertahankan, semakin banyak posisi token yang perlu disimpan. Melayani banyak pengguna bersamaan juga dapat meningkatkan kebutuhan memori secara signifikan.
Untuk ilustrasi kasar, anggap model memiliki 32 lapisan, 8 kepala key-value, dimensi kepala 128, konteks 8.192 token, batch satu, dan nilai cache FP16 berukuran 2 byte. Estimasi sederhana untuk key dan value adalah:
2 × jumlah_lapisan × panjang_konteks
× jumlah_kepala_KV × dimensi_kepala × byte_per_nilai
2 × 32 × 8192 × 8 × 128 × 2
≈ 1 GiBAngka tersebut hanya ilustrasi, bukan patokan untuk semua model. Arsitektur dengan grouped-query attention, sliding window, bentuk cache khusus, padding, dan implementasi perangkat lunak dapat mengubah hasilnya. Memori untuk bobot model, aktivasi sementara, pustaka komputasi, serta sistem juga belum termasuk. Karena itu, jangan menyamakan ukuran berkas model dengan total VRAM saat inferensi.
Strategi KV Cache yang Bisa Dipilih
- Dynamic cache: kapasitas bertambah saat generasi berlangsung. Pendekatan ini fleksibel untuk panjang keluaran yang berbeda, tetapi kebutuhan memori ikut tumbuh.
- Static cache: ruang untuk panjang maksimum dialokasikan lebih awal. Bentuk yang tetap dapat membantu optimasi kompilasi pada implementasi yang mendukungnya, tetapi sebagian ruang mungkin terbuang ketika urutan token jauh lebih pendek dari kapasitas.
- Quantized cache: menyimpan nilai cache dalam presisi lebih rendah agar penggunaan memori turun. Hasilnya bergantung pada model dan backend; kuantisasi dapat menambah biaya komputasi atau memengaruhi latensi, sehingga perlu diuji.
- Offloaded cache: memindahkan sebagian cache dari GPU ke RAM sistem. Ini dapat membantu saat VRAM terbatas, tetapi transfer data antarmemori berpotensi menurunkan throughput.
- Sliding-window atau sink cache: mempertahankan jendela token tertentu atau token penting sesuai dukungan model. Pendekatan ini berguna untuk skenario konteks panjang, tetapi tidak cocok untuk setiap arsitektur atau kebutuhan yang harus mempertahankan seluruh konteks.
Dokumentasi Hugging Face Transformers tentang strategi cache menjelaskan pilihan implementasi tersebut beserta komprominya. Dukungan aktual tetap bergantung pada versi pustaka dan arsitektur model yang dipakai.
Langkah Praktis untuk Mengurangi Tekanan Memori
- Ukur penggunaan nyata. Catat VRAM saat model dimuat, saat prompt panjang diproses, dan ketika beberapa permintaan berjalan bersamaan. Jangan hanya mengandalkan ukuran model di disk.
- Batasi konteks sesuai kebutuhan. Jendela konteks maksimum yang besar bukan berarti setiap tugas harus memakai seluruh kapasitas. Ringkas riwayat percakapan bila sesuai dengan kebutuhan produk.
- Uji presisi cache. Jika pustaka mendukung cache terkuantisasi, bandingkan penggunaan memori, latensi, throughput, dan kualitas jawaban pada tugas representatif.
- Pertimbangkan offloading saat VRAM menjadi batas utama. Ukur dampak pemindahan data ke RAM; penghematan VRAM dapat dibayar dengan waktu respons yang lebih lama.
- Atur konkurensi secara realistis. Batasi jumlah urutan aktif atau sesuaikan ukuran batch berdasarkan hasil pengujian, bukan berdasarkan kapasitas teoretis saja.
Jika menggunakan Hugging Face Transformers, sebagian model mendukung opsi seperti cache_implementation="offloaded" pada pemanggilan generasi. Periksa dokumentasi versi yang terpasang dan kompatibilitas model sebelum menerapkannya di lingkungan produksi. Contoh konfigurasi di internet tidak selalu dapat dipindahkan langsung ke semua model.
Aspek Operasional dan Privasi
KV cache adalah data runtime yang berasal dari pemrosesan prompt dan konteks. Walaupun bukan salinan teks biasa, sistem tetap sebaiknya memperlakukannya sebagai data sensitif: batasi akses ke memori proses, hindari mengekspor dump tanpa alasan, dan pastikan proses pembersihan serta isolasi antarpermintaan sesuai desain server. Pada layanan multi-pengguna, pengelolaan cache harus mencegah data satu sesi terbawa ke sesi lain.
Untuk konteks lebih luas, baca juga panduan kuantisasi model AI untuk menghemat memori dan perbandingan AI lokal dan AI cloud. Kuantisasi bobot dan pengelolaan KV cache adalah dua hal berbeda, tetapi keduanya dapat memengaruhi kemampuan menjalankan LLM pada perangkat dengan sumber daya terbatas.
Kesimpulan
KV cache mempercepat generasi LLM dengan menggunakan kembali hasil perhitungan attention, tetapi kebutuhan memorinya meningkat bersama konteks dan beban kerja. Mulailah dengan mengukur penggunaan VRAM, lalu bandingkan batas konteks, cache dinamis atau statis, kuantisasi cache, dan offloading. Pilihan terbaik adalah yang terbukti memenuhi target kualitas serta latensi pada beban nyata, bukan yang sekadar terlihat paling hemat di atas kertas.
PENGALAMAN BARU Coba tampilan baru Penasaran dengan pengalaman membaca Nazuaf versi modern? Coba tampilan baru yang dirancang agar nyaman dibaca dari ponsel dan pc. Buka versi modern dan lanjutkan membaca artikel ini. Jelajahi tampilan baru Nazuaf versi modern · Ketuk kartu untuk mencoba