KV Cache pada LLM: Memahami dan Implementasi dari Nol
KV cache adalah teknik untuk inferensi LLM yang efisien dengan menyimpan vektor kunci dan nilai antara untuk digunakan kembali, menghindari perhitungan yang redundan. Artikel ini menjelaskan konsep tersebut dan memberikan implementasi kode dari nol menggunakan PyTorch, menunjukkan cara memodifikasi mekanisme multi-head attention untuk menyimpan kunci dan nilai selama pembuatan teks.
Cache KV menyimpan vektor key (K) dan value (V) dari perhitungan perhatian sebelumnya untuk digunakan kembali saat menghasilkan token berikutnya, yang mempercepat inferensi dengan menghindari perhitungan ulang. Tanpa cache KV, setiap langkah pembuatan menghitung ulang key dan value untuk semua token sebelumnya; dengan cache, hanya vektor token baru yang dihitung dan ditambahkan ke cache. Artikel ini memberikan implementasi kode berdasarkan model mirip GPT dari buku penulis. Perubahan utama adalah: menambahkan buffer cache (cache_k dan cache_v) di kelas MultiHeadAttention, memodifikasi metode forward untuk menggunakan cache secara kondisional, menambahkan metode reset, dan menyebarkan flag use_cache ke seluruh model. Dalam pembuatan, saat use_cache True, model hanya memproses token baru setelah prompt awal, sementara tanpa cache model memproses seluruh urutan pada setiap langkah. Perbandingan performa sederhana menunjukkan bahwa cache KV sekitar menggandakan kecepatan pembuatan untuk contoh yang diuji.
Sumber: Sebastian Raschka —
asli
