| Thiết lập vLLM để triển khai nhanh chóng
Nếu bạn đang tìm một cách đơn giản, nhanh chóng để triển khai và phục vụ mô hình ngôn ngữ lớn (LLM) thì vLLM là một lựa chọn rất đáng thử. Mình sẽ chia sẻ với bạn cách vLLM hoạt động, tại sao nó được ưa chuộng, và làm thế nào để bạn có thể dùng thử chỉ trong vài phút.
Tại sao nên dùng vLLM?
Mình biết rằng việc phục vụ LLM thường đi kèm với nhiều rắc rối – tốc độ chậm, tốn tài nguyên và khó mở rộng. vLLM ra đời để giải quyết những vấn đề đó, giúp bạn phục vụ mô hình nhanh hơn, tiết kiệm hơn mà vẫn giữ chất lượng đầu ra tốt.
Điểm mạnh lớn nhất của vLLM là hiệu năng cực cao. Nhờ vào kỹ thuật gọi là PagedAttention, vLLM có thể tăng tốc độ suy luận lên gấp nhiều lần so với thư viện phổ biến như HuggingFace Transformers, mà bạn không cần chỉnh sửa gì về kiến trúc mô hình.
PagedAttention là gì?
Trong quá trình sử dụng các mô hình ngôn ngữ lớn (LLM), một trong những vấn đề lớn nhất là tốn quá nhiều bộ nhớ, đặc biệt khi mô hình phải nhớ lại mọi từ đã được nhập vào trước đó để tạo ra câu trả lời tiếp theo. Lượng dữ liệu này – gọi là KV cache – rất lớn và thay đổi liên tục tuỳ theo độ dài văn bản. Nhiều hệ thống hiện tại sử dụng bộ nhớ rất lãng phí, có thể lên tới 60–80% vì cách quản lý chưa hiệu quả.
Để khắc phục, nhóm phát triển vLLM đã tạo ra một kỹ thuật mới có tên là PagedAttention. Theo mình, có thể hiểu nó giống như cách máy tính chia nhỏ dữ liệu thành từng phần để dễ quản lý hơn.
Thay vì phải lưu tất cả dữ liệu một cách liền mạch, kỹ thuật này cho phép chia nhỏ và sắp xếp linh hoạt hơn, giúp tiết kiệm bộ nhớ và phục vụ nhiều yêu cầu cùng lúc. Nhờ đó, hệ thống chạy nhanh hơn, hiệu quả hơn và tốn ít tài nguyên hơn.
Một điểm hay nữa của PagedAttention là khả năng chia sẻ dữ liệu giữa các yêu cầu giống nhau. Ví dụ, nếu mình muốn tạo nhiều phiên bản câu trả lời từ cùng một câu hỏi, hệ thống có thể dùng chung phần dữ liệu ban đầu thay vì tạo lại từ đầu. Điều này giúp tiết kiệm thêm rất nhiều bộ nhớ và tăng tốc độ xử lý, đặc biệt hữu ích khi chạy các mô hình lớn trong thực tế. Đây chính là công nghệ cốt lõi đứng sau vLLM – một công cụ mạnh mẽ, đơn giản và hiệu quả để triển khai các mô hình AI hiện đại.
Hỗ trợ đa dạng phần cứng
Một điểm cộng nữa là vLLM không kén thiết bị. Bạn có thể dùng nó với:
- GPU của NVIDIA, AMD
- CPU của Intel hoặc AMD
- Các bộ tăng tốc như AWS Inferentia, Trainium, và cả TPU
- Hỗ trợ API theo chuẩn OpenAI, dễ dàng tích hợp vào ứng dụng hiện tại
Điều này có nghĩa là bạn không cần phần cứng khủng mới chạy được — chỉ cần một thiết bị đủ cơ bản là bạn đã có thể thử nghiệm rồi.
Cách cài đặt vLLM
Bạn chỉ cần vài bước đơn giản để bắt đầu. Dưới đây là cách mình thường làm:
Tạo môi trường ảo với Python 3.12
python3.12 -m venv vllm-env
source vllm-env/bin/activate
Mình thường dùng uv, cài đặt môi trường thng qua:
uv venv --python=3.12
source .venv/bin/activate uv init # Tạo dự án
Cài đặt vLLM
pip install vllm # hoặc uv add vllm
Chạy suy luận thử với mô hình
Khi đã cài xong, bạn có thể viết đoạn mã Python đơn giản như sau để thử sinh văn bản:
from vllm import LLM, SamplingParams prompts = [ "Hello, my name is", "The capital of France is", "The future of AI is",
] sampling_params = SamplingParams(temperature=0.8, top_p=0.95)
llm = LLM(model="facebook/opt-125m") outputs = llm.generate(prompts, sampling_params) for output in outputs: print("Prompt:", output.prompt) print("Generated:", output.outputs[0].text) print()
Chỉ với vài dòng, bạn đã có thể thấy mô hình hoạt động như thế nào với từng câu gợi ý.
Phục vụ mô hình như một API
Nếu bạn muốn biến mô hình thành một dịch vụ chạy dưới dạng API, vLLM cũng hỗ trợ sẵn. Bây giờ, mình sẽ thử với mô hình có hỗ trợ tiếng Việt. Mình sử dụng mô hình của TheBloke: TheBloke/vietnamese-llama2-7B-40GB-GPTQ
:
vllm serve TheBloke/vietnamese-llama2-7B-40GB-GPTQ
Note: Nếu các bạn biết các hub trên huggingface có hỗ trợ các mô hình mới nhất với bộ ngữ liệu tiếng Việt, cho mình xin tên và địa chỉ. Mình mong có thể thử nghiệm và đánh giá nhiều các mô hình và chia sẻ góc nhìn đó với mọi người.
Sau đó, bạn chỉ cần truy cập trình duyệt vào http://<ip-address>:8000/docs
để thử nghiệm qua giao diện web trực quan.
Mình sẽ làm một thử nghiệm bằng cách dùng một câu khuyết và đợi vLLM phản hồi. Kết quả là:
Kết luận
vLLM là một công cụ tuyệt vời nếu bạn muốn triển khai mô hình ngôn ngữ lớn mà không cần tốn nhiều công sức hay chi phí. Dù bạn đang học, làm thử dự án cá nhân, hay chuẩn bị cho một hệ thống sản phẩm thực tế, thì vLLM đều hỗ trợ tốt.
Nếu bạn chưa thử, hãy cài vLLM và khám phá sức mạnh của nó. Mình tin rằng bạn sẽ thấy bất ngờ về hiệu suất và sự tiện lợi mà nó mang lại.