KV cache cho phép mô hình lưu trữ các keys và values được tạo ra trong các bước giải mã trước đó, vì vậy chúng không cần phải được tính toán lại ở mỗi bước. Điều này giảm số lượng phép toán từ O(T^2) (với T là độ dài chuỗi) xuống O(T), vì mỗi token mới chỉ cần một phép tính attention đơn lẻ liên quan đến các keys và values đã được lưu trữ.
Không có KV Cache: Nếu không có caching, mỗi token mới yêu cầu tính toán lại attention cho tất cả các token trước đó, dẫn đến thời gian tính toán tăng theo cấp số nhân khi độ dài chuỗi tăng lên.
Benchmarks:
Mô hình quy mô nhỏ (ví dụ: GPT-2, BERT): Tăng tốc độ từ 2x đến 4x cho các chuỗi dài (ví dụ: chuỗi có độ dài trên 512 tokens).
Mô hình quy mô lớn (ví dụ: GPT-3, T5): Tốc độ có thể cải thiện đáng kể hơn, thường vượt quá 10x cho các chuỗi rất dài.
Notebook: https://colab.research.google.com/drive/1JDsQ9QLqS5t4dnjnxAY4JqSUpKOXfttV?usp=sharing.