KV Cache
Khám phá cách KV Cache tối ưu hóa các model Transformer như LLM. Tìm hiểu cách kỹ thuật này làm giảm độ trễ suy luận và tăng hiệu suất cho Ultralytics YOLO26.
KV Cache (Key-Value Cache) là một kỹ thuật tối ưu hóa quan trọng được sử dụng chủ yếu trong các Large Language Models (LLMs) và các kiến trúc dựa trên Transformer khác nhằm tăng tốc inference latency và giảm chi phí tính toán. Về bản chất, KV cache lưu trữ các ma trận Key và Value được tạo bởi attention mechanism cho các token trước đó trong một chuỗi. Bằng cách lưu lại các tính toán trung gian này, mô hình tránh được việc phải tính toán lại các trạng thái attention cho toàn bộ lịch sử hội thoại mỗi khi tạo một token mới. Quy trình này chuyển đổi luồng công việc text generation từ một thao tác có độ phức tạp bậc hai sang tuyến tính, giúp các tương tác thời gian thực với chatbot và AI agents trở nên khả thi.
Link to this sectionCơ chế và Lợi ích#
Trong một mô hình Transformer tiêu chuẩn, việc tạo từ tiếp theo yêu cầu phải chú ý đến tất cả các từ trước đó để hiểu ngữ cảnh. Nếu không có bộ nhớ đệm (caching), mô hình sẽ cần tính toán lại các mối quan hệ toán học cho toàn bộ chuỗi ở mỗi bước. KV cache giải quyết vấn đề này bằng cách hoạt động như một ngân hàng bộ nhớ.
- Cải thiện tốc độ: Bằng cách truy xuất các key và value đã được tính toán trước từ bộ nhớ, hệ thống giúp tăng tốc đáng kể inference engine. Điều này là thiết yếu cho các ứng dụng yêu cầu độ trễ thấp, chẳng hạn như real-time inference trong các bot dịch vụ khách hàng.
- Hiệu quả tài nguyên: Mặc dù làm tăng mức sử dụng bộ nhớ (VRAM), nó lại giảm đáng kể chi phí tính toán (FLOPs) cần thiết cho mỗi token. Sự đánh đổi này thường được quản lý thông qua các kỹ thuật như model quantization hoặc phân trang (paging), tương tự như cách các hệ điều hành quản lý RAM.
- Ngữ cảnh mở rộng: Việc quản lý hiệu quả KV cache cho phép các mô hình xử lý context window lớn hơn, cho phép chúng xử lý các tài liệu dài hoặc duy trì các cuộc hội thoại mạch lạc trong thời gian dài.
Link to this sectionCác ứng dụng trong thực tế#
KV cache là một thành phần cơ bản trong việc triển khai AI tạo sinh hiện đại, nhưng các nguyên tắc của nó cũng mở rộng sang lĩnh vực computer vision (CV).
-
Chatbot tạo sinh: Các dịch vụ như ChatGPT hoặc Claude dựa rất nhiều vào KV caching. Khi người dùng đặt câu hỏi tiếp nối, mô hình không đọc lại toàn bộ lịch sử trò chuyện từ đầu. Thay vào đó, nó thêm đầu vào mới vào các trạng thái đã được lưu trong bộ nhớ đệm của lượt trước, cho phép phản hồi gần như tức thì.
-
Hiểu video: Trong các tác vụ video understanding, các mô hình xử lý các khung hình theo trình tự. Tương tự như các token văn bản, các đặc trưng hình ảnh từ các khung hình trước đó có thể được lưu vào bộ nhớ đệm để giúp mô hình theo dõi đối tượng hoặc nhận diện hành động mà không cần xử lý lại toàn bộ lịch sử video. Điều này đặc biệt phù hợp cho action recognition, nơi ngữ cảnh theo thời gian là yếu tố then chốt.
Link to this sectionQuản lý bộ nhớ hiệu quả#
Khi các mô hình ngày càng lớn hơn, kích thước của KV cache có thể trở thành một nút thắt cổ chai, tiêu tốn hàng gigabyte bộ nhớ GPU. Các tiến bộ gần đây tập trung vào việc tối ưu hóa khả năng lưu trữ này.
- PagedAttention: Lấy cảm hứng từ bộ nhớ ảo trong hệ điều hành, PagedAttention (được giới thiệu bởi vLLM) cho phép KV cache được lưu trữ trong các khối bộ nhớ không liên tục. Điều này giúp giảm phân mảnh và cho phép kích thước batch lớn hơn trong quá trình model serving.
- KV Cache Quantization: Để tiết kiệm không gian, các nhà phát triển thường áp dụng mixed precision hoặc lượng tử hóa int8 cụ thể cho các giá trị đã được lưu trong cache. Điều này làm giảm dung lượng bộ nhớ, cho phép các thiết bị edge AI với RAM hạn chế chạy được các mô hình mạnh mẽ.
- Prompt Caching: Một kỹ thuật liên quan trong đó các trạng thái KV của một prompt hệ thống tĩnh (ví dụ: "Bạn là một trợ lý lập trình hữu ích") được tính toán một lần và sử dụng lại trên nhiều phiên người dùng khác nhau. Đây là một tính năng cốt lõi để tối ưu hóa quy trình prompt engineering ở quy mô lớn.
Link to this sectionPhân biệt các khái niệm liên quan#
Việc phân biệt KV Cache với các thuật ngữ tối ưu hóa và caching khác là rất hữu ích:
- KV Cache so với Prompt Caching: KV Cache thường đề cập đến bộ nhớ động, theo từng token được sử dụng trong một luồng tạo nội dung duy nhất. Prompt caching cụ thể đề cập đến việc lưu trữ trạng thái đã xử lý của một chỉ dẫn đầu vào cố định để sử dụng lại qua nhiều lệnh inference độc lập.
- KV Cache so với Embeddings: Embeddings là các biểu diễn vector của dữ liệu đầu vào (văn bản hoặc hình ảnh) giúp nắm bắt ý nghĩa ngữ nghĩa. KV cache lưu trữ các kích hoạt (key và value) có nguồn gốc từ các embedding này bên trong các lớp attention, cụ thể cho mục đích tạo chuỗi.
- KV Cache so với Model Weights: Model weights là các tham số tĩnh, đã học được của mạng thần kinh. KV cache bao gồm dữ liệu tạm thời, động được tạo ra trong quá trình chuyển tiếp (forward pass) của một chuỗi đầu vào cụ thể.
Link to this sectionVí dụ: Ngữ cảnh trong các mô hình thị giác#
Mặc dù KV caching nổi tiếng nhất trong NLP, khái niệm duy trì trạng thái cũng áp dụng cho các mô hình thị giác nâng cao. Trong ví dụ dưới đây, chúng ta mô phỏng ý tưởng truyền trạng thái (ngữ cảnh) trong kịch bản theo dõi video bằng cách sử dụng Ultralytics YOLO26. Ở đây, trình theo dõi duy trì danh tính của các đối tượng qua các khung hình, về mặt khái niệm tương tự như cách bộ nhớ đệm duy trì ngữ cảnh qua các token.
from ultralytics import YOLO
# Load the Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Track objects in a video, maintaining identity state across frames
# The 'track' mode effectively caches object features to link detections
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=False)
# Print the ID of the tracked objects
if results[0].boxes.id is not None:
print(f"Tracked IDs: {results[0].boxes.id.numpy()}")Các nhà phát triển muốn quản lý tập dữ liệu và triển khai các mô hình đã tối ưu hóa có thể tận dụng Ultralytics Platform, giúp đơn giản hóa quy trình từ chú thích dữ liệu đến model deployment hiệu quả. Đối với những ai quan tâm đến cơ chế sâu hơn của attention, các thư viện như PyTorch cung cấp các khối nền tảng nơi các cơ chế caching này được triển khai.






