Tiếp theoHướng dẫn tiếp theo
KServe và Model Serve trên Kubernetes
kỹ thuật
HƯỚNG DẪN KỸ THUẬT
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
Đ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ễ.
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.
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.
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.
Bản tin miễn phí
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
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.
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
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ễ.
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.
Đ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ã.
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.
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.
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.
Tiếp tục học hỏi
Đã chọn thêm hướng dẫn cho chủ đề này
Tiếp theoHướng dẫn tiếp theo
KServe và Model Serve trên Kubernetes
kỹ thuật