KV Cache là gì và tại sao nó tăng tốc inference?

Khi sinh text autoregressive, tại mỗi step model cần tính self-attention với TẤT CẢ token đã sinh trước đó. Nếu không cache, mỗi token mới phải tính lại K và V cho toàn bộ token cũ → O(n²) work mỗi step.

KV Cache lưu lại ma trận K và V đã tính ở các step trước, nên khi sinh token mới chỉ cần:

  1. tính Q/K/V cho token mới
  2. append K, V mới vào cache
  3. attention giữa Q mới và toàn bộ K, V trong cache. Độ phức tạp mỗi step giảm từ O(n²) xuống O(n), toàn bộ generation từ O(n³) xuống O(n²)

Nhược điểm: KV cache tiêu tốn GPU memory. Công thức xấp xỉ: 2 × num_layers × num_heads × head_dim × seq_len × batch_size × bytes_per_param. Với LLaMA-70B, context 32K có thể tốn chục GB/request.

Tối ưu: GQA/MQA (giảm số KV head), PagedAttention (quản lý KV cache như virtual memory của OS — vLLM dùng), quantize KV cache xuống INT8/INT4, prefix caching chia sẻ prefix chung giữa các request.

Xem toàn bộ AI Engineering cùng filter theo level & chủ đề con.

Mở danh sách AI Engineering