Phân phối trước và giải mã được phân tách
Một kiến trúc phục vụ chia suy luận mô hình ngôn ngữ lớn thành hai giai đoạn riêng biệt—điền trước và giải mã—và chạy chúng trên các nhóm GPU khác nhau.
Tổng quan
It matters because these two phases have opposite hardware appetites, and forcing them onto the same machines wastes capacity and hurts latency.
Lặn sâu
Khi LLM trả lời, nó hoạt động theo hai giai đoạn. Điền trước sẽ đọc toàn bộ lời nhắc cùng một lúc và xây dựng bộ nhớ đệm khóa-giá trị (KV); đây là một đợt bùng nổ lớn, song song, có tính toán làm bão hòa các đơn vị toán học của GPU. Sau đó, giải mã sẽ tạo ra từng mã thông báo, mỗi bước sẽ đọc toàn bộ bộ nhớ đệm KV—một quy trình nhỏ giọt có giới hạn băng thông bộ nhớ, tính toán nhẹ. Chạy cùng nhau, một khoảng thời gian điền trước dài sẽ ngăn chặn quá trình giải mã của mọi người (chặn đầu dòng) và việc gộp cả hai sẽ tạo ra nhiễu. Việc phân chia sẽ điền trước vào một nhóm GPU và giải mã trên một nhóm GPU khác, chuyển bộ đệm KV giữa chúng qua các kết nối nhanh như NVLink hoặc InfiniBand. Mỗi nhóm được điều chỉnh và mở rộng quy mô độc lập, cải thiện hiệu suất, làm mượt độ trễ đuôi và cho phép người vận hành đạt được các mục tiêu chặt chẽ về thời gian cho mã thông báo đầu tiên và thời gian cho mỗi đầu ra cùng một lúc.
Hiểu biết kỹ thuật
Hai giai đoạn khác nhau ở nút cổ chai của chúng. Tính năng điền trước xử lý song song tất cả các mã thông báo lời nhắc, do đó FLOP của nó sẽ mở rộng quy mô theo độ dài lời nhắc và tối đa hóa các lõi tensor. Giải mã có tính tự hồi quy: mỗi mã thông báo mới cần một lượt chuyển tiếp để đọc lại toàn bộ bộ đệm KV từ HBM, do đó thông lượng được kiểm soát bởi băng thông bộ nhớ chứ không phải tính toán. Tính năng phân chia khai thác điều này bằng cách định cỡ, phân nhóm và thậm chí chọn tính song song khác nhau cho mỗi nhóm, sau đó chuyển bộ nhớ đệm KV từ các trình xử lý điền trước đến các trình xử lý giải mã.
Tác động chiến lược
Chi phí và ngân sách
Các quyết định về kiến trúc sẽ thúc đẩy hiệu suất và chi phí vận hành trong nhiều năm.
Quyết định rõ ràng hơn
Giáo dục kỹ thuật giúp các nhóm chọn nhóm phù hợp chứ không chỉ nhóm mới nhất.
Kiểm soát chất lượng
Lựa chọn kỹ thuật tốt hơn làm giảm sự cố về độ tin cậy trong sản xuất.
Tương lai của việc cung cấp giải mã và điền trước được phân tách
Dự kiến việc phân chia sẽ trở thành mặc định trong ngăn xếp sản xuất. Các hệ thống như DistServe, Splitwise và Mooncake đã phổ biến nó, đồng thời vLLM và NVIDIA Dynamo hiện cung cấp các chế độ phân tách. Nghiên cứu đang thúc đẩy tối ưu hóa truyền bộ nhớ đệm KV, gộp bộ nhớ đệm và tái sử dụng cho các yêu cầu, cân bằng lại động tỷ lệ điền trước/giải mã trong điều kiện lưu lượng thay đổi và tích hợp chặt chẽ hơn với bộ nhớ đệm tiền tố và điền trước theo khối. Khi các cửa sổ ngữ cảnh phát triển thành hàng triệu mã thông báo, việc tách các giai đoạn này ngày càng trở nên cần thiết để phục vụ hiệu quả về chi phí, độ trễ thấp.
Triển khai trong thế giới thực
Trợ lý trò chuyện sẽ định tuyến các lời nhắc tài liệu dài đến cụm điền trước nặng về tính toán, sau đó truyền các câu trả lời từ cụm giải mã được tối ưu hóa bộ nhớ để đảm bảo độ trễ nhập được mượt mà.
NVIDIA Dynamo và vLLM cho phép người vận hành triển khai các nhóm công nhân giải mã và điền trước riêng biệt để một loạt lời nhắc dài không làm ảnh hưởng đến các thế hệ đang diễn ra.
Mooncake (được sử dụng bởi Kimi của Moonshot AI) phân tách việc điền trước và giải mã, đồng thời thêm nhóm bộ nhớ đệm KV được phân phối để cắt giảm việc tính toán lại kịp thời dư thừa trên quy mô lớn.
Dịch vụ hoàn thiện mã dành riêng một nhóm điền trước nhỏ cho các lời nhắc ngắn và một nhóm giải mã lớn vì hầu hết chi phí đều đến từ việc phát trực tuyến nhiều mã thông báo đầu ra.
Rủi ro & lan can
Tối ưu hóa một điểm chuẩn có thể che giấu những điểm yếu của hệ thống rộng hơn.
Chi phí cơ sở hạ tầng và bảo trì thường được đánh giá thấp.
Khoảng cách về bảo mật và khả năng quan sát có thể tăng lên khi hệ thống trở nên phức tạp hơn.
Lộ trình thực hiện
Xác định các mục tiêu về độ trễ, chất lượng và chi phí trước khi triển khai.
Điểm chuẩn trong điều kiện tải và dữ liệu thực tế.
Giám sát thiết bị về lỗi, độ lệch và tác động của người dùng.
Chuẩn bị đường dẫn khôi phục và ứng phó sự cố trước khi mở rộng quy mô.
Tiếp tục khám phá
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Disaggregated Prefill and Decode Serving quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Hướng dẫn tiếp theo
KServe và Model Serve trên Kubernetes
Câu hỏi thường gặp
What is Disaggregated Prefill and Decode Serving?
Một kiến trúc phục vụ chia suy luận mô hình ngôn ngữ lớn thành hai giai đoạn riêng biệt—điền trước và giải mã—và chạy chúng trên các nhóm GPU khác nhau. Điều này quan trọng vì hai giai đoạn này có nhu cầu phần cứng trái ngược nhau và việc buộc chúng vào cùng một máy sẽ gây lãng phí dung lượng và ảnh hưởng đến độ trễ.
Lý do phần cứng cốt lõi để tách phần điền trước và giải mã vào các nhóm GPU khác nhau là gì?
Tính năng điền trước xử lý song song toàn bộ lời nhắc và bão hòa tính toán, trong khi bộ giải mã đọc bộ nhớ đệm KV theo từng bước và bị giới hạn bởi băng thông bộ nhớ—các nhu cầu trái ngược nhau nhằm biện minh cho các nhóm được điều chỉnh độc lập, riêng biệt.
Cấu trúc dữ liệu nào phải được chuyển từ trình xử lý điền trước sang trình xử lý giải mã?
Điền trước sẽ xây dựng bộ nhớ đệm KV cho lời nhắc; giải mã cần bộ đệm đó để tiếp tục tạo, do đó bộ đệm được chuyển qua kết nối nhanh đến nhóm giải mã.
Việc phân chia cụ thể sẽ giảm thiểu vấn đề nào trong thiết lập GPU dùng chung?
Trên các GPU dùng chung, đợt điền trước dài có thể chặn các bước giải mã đang diễn ra; việc tách chúng ra sẽ ngăn chặn sự can thiệp đó và ổn định độ trễ của đuôi.
Tại sao việc điền trước có thể được sắp xếp theo nhóm một cách linh hoạt nhưng lại giải mã được lợi ích từ việc điều chỉnh khác nhau?
Việc điền trước xử lý tất cả các mã thông báo nhắc nhở cùng nhau, do đó, các lô lớn hơn sẽ cung cấp tốt cho các lõi tensor; giải mã tạo ra một mã thông báo tại một thời điểm và được kiểm soát bởi bộ nhớ, do đó nó có tỷ lệ khác nhau.
Những kết nối nào thường được sử dụng để di chuyển bộ đệm KV giữa các nhóm phân tách?
Cần có các liên kết băng thông cao, độ trễ thấp như NVLink (nội bộ nút) và InfiniBand (liên nút) để việc truyền bộ đệm KV không trở thành nút cổ chai mới.