vLLM: công cụ suy luận và phục vụ LLM nhanh, tiết kiệm bộ nhớ
vLLM là thư viện mã nguồn mở giúp chạy và phục vụ mô hình ngôn ngữ lớn với thông lượng cao, tiết kiệm bộ nhớ, có API tương thích OpenAI và hỗ trợ hơn 200 kiến trúc mô hình.
Cập nhật lúc
vLLM là gì
Nếu bạn từng thử tự chạy một mô hình ngôn ngữ lớn (LLM) trên máy chủ riêng, chắc hẳn bạn biết bài toán khó nhất không chỉ là tải mô hình lên, mà là phục vụ nhiều yêu cầu cùng lúc một cách nhanh và tiết kiệm tài nguyên. vLLM (vllm-project/vllm) sinh ra để giải quyết đúng bài toán đó.
Theo mô tả của dự án, vLLM là một engine suy luận và phục vụ LLM có thông lượng cao và sử dụng bộ nhớ hiệu quả. Khẩu hiệu của nhóm phát triển là "Easy, fast, and cheap LLM serving for everyone", tức phục vụ LLM dễ dàng, nhanh và rẻ cho tất cả mọi người.
Dự án được viết bằng Python, ban đầu phát triển tại Sky Computing Lab thuộc UC Berkeley. Hiện nay vLLM đã trở thành một trong những dự án AI mã nguồn mở sôi động nhất, được duy trì bởi cộng đồng gồm hàng chục tổ chức học thuật, doanh nghiệp và hơn 2000 người đóng góp. Kho mã đang có gần 95.000 sao trên GitHub.
vLLM phù hợp với lập trình viên, kỹ sư hạ tầng AI, nhà nghiên cứu, hoặc bất kỳ ai muốn tự triển khai LLM thay vì phụ thuộc hoàn toàn vào dịch vụ đám mây.
Điểm mạnh về tốc độ
vLLM tập trung rất nhiều vào hiệu năng. Một số kỹ thuật nổi bật được liệt kê trong README:
- PagedAttention: cách quản lý bộ nhớ key và value của attention hiệu quả, cũng là chủ đề của bài báo khoa học gốc về vLLM.
- Continuous batching: gom các yêu cầu đến liên tục thành lô, kết hợp chunked prefill và prefix caching.
- Thực thi mô hình nhanh và linh hoạt với CUDA/HIP graph dạng từng phần hoặc toàn phần.
- Lượng tử hóa đa dạng: FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ/AWQ, GGUF, compressed-tensors, ModelOpt, TorchAO và nhiều định dạng khác.
- Các kernel attention tối ưu như FlashAttention, FlashInfer, TRTLLM-GEN, FlashMLA và Triton.
- Kernel GEMM/MoE tối ưu cho nhiều mức độ chính xác, dùng CUTLASS, TRTLLM-GEN, CuTeDSL.
- Speculative decoding với các phương pháp n-gram, suffix, EAGLE, DFlash.
- Tự động sinh kernel và biến đổi ở mức đồ thị nhờ torch.compile.
- Tách riêng các giai đoạn prefill, decode và encode (disaggregated).
Linh hoạt và dễ dùng
Bên cạnh tốc độ, vLLM cũng chú trọng trải nghiệm sử dụng:
- Tích hợp liền mạch với các mô hình phổ biến trên Hugging Face.
- Nhiều thuật toán giải mã như parallel sampling, beam search và các phương pháp khác.
- Hỗ trợ song song hóa theo tensor, pipeline, dữ liệu, expert và ngữ cảnh để suy luận phân tán.
- Trả kết quả dạng streaming.
- Sinh đầu ra có cấu trúc bằng xgrammar hoặc guidance.
- Bộ phân tích tool calling và reasoning.
- Máy chủ API tương thích OpenAI, kèm hỗ trợ Anthropic Messages API và gRPC.
- Hỗ trợ multi-LoRA hiệu quả cho cả lớp dense và MoE.
Phần cứng được hỗ trợ
vLLM chạy được trên GPU NVIDIA, GPU AMD, GPU Intel và CPU x86, ARM, PowerPC. Ngoài ra, dự án còn có các plugin phần cứng cho Google TPU, Intel Gaudi, IBM Spyre, Huawei Ascend, Rebellions NPU, Apple Silicon, MetaX GPU và nhiều loại khác.
Mô hình được hỗ trợ
README cho biết vLLM hỗ trợ hơn 200 kiến trúc mô hình trên Hugging Face, bao gồm:
- LLM chỉ có decoder như Llama, Qwen, Gemma.
- LLM dạng Mixture-of-Experts như Mixtral, DeepSeek-V3, Qwen-MoE, GPT-OSS.
- Mô hình attention lai và state-space như Mamba, Qwen3.5.
- Mô hình đa phương thức như LLaVA, Qwen-VL, Pixtral.
- Mô hình embedding và truy xuất như E5-Mistral, GTE, ColBERT.
- Mô hình reward và phân loại như Qwen-Math.
Bạn có thể dùng vLLM vào việc gì
Dựa trên các tính năng kể trên, một vài tình huống thực tế mà vLLM rất hợp:
- Tự dựng API LLM nội bộ: nhờ máy chủ tương thích OpenAI, ứng dụng đang gọi API OpenAI có thể chuyển sang mô hình tự host với ít thay đổi.
- Phục vụ nhiều người dùng cùng lúc: continuous batching và PagedAttention giúp tận dụng GPU tốt hơn khi lưu lượng lớn.
- Chạy mô hình lớn trên nhiều GPU: các chế độ song song hóa cho phép phân tán mô hình MoE hay mô hình kích thước lớn.
- Xây dựng hệ thống RAG: vLLM hỗ trợ cả mô hình embedding và truy xuất, không chỉ mô hình sinh văn bản.
- Nghiên cứu: thử nghiệm lượng tử hóa, speculative decoding hay các kernel attention khác nhau trên cùng một nền tảng.
Bắt đầu với vLLM
README khuyến nghị cài đặt bằng uv, hoặc bạn cũng có thể dùng pip. Các bước cơ bản như sau:
- Cài đặt uv (khuyến nghị) hoặc chuẩn bị sẵn
piptrong môi trường Python của bạn. - Cài vLLM và tải các kernel đã biên dịch sẵn để khởi động nhanh hơn:
uv pip install vllm vllm download-kernels - Nếu muốn tham gia phát triển, bạn có thể build từ mã nguồn.
- Đọc hướng dẫn Installation và Quickstart trong tài liệu chính thức để chạy mô hình đầu tiên.
- Tra cứu danh sách mô hình được hỗ trợ trước khi chọn mô hình.
Một vài lưu ý
- Giấy phép: Apache License 2.0, khá thoải mái cho cả mục đích cá nhân lẫn thương mại.
- Độ trưởng thành: phiên bản mới nhất là v0.32.0, kho mã vẫn được cập nhật thường xuyên.
- Phần cứng: vLLM hướng tới môi trường máy chủ với GPU hoặc bộ tăng tốc chuyên dụng. Bạn nên kiểm tra tài liệu cài đặt để biết cấu hình phù hợp với thiết bị của mình.
- Cộng đồng: câu hỏi kỹ thuật gửi qua GitHub Issues, thảo luận trên vLLM Forum, còn việc phối hợp đóng góp diễn ra trên Slack.
- Trích dẫn: nếu dùng vLLM cho nghiên cứu, nhóm tác giả đề nghị trích dẫn bài báo "Efficient Memory Management for Large Language Model Serving with PagedAttention" (SOSP 2023).
Kết luận
vLLM là lựa chọn đáng cân nhắc khi bạn cần phục vụ LLM nhanh, tiết kiệm bộ nhớ và linh hoạt về phần cứng lẫn mô hình. Với API tương thích OpenAI, hơn 200 kiến trúc được hỗ trợ và cộng đồng đóng góp đông đảo, dự án đang là một trong những nền tảng tự host LLM phổ biến nhất hiện nay.
Bạn có thể tìm hiểu thêm tại kho mã vllm-project/vllm trên GitHub hoặc trang chủ vllm.ai.