OpenArchLabOpen Architecture — From Models to Systems

L4 · Deployment topology

Tách máy xử lý prompt khỏi máy sinh token

Kiến trúc tách riêng cụm GPU chuyên xử lý prompt (prefill) và cụm GPU chuyên sinh token (decode) để tối ưu tài nguyên độc lập.

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

1Định nghĩa

Disaggregated serving là kiến trúc triển khai tách biệt hai giai đoạn của một request suy luận: giao pha prefill (nặng về tính toán ma trận) cho một nhóm worker riêng, và giao pha decode (nặng về băng thông bộ nhớ) cho một nhóm worker khác.

Khi chạy chung hai pha trên cùng một GPU, một lượt prefill của prompt dài dễ làm khựng toàn bộ các chuỗi đang decode dở, gây vọt độ trễ giữa các token (TPOT). Khi tách rời, worker prefill tính xong prompt sẽ truyền khối KV cache vừa tạo qua hạ tầng mạng tốc độ cao sang worker decode để sinh tiếp, giúp mỗi cụm chọn cấu hình phần cứng và cỡ batch tối ưu riêng.

Ví dụ đời thường: Kiến trúc tách rời prefill và decode giống như cách vận hành ở một phòng khám hiện đại: tách riêng phòng xét nghiệm tổng quát ban đầu (prefill — cần máy móc công suất lớn xử lý một lượt hồ sơ dày) và phòng theo dõi điều trị hàng ngày (decode — cần phát thuốc đều đặn đúng giờ). Nhờ tách hai khu vực, một ca khám tổng quát phức tạp mới vào sẽ không làm chậm nhịp phát thuốc của hàng chục bệnh nhân đang điều trị.

2Luồng

Sơ đồ luồng (4 bước)
  1. Router chọn pool

    Request tới worker prefill.

  2. Xử lý prompt

    Tạo context cache và thông tin chuyển giao.

  3. Chuyển state

    Dùng connector/transport giữ mapping đúng.

  4. Sinh và stream

    Decode worker nhận context rồi phục vụ tiếp.

Mã Mermaid
flowchart TD
  step1["Router chọn pool"]
  step2["Xử lý prompt"]
  step3["Chuyển state"]
  step4["Sinh và stream"]
  step1 --> step2
  step2 --> step3
  step3 --> step4

3Giải pháp

vLLM có tài liệu về connectors cho disaggregated prefill. Cần điều phối ownership, chuyển state và xử lý lỗi ngoài engine tính toán.

So với chạy chung, kiến trúc này thêm chi phí transfer. Chỉ chọn khi lợi ích tách scheduling/capacity lớn hơn chi phí network và vận hành.

4Profiling

  • Thời gian chuyển cache

    Đếm bytes và latency, tính vào thời gian tới token đầu.

  • Goodput theo tổng chi phí

    So cả hai pools với cấu hình colocated ở cùng mức latency và chất lượng.

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ụ

Traffic nhiều prompt dài

Pool prefill có thể scale riêng khi phần xử lý prompt chiếm nhiều tài nguyên.

Prompt ngắn và network chậm

Transfer có thể đắt hơn phần tính toán tiết kiệm; giữ chung workers có thể hiệu quả hơn.

6Thuật ngữ

Disaggregation
Tách các chức năng thành các pool tài nguyên độc lập.
Key-value transfer
Chuyển cache attention từ nơi tạo nó tới nơi dùng cho bước sinh tiếp.
Glossary (4)
Latency
Thời gian chờ để nhận một kết quả hoặc một bước kết quả.
Goodput
Lượng công việc hoàn tất mà đồng thời đáp ứng các mục tiêu đã chọn.
Worker
Tiến trình hoặc máy thực hiện một phần công việc của hệ thống.
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