Continuous Batching Là Gì? Giải Thích Dễ Hiểu Cho Người Mới

Câu trả lời nhanh
Continuous Batching là kỹ thuật server AI liên tục nạp yêu cầu mới và đẩy yêu cầu đã xong ra ở từng bước sinh token, thay vì chờ cả batch cùng kết thúc như static batching. Nhờ vậy GPU luôn đầy việc, throughput tăng mạnh và người dùng không phải chờ câu trả lời dài nhất trong nhóm. Kỹ thuật này là mặc định trong vLLM, TensorRT-LLM, SGLang, TGI.

Continuous Batching Là Gì?

Continuous Batching (xếp xử lý liên tục) là kỹ thuật mà server suy luận AI thay vì chờ cả nhóm yêu cầu cùng xong mới nhận nhóm mới, sẽ liên tục nạp yêu cầu mới vào và đẩy yêu cầu đã xong ra theo từng token được sinh ra. Nhờ vậy GPU gần như không bao giờ nghỉ, và người dùng không phải chờ đợi nhau.

Hãy hình dung như một xe buýt không đóng cửa: khách lên xuống bất kỳ lúc nào, xe chạy liên tục. Khác với kiểu buýt truyền thống (static batching): đóng cửa, chở trọn chuyến, về depot rồi mới đón chuyến mới. Nếu chuyến có một khách đi tận cuối đường, cả xe phải chờ khách đó.

Vì Sao Static Batching Làm Chậm Server AI?

Với static batching, GPU xử lý một nhóm request song song, nhưng mỗi câu trả lời dài ngắn khác nhau. Câu ngắn xong sớm vẫn phải “ngồi chờ” câu dài nhất trong nhóm, vì GPU phải chạy đủ số bước cho tất cả. Thời gian phản hồi trung bình của cả batch bị kéo dài bởi request chậm nhất.

Mình từng thấy demo server LLM tự dựng dùng cách gom batch cứng: benchmark đẹp khi mọi prompt cùng độ dài, nhưng thực tế người dùng gõ câu 10 từ lẫn câu 500 từ, latency tăng vọt. Đây chính là lý do các serving engine hiện đại bỏ hẳn cách này.

Continuous Batching Hoạt Động Như Thế Nào?

Ở mỗi bước sinh token, scheduler kiểm tra: yêu cầu nào đã sinh xong (gặp token kết thúc hoặc chạm giới hạn độ dài) thì lập tức loại khỏi batch và trả kết quả về, đồng thời nạp yêu cầu đang xếp hàng vào chỗ trống đó. Việc hoán đổi diễn ra liên tục, không có “khoảng nghỉ” giữa các batch.

Điểm kỹ thuật quan trọng: các yêu cầu trong cùng batch vẫn chia sẻ chung một vòng đời tính toán của attention, nên cần cơ chế như KV Cache riêng cho từng request để ngữ cảnh không lẫn vào nhau. Nếu bạn chưa đọc, xem thêm bài KV Cache là gìThroughput là gì để hiểu bức tranh đầy đủ.

Continuous Batching Khác Gì So Với Static Batching?

Static batching đơn giản, dễ cài đặt, chấp nhận được khi các request tương đồng nhau về độ dài. Continuous batching phức tạp hơn ở khâu scheduler nhưng cho throughput cao hơn nhiều lần và latency ổn định, đặc biệt khi traffic thực tế có độ dài đầu ra thất thường.

Cách nhớ nhanh: static batching tối ưu cho “cả đoàn cùng về đích”, continuous batching tối ưu cho “mỗi người về đích sớm nhất có thể”. Với dịch vụ AI trực tuyến, mục tiêu thứ hai đúng hơn.

Ai Đang Dùng Continuous Batching?

Kỹ thuật này được phổ biến bởi dự án Orca (Microsoft Research, 2022) và nay là mặc định trong hầu hết serving engine: vLLM, TensorRT-LLM, SGLang, TGI của Hugging Face. Nếu bạn self-host model và thấy throughput thấp, chuyển sang một engine có continuous batching thường là bước cải thiện lớn nhất, rẻ hơn nhiều so với nâng GPU.

Kết Luận

Continuous Batching là nền tảng khiến server AI hiện đại nhanh và rẻ: không ai chờ ai, GPU luôn đầy việc. Khi đọc tài liệu vLLM hay TensorRT-LLM và gặp cụm từ này, bạn đã biết nó đang nói về chiếc “buýt không đóng cửa” ấy.

ThienLv

Mình là Thien, người tạo ra blog này. Ban ngày làm marketing, ban đêm cày tiền online và chơi với AI. Blog này là nơi mình ghi lại những gì mình thử qua — tool nào xịn, chiến thuật nào chạy được, cái gì thất bại. Mình không giỏi nhất, nhưng mình thích chia sẻ thật. Chill với một ly cafe đá là lý tưởng nhất.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *