Disaggregation: Bài toán của nghìn GPU — và vì sao hầu hết đội ngũ không nên áp dụng
Mặc dù mọi framework suy luận lớn đều phát hành tính năng tách prefill-decode trong năm nay, nhưng phân tích cho thấy giải pháp này chỉ thực sự hiệu quả ở quy mô trên 1.000 GPU. Với hầu hết đội ngũ vận hành dưới ngưỡng này, chunked prefill là lựa chọn mặc định tối ưu hơn nhờ chi phí vận hành thấp và không cần hạ tầng mạng cao cấp. Bài viết phân tích ba điều kiện bắt buộc và các chi phí tiềm ẩn mà nhiều bài hướng dẫn thường bỏ qua.

Disaggregation: Bài toán của nghìn GPU — và vì sao hầu hết đội ngũ không nên áp dụng
Năm nay, mọi framework suy luận lớn đều phát hành tính năng tách prefill-decode (disaggregation). NVIDIA tích hợp vào Dynamo, SGLang đặt làm mặc định cho triển khai quy mô lớn, còn vLLM thêm KV connector API. Tuy nhiên, đồng thuận đang hình thành quá nhanh này lại sai với hầu hết đội ngũ vận hành thực tế — nơi chunked prefill mới là giải pháp phù hợp.
Phân tích từ Doubleword cho thấy triển khai disaggregation cân bằng chỉ ngang bằng throughput của kiến trúc colocated, nhưng ở quy mô GPU nhỏ, tổn thất do làm tròn chiếm ưu thế: bạn không thể phân bổ GPU dạng phân số, nên lợi ích chuyên môn hóa bị nuốt bởi công suất worker không hoàn chỉnh. Nghiên cứu tháng 6/2025 đánh giá hàng trăm nghìn điểm thiết kế cũng kết luận disaggregation chỉ hiệu quả với mô hình lớn và lưu lượng thiên về prefill — không phải dạng workload hỗn hợp mà hầu hết đội ngũ đang vận hành.
Vấn đề Disaggregation giải quyết: Xung đột tài nguyên
Prefill và decode có cấu hình phần cứng trái ngược nhau. Prefill thiên về tính toán: phép nhân ma trận song song trên toàn bộ chuỗi đầu vào, GPU compute utilization đạt 80–95%. Decode thiên về băng thông bộ nhớ: đọc tuần tự KV cache để sinh từng token một, compute utilization dưới 5% trên H100.
Khi cả hai chia sẻ một GPU, chúng tranh giành tài nguyên. Một request prefill lớn xuất hiện giữa lúc decode sẽ làm thời gian sinh token (TPOT) tăng gấp 2–30 lần trong điều kiện lưu lượng bùng nổ. Batch decode bị đình trệ trong khi prefill bão hòa các đơn vị tính toán.
Nghiên cứu DistServe đã chứng minh giải pháp hoạt động ở quy mô lớn: tách prefill và decode lên các cụm riêng phục vụ được nhiều request hơn 7,4 lần trong cùng giới hạn độ trễ. Ở quy mô DistServe đo đạc, disaggregation là lựa chọn đúng đắn. Nhưng có một giải pháp đơn giản hơn xử lý được hầu hết xung đột mà không cần thay đổi kiến trúc.
Chunked Prefill: Giải pháp hầu hết đội ngũ thực sự cần
Chunked prefill chia các request prefill dài thành nhiều phần nhỏ và xen kẽ với batch decode trên cùng một GPU. Không cần cụm nút riêng, không cần truyền KV cache qua mạng, không cần chỉnh tỷ lệ P:D.
TNG Technology Consulting đo được mức tăng 50% tổng throughput token khi chỉ bật chunked prefill trên vLLM tiêu chuẩn. Hãy hình dung như trạm thu phí trên đường cao tốc: thay vì đóng toàn bộ làn cho một xe tải cỡ lớn, chunked prefill cho xe tải đi qua từng làn một trong khi xe thường vẫn lưu thông bình thường.
Chunked prefill không loại bỏ hoàn toàn xung đột, nhưng giới hạn nó. Mỗi chunk chiếm compute units trong khoảng thời gian có giới hạn rồi nhường cho decode. Với workload dưới ~50 request/giây và độ dài prompt vừa phải, giới hạn đó đủ chặt để đảm bảo SLO.
Ba chi phí của Disaggregation mà bài viết hướng dẫn bỏ qua
Chi phí truyền KV cache: Mỗi request hoàn thành prefill phải gửi KV cache đến decode node qua mạng. Với mô hình 70B tham số, con số này khoảng 2,6 GB mỗi request. Khi prefill và decode chia sẻ node, KV cache nằm trong GPU memory. Khi disaggregate, băng thông mạng giảm đi nhiều bậc tùy topology.
Bề mặt vận hành: Disaggregation làm tăng gấp đôi công việc quản lý hạ tầng. Bạn vận hành hai cụm riêng với policy scale khác nhau, tỷ lệ P:D phụ thuộc vào workload — LMSYS phải dùng 4 prefill nodes và 9 decode nodes cho DeepSeek-R1, và con số này thay đổi ngay khi tỷ lệ prompt/output thay đổi. Không có fallback: nếu prefill node hỏng, decode node không thể đảm nhận thay.
Hố tử thần lỗi âm thầm: Ở mức độ đồng thời thấp, disaggregation hoạt động bình thường. Nhưng ở production concurrency, nó hỏng mà không sinh lỗi: SGLang issue #9266 ghi nhận lỗi truyền KV cache khi có 64 request đồng thời trả về HTTP 400; issue #30233 mô tả trường hợp prefill hủy nhưng vẫn truyền KV cache một token, khiến decode sinh nội dung từ vùng nhớ chưa khởi tạo mà không có bất kỳ lỗi nào hiện ra.
Ba điều kiện để Disaggregation thực sự đáng giá
Handbook của Modular ghi nhận mức giảm hiệu suất 20–30% từ disaggregation trên workload nhỏ hoặc chưa tối ưu. Chi phí này trả trước và chắc chắn: bạn trả chi phí truyền KV trên mọi request bất kể có đạt được tăng throughput hay không. Disaggregation chỉ hoàn vốn khi đồng thời thỏa ba điều kiện:
- Đủ GPU để phân bổ tròn trịa: DeepSeek cần hàng nghìn GPU trước khi tỷ lệ P:D tạo ra số node nguyên khớp với traffic. Ở quy mô 8–16 GPU, lựa chọn có thể là 1:7 hoặc 2:6 — không cái nào phù hợp workload.
- Băng thông mạng duy trì tốc độ sản xuất KV: Nếu prefill pool tạo KV cache nhanh hơn interconnect truyền được, decode node rảnh chờ dữ liệu. Nút thắt di chuyển từ xung đột tính toán sang truyền tải mạng.
- Autoscaling động cho traffic thay đổi: Workload chat (prompt ngắn, decode dài) cần tỷ lệ P:D khác với pipeline RAG (prompt dài, decode ngắn). Nếu traffic thay đổi theo ngày mà node pool tĩnh, một bên sẽ thừa tài nguyên, bên kia thiếu.
Nên đo gì trước khi quyết định
Đừng tách hạ tầng dựa trên kiến trúc sơ đồ. Hãy đo đạc trước:
- TPOT p95, không phải p50: Median che giấu các đỉnh xung đột mà disaggregation nhắm tới. Nếu p95 TPOT nằm trong SLO khi dùng chunked prefill, bạn không có vấn đề mà disaggregation giải quyết.
- Tỷ lệ prefill trong TTFT: Phân tích request thực tế. Nếu prefill chiếm phần nhỏ trong time-to-first-token, nút thắt nằm ở chỗ khác — queue, scheduling hay mạng — và disaggregation không khắc phục được.
- Độ tin cậy truyền KV ở mức đồng thời cao: Chạy thử ở production concurrency, không chỉ QPS thấp. Các lỗi trong SGLang issue tracker chỉ xuất hiện khi vượt ngưỡng đồng thời nhất định.
So sánh kiến trúc colocated, disaggregated và chunked prefill
Kết luận: Bắt đầu với Chunked Prefill
Mặc định dùng chunked prefill. Nó giải quyết vấn đề xung đột lập lịch mà hầu hết đội ngũ đang gặp, không tốn chi phí mạng và không mở rộng bề mặt vận hành. Benchmark p95 TPOT; nếu đạt SLO, dừng tại đó.
Disaggregation là kiến trúc đúng đắn khi vượt mốc khoảng 1.000 GPU, với interconnect nhanh và đủ năng lực kỹ thuật để quản lý tỷ lệ P:D và độ tin cậy truyền KV. Những điều kiện đó mô tả hyperscaler và nhà cung cấp inference lớn — không phải hầu hết đội ngũ đang phát hành tính năng LLM trong năm 2026.
| Tiêu chí | Chunked Prefill | Disaggregated |
|---|---|---|
| Tăng throughput | +50% (TNG, vLLM) | +7.4x ở quy mô lớn (DistServe) |
| Yêu cầu mạng | Không cần | InfiniBand hoặc NVLink |
| Chi phí vận hành | Một flag vLLM | Cụm riêng, tinh chỉnh P:D, KV router |
| Chế độ lỗi | Xung đột có giới hạn | KV sai âm thầm, sập ở mức đồng thời cao |
| Ngưỡng quy mô | Bất kỳ | ~1.000 GPU trở lên |
Sơ đồ quyết định chọn giữa chunked prefill và disaggregation
Đọc thêm
- DistServe: Disaggregated Prefill and Decoding for Goodput-optimized LLM Serving (OSDI 2024) — bài nền tảng về lợi ích disaggregation
- When to Disaggregate — phân tích Doubleword về điều kiện cần thiết
- Beyond the Buzz: A Pragmatic Take on Inference Disaggregation (6/2025) — đánh giá hệ thống hàng trăm nghìn điểm thiết kế
- Chunked Prefill on H100 — đo lường tăng 50% throughput của TNG
- Modular LLM Inference Handbook — cảnh báo giảm 20–30% và tiêu chí quyết định
Với độc giả Việt Nam đang triển khai LLM: nếu hạ tầng của bạn dưới 100 GPU H100/A100 (chi phí khoảng 40–50 tỷ đồng), chunked prefill gần như chắc chắn là lựa chọn tối ưu hơn. Đừng chạy theo xu hướng kiến trúc khi chưa đo đạc p95 TPOT của chính workload mình.


