OpenArchLabOpen Architecture — From Models to Systems

L2 · Output path

Chọn token từ điểm số và xuất văn bản

Chọn mã token tiếp theo từ bảng điểm logits theo quy tắc xác suất và giải mã ngược thành văn bản trả về client.

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

1Định nghĩa

Sampling là khâu chuyển bảng điểm thô (logits) ở đầu ra mô hình thành một mã token cụ thể ở cuối pha prefill và mỗi bước decode. Nếu cần kết quả cố định, hệ thống chọn thẳng token có điểm cao nhất (greedy); nếu cần câu trả lời tự nhiên hoặc đa dạng, hệ thống chuẩn hóa điểm bằng hệ số nhiệt độ (temperature), lọc nhóm ứng viên sáng giá nhất qua ngưỡng top-k hoặc top-p, rồi bốc thăm theo xác suất.

Sau khi chốt được mã token, hệ thống kiểm tra điều kiện dừng (token EOS, chuỗi dừng hoặc số token tối đa). Nếu chưa dừng, mã token này được đẩy ngược vào vòng decode kế tiếp, đồng thời mảnh văn bản tương ứng được giải mã qua tokenizer để stream ngay về phía người dùng.

Ví dụ đời thường: Sampling giống như cách bạn chọn món trong thực đơn khi đã chấm điểm mức độ yêu thích cho từng món. Chọn kiểu tham lam (greedy) là cứ món điểm cao nhất mà gọi mỗi ngày; còn chỉnh nhiệt độ (temperature) và lọc top-p giống như việc giữ lại 3–4 món ngon nhất trong ngày rồi bốc thăm ngẫu nhiên trong nhóm đó để bữa ăn vừa ngon vừa không bị nhàm chán.

2Luồng

Sơ đồ luồng (4 bước)
  1. Logits từ mô hình

    Một điểm số cho mỗi token ứng viên.

  2. Áp quy tắc chọn

    Greedy hoặc temperature, top-k, top-p.

  3. Kiểm tra dừng

    Xem token kết thúc, độ dài hoặc stop string.

  4. Xuất văn bản

    Ghép token pieces và stream; nếu chưa dừng thì tiếp tục.

Mã Mermaid
flowchart TD
  step1["Logits từ mô hình"]
  step2["Áp quy tắc chọn"]
  step3["Kiểm tra dừng"]
  step4["Xuất văn bản"]
  step1 --> step2
  step2 --> step3
  step3 --> step4

3Giải pháp

Giữ sampling trên thiết bị khi phù hợp giúp tránh đồng bộ dữ liệu liên tục với host. Với output có cấu trúc, bộ ràng buộc có thể giới hạn token hợp lệ theo trạng thái định dạng.

Tăng buffer trước khi gửi giảm số lần truyền nhưng làm người dùng thấy token chậm hơn. Chọn điểm cân bằng theo ứng dụng.

Để theo dõi một hàng logits trở thành xác suất, bị lọc top-k và top-p rồi cho ra một token và điều kiện dừng, hãy chạy khối 8 (Logits → sampling → stop check) trong Bài Lab tổng hợp.

4Profiling

  • Sampling và flush latency

    Tách thời gian chọn token khỏi thời gian gửi nó tới client.

  • Tính đúng khi dừng

    Kiểm tra token kết thúc và stop string kéo dài qua nhiều token; so văn bản streamed với văn bản cuối.

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ụ

Trả mã định dạng cố định

Greedy hoặc constraint decoding có thể phù hợp khi cần tính ổn định, nhưng không tự bảo đảm nội dung đúng.

Trợ lý viết sáng tạo

Lấy mẫu có temperature tạo đa dạng; lưu seed và cấu hình để hiểu khác biệt giữa các lần chạy.

6Thuật ngữ

Greedy decoding
Luôn chọn token có điểm số cao nhất tại bước hiện tại.
Temperature
Hệ số điều chỉnh độ tập trung của phân phối trước khi lấy mẫu.
Nucleus sampling / top-p
Giữ tập token nhỏ nhất có tổng xác suất đạt ngưỡng đã chọn rồi lấy mẫu trong tập đó.
Glossary (4)
Logits
Điểm số chưa chuẩn hóa cho các token ứng viên trước khi chọn token.
Latency
Thời gian chờ để nhận một kết quả hoặc một bước kết quả.
Host
Phần chương trình điều khiển thiết bị, thường chạy trên bộ xử lý trung tâm.
Forward pass
Tính kết quả model từ đầu vào theo weights hiện tại.

7Bài liên quan

8Nguồn