Prefix Cache Là Gì?
Prefix Cache (bộ nhớ đệm tiền tố) là kỹ thuật lưu lại kết quả tính toán của phần đầu prompt để tái sử dụng cho các yêu cầu sau đó. Khi nhiều câu hỏi chia sẻ cùng một đoạn văn bản mở đầu, hệ thống chỉ cần tính toán phần mới và ghép nối với phần đã lưu.
Nói đơn giản hơn, thay vì đọc lại toàn bộ cuốn sách mỗi khi bạn hỏi một câu mới, thư viện nhớ sẵn nội dung và chỉ tìm kiếm phần thông tin bổ sung. Prefix Cache làm đúng việc đó cho AI.
Tại Sao Prefix Cache Quan Trọng?
Khi bạn gửi prompt cho AI, hệ thống phải xử lý từng token qua nhiều lớp transformer. Quá trình này tốn thời gian và tài nguyên tính toán. Nếu prompt dài vài nghìn token, phần tiền xử lý (prefill) chiếm đa số thời gian phản hồi.
Trong thực tế sử dụng, nhiều prompt chia sẻ chung phần đầu. Ví dụ trong chatbot, system prompt giống nhau cho mọi người dùng. Trong RAG, phần tài liệu context thường lặp lại giữa các câu hỏi liên quan. Prefix Cache giúp tận dụng đúng điểm này.
Prefix Cache Hoạt Động Như Thế Nào?
Quá trình xử lý prompt trong AI chia làm hai giai đoạn. Giai đoạn prefill xử lý toàn bộ prompt đầu vào, tính toán attention và tạo ra KV pairs cho từng layer. Giai đoạn decode sinh token mới dựa trên kết quả từ prefill.
Prefix Cache lưu lại chính những KV pairs từ giai đoạn prefill. Khi một prompt mới có phần đầu giống hệt prompt trước, hệ thống bỏ qua phần prefill cho đoạn đó và dùng KV cache đã lưu. Chỉ phần khác biệt mới cần tính toán mới.
Quá trình so khớp diễn ra theo từng token từ đầu prompt. Hệ thống dừng khi gặp token khác biệt đầu tiên. Phần trước điểm khác biệt được gọi là prefix chung, và kết quả tính toán của nó được lấy từ cache.
Cache Hit và Cache Miss
Khi phần đầu prompt trùng khớp với cache, gọi là cache hit. Hệ thống lấy ngay KV pairs đã lưu, bỏ qua prefill cho đoạn đó. Tốc độ xử lý tăng đáng kể, đặc biệt với prompt dài.
Khi phần đầu prompt không trùng, gọi là cache miss. Hệ thống phải tính toán từ đầu, giống như không có cache. Prefix Cache không gây hại trong trường hợp này, chỉ không mang lại lợi ích.
Tỷ lệ cache hit càng cao thì hiệu quả càng lớn. Trong các hệ thống chat, cache hit thường đạt 60-80% vì system prompt và lịch sử trò chuyện lặp lại nhiều.
Ứng Dụng Thực Tế Của Prefix Cache
Các nhà cung cấp API AI lớn đều đã tích hợp Prefix Cache. OpenAI tự động nhận diện prefix chung giữa các request và lưu cache trong 5-10 phút. Anthropic cung cấp tính năng tương tự cho Claude, giảm giá prefill token khi prompt caching được kích hoạt.
Trong RAG, khi người dùng hỏi nhiều câu về cùng một tài liệu, phần context document được cache lại. Mỗi câu hỏi mới chỉ cần xử lý phần query ngắn, không cần tính lại toàn bộ tài liệu dài hàng nghìn token.
Trong serving infrastructure, các framework như vLLM và SGLang triển khai Prefix Cache ở hệ thống để phục vụ nhiều người dùng cùng lúc. Khi 100 người dùng cùng chat với cùng một system prompt, hệ thống chỉ tính toán system prompt một lần.
Prefix Cache Khác Gì So Với KV Cache?
KV Cache lưu kết quả tính toán trong một lần sinh văn bản, tồn tại trong một request. Khi request kết thúc, KV cache bị xóa. Mỗi request mới phải tính toán lại từ đầu.
Prefix Cache mở rộng khái niệm này ra giữa các request. Nó tồn tại sau khi request kết thúc và được tái sử dụng cho request sau. Bạn có thể hiểu KV Cache là bộ nhớ ngắn hạn trong một cuộc trò chuyện, còn Prefix Cache là bộ nhớ dài hạn giữa nhiều cuộc trò chuyện.
Bài viết về KV Cache trên blog mình đã giải thích chi tiết về cơ chế lưu trữ Key-Value trong transformer. Nếu chưa nắm rõ, bạn nên đọc bài đó trước khi đi sâu hơn vào Prefix Cache.
Lợi Ích Của Prefix Cache
Giảm độ trễ (TTFT – Time To First Token) là lợi ích rõ rệt nhất. Khi prefill bị bỏ qua cho phần prefix, token đầu tiên xuất hiện nhanh hơn nhiều. Với prompt 4.000 token có cache hit 80%, thời gian prefill giảm từ 2 giây xuống 0.4 giây.
Giảm chi phí tính toán đồng nghĩa giảm giá thành. Anthropic giảm 90% giá cho token được cache so với token tính toán mới. OpenAI giảm 50% cho cached input token. Với ứng dụng lưu lượng cao, tiết kiệm này rất đáng kể.
Tăng throughput giúp phục vụ nhiều người dùng hơn trên cùng một hạ tầng. GPU ít phải tính toán lặp lại, dành tài nguyên cho các tác vụ mới.
Hạn Chế Cần Lưu Ý
Cache có thời hạn. Mỗi nhà cung cấp quy định khác nhau, thường từ 5 phút đến 1 giờ. Nếu không có request nào dùng lại prefix trong khoảng thời gian này, cache bị xóa. Ứng dụng có traffic thưa sẽ khó tận dụng tối đa.
Prefix phải khớp chính xác từng token. Thay đổi một từ trong system prompt, thêm dấu cách hay đổi thứ tự câu đều làm cache miss. Điều này đòi hỏi thiết kế prompt nhất quán.
Bộ nhớ cache giới hạn bởi RAM của GPU. Khi cache đầy, hệ thống áp dụng chính sách thay thế (thường là LRU – Least Recently Used) để giải phóng không gian. Prefix cũ ít dùng sẽ bị xóa trước.
Khi Nào Nên Tận Dụng Prefix Cache?
Hệ thống chat với system prompt dài cố định là trường hợp lý tưởng. Mỗi cuộc trò chuyện mới đều dùng chung system prompt vài nghìn token, cache hit gần như 100%.
Ứng dụng RAG với tài liệu dài cũng hưởng lợi lớn. Nhiều câu hỏi về cùng một tài liệu chia sẻ context dài, chỉ phần query thay đổi.
API serving cho nhiều tenant dùng chung template. Nếu template prompt giống nhau, chỉ phần user input khác, Prefix Cache phát huy tác dụng tối đa.
Ngược lại, ứng dụng có prompt thay đổi liên tục hoặc traffic thấp sẽ không thấy nhiều lợi ích. Trong trường hợp đó, chi phí quản lý cache có khi còn cao hơn lợi ích mang lại.
Kết Luận
Prefix Cache là tối ưu hóa đơn giản nhưng hiệu quả cao trong serving AI. Bằng cách nhận ra rằng nhiều prompt chia sẻ chung phần đầu, kỹ thuật này giảm đáng kể độ trễ và chi phí mà không thay đổi chất lượng đầu ra.
Nếu bạn đang xây dựng ứng dụng AI, hãy thiết kế prompt sao cho phần cố định nằm ở đầu và nhất quán giữa các request. Chiến lược nhỏ này giúp tận dụng Prefix Cache tự động trên hầu hết các nền tảng API hiện nay.
