HƯỚNG DẪN KỸ THUẬT

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.

Nghe hướng dẫn nàyAI thuật lại · ~2 min

Trên trang nàyĐọc trong 2 phút
  1. Tổng quan
  2. Lặn sâu
  3. Triển khai trong thế giới thực
  4. Tương lai của việc cung cấp giải mã và điền trước được phân tách
  5. Đưa nó vào thực tế
  6. Tiếp tục khám phá
  7. Câu hỏi thường gặp

Tổng quan

Đ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ặ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.

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.

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.

Đưa nó vào thực tế

Tại sao nó quan trọng

  • 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.

coi chừng

  • 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.

Các bước tiếp theo

  1. Xác định các mục tiêu về độ trễ, chất lượng và chi phí trước khi triển khai.
  2. Điểm chuẩn trong điều kiện tải và dữ liệu thực tế.
  3. Giám sát thiết bị về lỗi, độ lệch và tác động của người dùng.
  4. 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á

Bản tin miễn phí

Nhận bản tóm tắt AI hàng ngày

Ba câu chuyện AI đã được xác minh vào mỗi buổi sáng các ngày trong tuần, được viết bằng tiếng Anh đơn giản. Miễn phí mãi mãi, không có quảng cáo.

Một email mỗi ngày trong tuần. Hủy đăng ký trong một cú nhấp chuột. Chúng tôi không bao giờ bán hoặc chia sẻ địa chỉ của bạn.

Tự kiểm tra

Take the Disaggregated Prefill and Decode Serving quiz

Phản hồi tức thì về mọi câu trả lời và chứng chỉ có thể chia sẻ với ID có thể xác minh sau khi bạn vượt qua khóa học.

Bắt đầu bài kiểm tra

Hỗ trợ giáo dục AI miễn phí. AI Understanding là tổ chức phi lợi nhuận 501(c)(3) — không bao giờ có quảng cáo, không có tường phí. Hãy quyên góp

Câu hỏi thường gặp

Cung cấp giải mã và điền trước phân tách là gì?

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.