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 giảm độ trễ suy luận và tăng hiệu quả cho Ultralytics YOLO26.
KV Cache (bộ nhớ đệm Key-Value) là kỹ thuật tối ưu hóa then chốt, chủ yếu được dùng trong mô hình ngôn ngữ lớn (LLMs) và các kiến trúc dựa trên Transformer khác để giảm độ trễ suy luận và chi phí tính toán. Về cơ bản, KV cache lưu trữ các ma trận Key và Value do cơ chế attention tạo ra cho những token trước đó trong một chuỗi. Bằng cách lưu các phép tính trung gian này, model không cần 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 token mới. Quy trình này chuyển quy trình tạo văn bản từ phép toán có độ phức tạp bậc hai thành bậc tuyến tính, giúp các tương tác thời gian thực với chatbot và AI agent trở nên khả thi.
Cơ chế và lợi ích#
Trong một model Transformer tiêu chuẩn, để tạo từ tiếp theo, model cần chú ý đến tất cả các từ trước đó nhằm hiểu ngữ cảnh. Nếu không có bộ nhớ đệm, model phải tính toán lại các mối quan hệ toán học của 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 vùng 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 tăng tốc đáng kể engine suy luận. Điều này rất cần thiết cho các ứng dụng đòi hỏi độ trễ thấp, chẳng hạn như suy luận thời gian thực trong bot dịch vụ khách hàng.
- Sử dụng tài nguyên hiệu quả: Dù làm tăng mức sử dụng bộ nhớ (VRAM), kỹ thuật này giảm đáng kể lượng tính toán (FLOPs) cần cho mỗi token. Sự đánh đổi này thường được quản lý bằng các kỹ thuật như lượng tử hóa model hoặc phân trang, tương tự cách hệ điều hành quản lý RAM.
- Mở rộng ngữ cảnh: Quản lý KV cache hiệu quả giúp model xử lý cửa sổ ngữ cảnh lớn hơn, cho phép xử lý tài liệu dài hoặc duy trì hội thoại mạch lạc trong thời gian dài.
Ứng dụng thực tế#
KV cache là thành phần nền tảng khi triển khai AI tạo sinh hiện đại, nhưng các nguyên lý của nó cũng được ứng dụng trong thị giác máy tính (CV).
-
Chatbot tạo sinh: Các dịch vụ như ChatGPT hoặc Claude phụ thuộc nhiều vào KV cache. Khi người dùng đặt câu hỏi tiếp nối, model không đọc lại toàn bộ lịch sử trò chuyện từ đầu. Thay vào đó, model thêm đầu vào mới vào các trạng thái đã lưu đệ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ụ hiểu video, model xử lý tuần tự từng khung hình. Tương tự token văn bản, các đặc trưng trực quan từ những khung hình trước có thể được lưu đệm để giúp model 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 với nhận diện hành động, nơi ngữ cảnh thời gian đóng vai trò then chốt.
Quản lý bộ nhớ hiệu quả#
Khi model ngày càng lớn, dung lượng KV cache có thể trở thành nút thắt, tiêu tốn hàng gigabyte bộ nhớ GPU. Các tiến bộ gần đây tập trung vào tối ưu hóa dung lượng lưu trữ này.
- PagedAttention: Lấy cảm hứng từ bộ nhớ ảo trong hệ điều hành, PagedAttention (do vLLM giới thiệu) cho phép lưu KV cache trong các khối bộ nhớ không liên tục. Cách này giảm phân mảnh và cho phép tăng kích thước batch trong quá trình phục vụ model.
- Lượng tử hóa KV Cache: Để tiết kiệm dung lượng, developer thường áp dụng độ chính xác hỗn hợp hoặc lượng tử hóa int8 riêng cho các giá trị được lưu đệm. Cách này giảm dung lượng bộ nhớ, cho phép thiết bị AI biên có RAM hạn chế chạy các model mạnh.
- Lưu đệm prompt: Đây là kỹ thuật liên quan, trong đó các trạng thái KV của một system prompt tĩnh (ví dụ: "Bạn là trợ lý lập trình hữu ích") được tính toán một lần và tái sử dụng trong nhiều phiên người dùng khác nhau. Đây là tính năng cốt lõi để tối ưu hóa quy trình thiết kế prompt ở quy mô lớn.
Phâ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à lưu đệm khác là rất hữu ích:
- KV Cache so với lưu đệm prompt: KV Cache thường chỉ bộ nhớ động, cập nhật theo từng token trong một luồng tạo duy nhất. Lưu đệm prompt cụ thể là lưu trạng thái đã xử lý của một chỉ dẫn đầu vào cố định để tái sử dụng trong nhiều lần gọi suy luận độc lập.
- KV Cache so với embedding: Embedding 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), thể hiện ý nghĩa ngữ nghĩa. KV cache lưu các activation (key và value) được suy ra từ những embedding này bên trong các lớp attention, cụ thể nhằm phục vụ việc tạo chuỗi.
- KV Cache so với trọng số model: Trọng số model là các tham số tĩnh đã học của mạng neural. KV cache bao gồm dữ liệu động, tạm thời được tạo trong lượt truyền xuôi của một chuỗi đầu vào cụ thể.
Ví dụ: Ngữ cảnh trong model thị giác#
Dù KV cache nổi tiếng nhất trong NLP, khái niệm duy trì trạng thái cũng được áp dụng cho các model thị giác tiên tiến. Trong ví dụ dưới đây, chúng tôi mô phỏng ý tưởng truyền trạng thái (ngữ cảnh) trong tình huống theo dõi video bằng Ultralytics YOLO26. Tại đây, bộ theo dõi duy trì danh tính đối tượng qua các khung hình, tương tự về mặt khái niệm với cách cache 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()}")Developer muốn quản lý dataset và triển khai model đã tối ưu có thể sử dụng Ultralytics Platform, giúp đơn giản hóa pipeline từ gán nhãn dữ liệu đến triển khai model hiệu quả. Những ai quan tâm đến cơ chế attention chuyên sâu có thể dùng các thư viện như PyTorch, cung cấp các khối nền tảng để triển khai những cơ chế lưu đệm này.









