OpenArchLabOpen Architecture — From Models to Systems

L2 · Model execution

Xử lý prompt trước khi bắt đầu sinh câu trả lời

Giai đoạn đọc toàn bộ prompt đầu vào trong một lượt tính toán song song để khởi tạo KV cache và sinh token đầu tiên.

LESSON ID prefill GROUP Kiến trúc Inference
Mục lục bài học

1Định nghĩa

Prefill là pha xử lý toàn bộ chuỗi token của prompt ngay khi request được scheduler đưa vào chạy. Vì tất cả token đầu vào đã biết trước, mô hình đẩy cả chuỗi qua các lớp Transformer song song trong một lượt để tổng hợp ngữ cảnh ban đầu.

Hai kết quả quan trọng nhất của prefill là các vector Key/Value của toàn bộ prompt được ghi vào KV cache và bảng điểm logits ở vị trí cuối cùng để chọn ra token trả lời đầu tiên. Do xử lý lượng lớn token cùng lúc bằng phép nhân ma trận đặc, prefill thường bị giới hạn bởi năng lực tính toán (compute-bound) của GPU và quyết định trực tiếp thời gian chờ token đầu tiên (TTFT).

Ví dụ đời thường: Prefill giống như lúc một bác sĩ đọc lướt toàn bộ tập hồ sơ bệnh án dày của bệnh nhân trước khi bắt đầu viết đơn thuốc. Bác sĩ đọc một mạch cả tập hồ sơ để nắm trọn vẹn tiền sử bệnh, gạch chân các ý chính ra tờ giấy nháp đặt trước mặt (tạo KV cache) rồi mới viết ra dòng thuốc đầu tiên.

2Luồng

Sơ đồ luồng (4 bước)
  1. Prompt đã tách token

    Có mã token và vị trí.

  2. Forward qua các lớp

    Tính biểu diễn cho context.

  3. Lưu keys và values

    Chuẩn bị state để tái sử dụng.

  4. Chọn token đầu

    Dùng logits cuối prompt; kiểm tra dừng.

Mã Mermaid
flowchart TD
  step1["Prompt đã tách token"]
  step2["Forward qua các lớp"]
  step3["Lưu keys và values"]
  step4["Chọn token đầu"]
  step1 --> step2
  step2 --> step3
  step3 --> step4

3Giải pháp

Engine có thể chia prompt dài thành các đoạn hoặc bỏ phần prefix đã có cache hợp lệ. Kernel attention giảm số lần đọc ghi bộ nhớ giúp xử lý context hiệu quả hơn.

Prefill thường cần nhiều tính toán, nhưng điểm nghẽn vẫn phụ thuộc mô hình, độ dài và kích thước nhóm. Đo trước khi quyết định tối ưu phép nhân ma trận hay bộ nhớ.

Để thấy prefill xử lý prompt theo từng đoạn, ghi K và V vào cache rồi tạo hàng logits đầu tiên, hãy chạy khối 4 (Prefill) trong Bài Lab tổng hợp.

4Profiling

  • Time to First Token

    Thời gian từ lúc gửi request tới token đầu. Tách chuẩn bị, hàng đợi, prefill và xuất kết quả để biết phần nào chậm.

  • Tốc độ prompt và cache reuse

    Đếm input token thực sự phải tính; so lần đầu với lần dùng lại cùng prefix.

Mẹo đo lường: ghim số liệu trên workload thật, ghi cả p50/p95/p99 thay vì chỉ trung bình, và luôn ghi lại điều kiện chạy (batch, cache, đồng thời, phần cứng) trước và sau khi tối ưu. Số đo thiếu điều kiện chạy thì không so sánh được.

5Ví dụ

Tóm tắt tài liệu

Trước khi viết chữ đầu tiên, mô hình cần xử lý context tài liệu. Prompt dài có thể tăng thời gian chờ ban đầu.

Hướng dẫn hệ thống lặp lại

Một engine có prefix caching có thể dùng lại phần đã xử lý, miễn model state và chuỗi token tương thích.

6Thuật ngữ

Prefill
Giai đoạn xử lý phần đầu vào đã có trước khi sinh tiếp.
Logits
Các điểm số chưa chuẩn hóa mà mô hình gán cho từng token có thể xuất hiện tiếp theo.
Glossary (7)
Vector
Danh sách các số biểu diễn một token hoặc đặc trưng.
Tokenizer
Bộ chuyển đổi văn bản và chuỗi mã token theo bảng từ vựng.
Prefix
Phần đầu của một chuỗi token; cache reuse cần phần đầu tương thích.
Cache
Bộ nhớ giữ kết quả có thể dùng lại; trong attention thường giữ key/value vectors.
Kernel
Hàm tính toán chạy trên thiết bị; thường xử lý nhiều phần tử song song.
Forward pass
Tính kết quả model từ đầu vào theo weights hiện tại.
Context
Chuỗi token trước vị trí hiện tại mà model được phép sử dụng.

7Bài liên quan

8Nguồn