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.
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
- Prompt đã tách token
Có mã token và vị trí.
- Forward qua các lớp
Tính biểu diễn cho context.
- Lưu keys và values
Chuẩn bị state để tái sử dụng.
- 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.