Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Prompt Caching

Bộ nhớ đệm prompt tái sử dụng các trạng thái key-value mà LLM đã tính cho phần tiền tố prompt lặp lại, nhờ đó các yêu cầu sau bỏ qua bước tính toán này và giảm chi phí.

Lưu bộ nhớ đệm prompt, còn gọi là lưu bộ nhớ đệm tiền tố, lưu các kết quả trung gian mà mô hình ngôn ngữ lớn (LLM) tính toán cho phần đầu của prompt, rồi tái sử dụng cho các yêu cầu sau có phần mở đầu giống hệt. Nhiều yêu cầu dùng chung một tiền tố dài, không thay đổi, chẳng hạn prompt hệ thống, định nghĩa công cụ, tập ví dụ, tài liệu dài hoặc toàn bộ cuộc hội thoại cho đến hiện tại, rồi nối thêm phần mới ngắn. Khi cache hit, máy chủ chỉ xử lý các token mới; nhờ đó thời gian đến token đầu ra đầu tiên ngắn hơn và, với API được lưu trữ, chi phí cho phần đầu vào đã cache giảm xuống chỉ còn một phần nhỏ so với mức thông thường.

Cách hoạt động của lưu bộ nhớ đệm prompt#

LLM dựa trên transformer trả lời theo hai giai đoạn. Trong bước prefill, mỗi lớp tính một vector key và value cho từng token trong prompt; khi giải mã, mỗi token mới chú ý đến tất cả key và value đó thông qua cơ chế attention. Trong một yêu cầu, KV cache giữ các tensor này để mỗi token được tạo không phải tính toán lại prompt. Lưu bộ nhớ đệm prompt giữ chúng giữa các yêu cầu. Vì attention trong các model này có tính nhân quả, key và value của một token chỉ phụ thuộc vào các token đứng trước nó; do đó, hai prompt có cùng tiền tố sẽ có key và value giống hệt nhau cho tiền tố đó, nên bản lưu trữ có thể thay cho việc tính toán lại.

Ví dụ sau minh họa cách tái sử dụng với GPT-2 từ Transformers của Hugging Face. Ví dụ này prefill prompt hệ thống dài 409 token một lần, sau đó trả lời hai câu hỏi bằng cách chỉ chạy các token riêng của từng câu hỏi trên tiền tố đã cache, rồi so sánh kết quả với việc tính toán lại toàn bộ:

import copy

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")

# A long system prompt shared by every request, followed by different user questions
system = "You answer questions about a camera store. " + "Returns are accepted within 30 days with a receipt. " * 40
questions = [" Question: Can I return a lens?", " Question: Do you ship abroad?"]
prefix_ids = tokenizer(system, return_tensors="pt").input_ids

with torch.no_grad():
    # Prefill the shared prefix once and keep its key-value cache
    prefix_cache = model(prefix_ids).past_key_values
    for question in questions:
        ids = tokenizer(question, return_tensors="pt").input_ids
        # Cache hit: only the question's tokens run through the model
        cached = model(ids, past_key_values=copy.deepcopy(prefix_cache)).logits[0, -1]
        # No cache: the whole prompt is computed from scratch
        full = model(torch.cat([prefix_ids, ids], dim=1)).logits[0, -1]
        same = torch.allclose(cached, full, atol=1e-3)
        print(f"Computed {ids.shape[1]} of {prefix_ids.shape[1] + ids.shape[1]} tokens, same next-token scores: {same}")

Chương trình in ra Computed 8 of 417 tokens, same next-token scores: True và Computed 7 of 416 tokens, same next-token scores: True: mỗi yêu cầu chỉ đưa chưa đến 2% số token trong prompt qua model nhưng vẫn có điểm token tiếp theo giống với phép tính đầy đủ.

Các engine mã nguồn mở phục vụ model tự động áp dụng cơ chế này. vLLM lưu KV cache trong các khối có kích thước cố định theo cách bố trí bộ nhớ của PagedAttention, tái sử dụng các khối của tiền tố khớp dài nhất cho mỗi yêu cầu mới và loại bỏ những khối ít được sử dụng gần đây nhất khi bộ nhớ GPU sắp cạn. RadixAttention của SGLang lưu tiền tố đã cache trong cây radix, nhờ đó các yêu cầu chia sẻ bất kỳ đoạn đầu nào cũng có thể tái sử dụng; bài báo SGLang báo cáo thông lượng cao hơn tới 6.4x so với các engine suy luận hiện đại khác. Bài báo Prompt Cache của In Gim và các cộng sự, được trình bày tại MLSys 2024, mở rộng khả năng tái sử dụng từ tiền tố trùng khớp chính xác sang các module prompt được khai báo như template và tài liệu, đồng thời báo cáo mức giảm thời gian đến token đầu tiên từ 8x trên GPU đến 60x trên CPU.

Lưu bộ nhớ đệm prompt trong API LLM#

API lưu trữ cung cấp cùng cơ chế này nhưng tính phí. Lưu bộ nhớ đệm prompt của OpenAI được bật mặc định cho các model được hỗ trợ; lưu bộ nhớ đệm prompt của Claude từ Anthropic được bật bằng trường cache_control, áp dụng một lần cho mỗi yêu cầu hoặc cho tối đa bốn khối nội dung. Anthropic tính phí đọc cache bằng một phần mười hoặc thấp hơn giá đầu vào cơ bản, còn ghi vào cache mặc định năm phút có giá gấp 1.25 lần mức cơ bản; mỗi lần cache hit sẽ đặt lại thời hạn năm phút. Cả hai nhà cung cấp chỉ khớp tiền tố giống hệt nhau: Anthropic so sánh công cụ trước, rồi đến prompt hệ thống và tin nhắn; vì vậy, sửa định nghĩa công cụ sẽ làm mất hiệu lực mọi nội dung đã cache phía sau. Hướng dẫn của OpenAI khuyên đặt chỉ dẫn ổn định và tài liệu tham khảo ở đầu, còn thông tin riêng cho từng người dùng ở cuối.

Các workload có tiền tố dùng chung dài sẽ hưởng lợi nhiều nhất:

  • Tác tử AI: Mỗi bước gửi lại định nghĩa công cụ và toàn bộ lịch sử, tức prompt của bước trước cộng với hành động mới nhất và kết quả của hành động đó.
  • Chatbot: Mỗi lượt trong cuộc hội thoại đều nối dài prompt của lượt trước, vì vậy lịch sử được lưu vào cache cho đến khi có tin nhắn mới.
  • Hỏi đáp tài liệu: Nhiều câu hỏi về một hợp đồng, báo cáo hoặc repository dài sử dụng lại tài liệu đã được xử lý; các pipeline truy xuất cũng tái sử dụng tài liệu mỗi khi truy xuất lại cùng những đoạn văn bản.
  • Prompt few-shot: Hàng chục ví dụ cố định được tính toán một lần rồi sử dụng lại cho mọi đầu vào.

Các model thị giác có vocabulary mở tái sử dụng quá trình tính toán prompt theo cách tương tự. Ultralytics YOLOE mã hóa các prompt lớp như "forklift" bằng một text encoder MobileCLIP một lần, khi gọi set_classes(), rồi lưu các embedding thu được trong model, nhờ đó các dự đoán sau này bỏ qua hoàn toàn text encoder; save_prompt_embeddings() ghi chúng vào tệp NPZ để phiên làm việc sau tải bằng load_prompt_embeddings() thay vì chạy lại encoder.

  • KV cache: Tái sử dụng key và value giữa các token trong một lần sinh. Prompt caching tái sử dụng chúng giữa các request riêng biệt.
  • Semantic caching: Lưu toàn bộ phản hồi và trả về phản hồi đó khi truy vấn mới có ý nghĩa giống một truy vấn trước, bỏ qua hoàn toàn model. Prompt caching vẫn chạy model trên phần prompt mới và tạo câu trả lời mới.
  • Nén prompt: Rút ngắn chính prompt, phù hợp với văn bản thay đổi theo từng request. Hai phương pháp kết hợp hiệu quả: phần cố định của prompt được cache, còn phần thay đổi được nén.
  • Prompt engineering: Quyết định nội dung prompt. Caching chỉ thay đổi lượng nội dung mà server phải tính toán lại; cache hit giữ nguyên điểm số token tiếp theo, ngoại trừ sai số làm tròn dấu phẩy động.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning