Chuyển đến nội dung chính

vLLM: Thiết lập vLLM cục bộ và trên Google Cloud cho CPU

Tìm hiểu cách thiết lập và chạy vLLM (Virtual Large Language Model) cục bộ bằng Docker và trên đám mây với Google Cloud.
Đã cập nhật 5 thg 10, 2026  · 12 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

vLLM (Virtual Large Language Model) là một thư viện được thiết kế để lưu trữ các mô hình ngôn ngữ lớn (LLM). Thư viện này cung cấp môi trường tối ưu để xử lý các tác vụ ngôn ngữ ở quy mô lớn.

Có nhiều lý do để chúng ta tự lưu trữ LLM. Lưu trữ mô hình cục bộ hoặc trên nền tảng đám mây cho phép kiểm soát quyền riêng tư dữ liệu, khả năng tùy chỉnh mô hình phù hợp hơn với nhu cầu cụ thể, và tùy ứng dụng mà còn có thể tiết kiệm chi phí.

Ngoài ra, vLLM tương thích với OpenAI API. Nhờ vậy, nếu bạn có sẵn mã nguồn tích hợp với hạ tầng của OpenAI, bạn có thể thay thế bằng LLM tự lưu trữ qua vLLM mà không cần chỉnh sửa codebase hiện có.

Trong bài viết này, tôi sẽ hướng dẫn bạn các bước thiết lập vLLM. Chúng ta sẽ bắt đầu bằng cách chạy trên máy tính cá nhân bằng Docker, công cụ đóng gói phổ biến giúp chạy ứng dụng nhất quán trên nhiều môi trường. Sau đó, chúng ta sẽ học cách triển khai vLLM trên Google Cloud để có một giải pháp linh hoạt, sẵn sàng xử lý tác vụ lớn hoặc lưu lượng truy cập cao.

Cách thiết lập vLLM chạy cục bộ trên CPU với Docker

vLLM đơn giản hóa việc chạy LLM với một thiết lập hiệu quả tối ưu cho nền tảng CUDA, thường sử dụng GPU NVIDIA để tăng tốc. Tuy nhiên, nếu bạn muốn chạy mô hình trên CPU, có thể dùng Docker image mà vLLM cung cấp riêng cho CPU. Tính linh hoạt này cho phép lưu trữ mô hình ngay cả khi bạn không có môi trường hỗ trợ CUDA. Để lưu trữ vLLM trên nền tảng CUDA, hãy tham khảo hướng dẫn nhanh của họ.

Vì đa số chúng ta không có GPU cao cấp, bài viết sẽ tập trung vào thiết lập vLLM chạy trên CPU. Như vậy, bạn vẫn có thể thử nghiệm với LLM bằng chính tài nguyên sẵn có.

Để đơn giản hóa quy trình, chúng ta sẽ dùng Docker, công cụ cho phép đóng gói ứng dụng và phụ thuộc vào các container. Hãy hình dung container như một đơn vị gọn nhẹ, di động, chứa mọi thứ cần thiết để chạy phần mềm. Nhờ Docker, bạn không cần tự tay cài vLLM hay xử lý các vấn đề tương thích trên hệ thống.

vLLM cung cấp sẵn Docker image dành cho CPU. Image này chứa mọi thành phần cần thiết để chạy vLLM, giúp bạn tập trung vào việc sử dụng mô hình thay vì loay hoay thiết lập. Nhờ đó, bạn có thể nhanh chóng và hiệu quả khởi chạy LLM trên CPU.

Bước 1: Build Docker image

Trước tiên, chúng ta cần build một Docker image để chạy vLLM trên máy. Kho vLLM cung cấp các Dockerfile với đầy đủ hướng dẫn để build image chạy vLLM trên CPU.

  • Dockerfile.cpu cho CPU thông thường.
  • Dockerfile.arm cho CPU ARM như trên các dòng Mac hiện đại.

Vì tôi dùng Mac với chip M2, tôi sẽ dùng file .arm. Để build image, trước hết hãy clone hoặc tải kho mã và chạy lệnh này trong thư mục của kho:

docker build -f Dockerfile.arm -t vllm-cpu --shm-size=4g .

Phân tích nhanh lệnh trên:

  • docker build: Tạo Docker image từ Dockerfile.
  • -f Dockerfile.arm: Chỉ định Dockerfile sử dụng.
  • -t vllm-cpu: Gắn thẻ image là vllm-cpu để tiện tham chiếu (có thể đặt tên khác).
  • --shm-size=4g: Cấp 4 GB bộ nhớ chia sẻ, giúp cải thiện hiệu năng.

Bước 2: Thiết lập Hugging Face

vLLM sử dụng Hugging Face, một nền tảng hỗ trợ quản lý mô hình, để đơn giản hóa việc lưu trữ mô hình. Cách bắt đầu như sau:

  1. Tạo tài khoản Hugging Face: Truy cập trang web Hugging Face và đăng ký nếu bạn chưa có tài khoản.
  2. Yêu cầu quyền truy cập mô hình: Sau khi đăng nhập, tìm mô hình bạn muốn dùng. Cho phần minh họa này, tôi gợi ý meta-llama/Llama-3.2-1B-Instruct vì đây là mô hình nhỏ, phù hợp cho thử nghiệm ban đầu. Trên trang mô hình có thể có tùy chọn yêu cầu quyền truy cập. Hãy làm theo hướng dẫn để được cấp quyền.
  3. Tạo token: Truy cập trang API token của Hugging Face. Nhấn "Create New Token" để tạo token. Token này sẽ cần thiết để truy cập và tải mô hình.

Bước 3: Chạy Docker container

Khi đã build xong Docker image và có token Hugging Face, bạn có thể chạy mô hình vLLM bằng lệnh sau:

docker run -it --rm -p 8000:8000 \
--env "HUGGING_FACE_HUB_TOKEN=<replace_with_hf_token>" \
vllm-cpu --model meta-llama/Llama-3.2-1B-Instruct \
--dtype float16

Giải thích lệnh:

  • docker run: Chạy một container từ image đã chỉ định.
  • -it: Chạy tương tác với quyền truy cập terminal.
  • --rm: Tự động xóa container khi dừng.
  • -p 8000:8000: Ánh xạ cổng 8000 của container ra cổng 8000 trên máy, giúp truy cập dịch vụ cục bộ.
  • --env "HUGGING_FACE_HUB_TOKEN=<replace_with_hf_token>": Thiết lập token Hugging Face như biến môi trường, cho phép vLLM kết nối API của Hugging Face. Thay <replace_with_hf_token> bằng token bạn đã tạo.
  • vllm-cpu: Tên Docker image đã build trước đó.
  • --model meta-llama/Llama-3.2-1B-Instruct: Chỉ định mô hình sẽ chạy.
  • --dtype float16: Dùng kiểu dữ liệu float16 vì mô hình yêu cầu khi chạy trên CPU.

Khi chạy lệnh này, máy chủ sẽ mất một lúc để sẵn sàng do cần tải LLM. Máy chủ sẵn sàng khi bạn thấy thông báo tương tự sau trong terminal:

INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Tương tác với LLM

Một điểm mạnh của vLLM là khả năng tương thích với OpenAI API. Nghĩa là nếu bạn có sẵn mã tương tác với hạ tầng của OpenAI, bạn có thể dùng nguyên mã đó để giao tiếp với mô hình lưu trữ qua vLLM.

Tính tương thích này giúp chuyển đổi mượt mà mà không cần chỉnh sửa codebase hiện có. Khi thiết lập vLLM, bạn có thể tiếp tục dùng các công cụ và lệnh quen thuộc để tương tác với LLM, giúp quá trình tích hợp hiệu quả và thân thiện.

Ví dụ cách gửi tin nhắn đến máy chủ cục bộ đang chạy trên Docker:

from openai import OpenAI
openai_api_key = "EMPTY"
openai_api_base = "http://localhost:8000/v1"
client = OpenAI(
    api_key=openai_api_key,
    base_url=openai_api_base,
)
models = client.models.list()
model = models.data[0].id
completion = client.chat.completions.create(
    model=model,
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello"},
    ]
)
print(completion.choices[0].message.content)

Lưu ý chúng ta dùng API key "EMPTY" ở trên. Đây là key mặc định. Bạn có thể yêu cầu cung cấp key để truy cập mô hình bằng tham số --api-key. Ví dụ:

docker run -it --rm -p 8000:8000 \
--env "HUGGING_FACE_HUB_TOKEN=<replace_with_hf_token>" \
vllm-cpu --model meta-llama/Llama-3.2-1B-Instruct \
--dtype float16 --api-key supersecretkey

Sau đó, trong trường hợp này, hãy thay key ở đầu đoạn mã:

openai_api_key = "supersecretkey"

Cách lưu trữ vLLM CPU trên Google Cloud

Lưu trữ LLM trên Google Cloud bằng vLLM mang lại một giải pháp triển khai hiệu quả. Hãy cùng phân tách các bước và làm rõ hơn.

Bước 1: Truy cập Google Cloud Console

Trước hết, truy cập Google Cloud Console bằng cách mở Google Cloud Console trên trình duyệt. Nếu chưa có tài khoản Google, bạn cần tạo tài khoản để dùng dịch vụ Google Cloud.

Bước 2: Tạo dự án

Trong Google Cloud Console, tìm menu xổ xuống dự án ở đầu màn hình và chọn "New Project." 

Tạo dự án mới trên Google Cloud

Nhập vllm-demo làm tên dự án để dễ nhận diện sau này.

Tùy chọn thiết lập dự án

Nếu bạn đã có tài khoản Google Cloud, tài khoản thanh toán dùng thử có thể không khả dụng. Khi đó, bạn cần tạo tài khoản thanh toán mới. Vào mục "Billing" và làm theo hướng dẫn để chọn tài khoản thanh toán hiện có hoặc tạo tài khoản mới.

Bước 3: Bật dịch vụ Artifact Registry

Artifact Registry là dịch vụ cho phép lưu trữ và quản lý container image. Chúng ta sẽ dùng nó để lưu Docker image chạy vLLM. 

Trong Cloud Console, tìm "artifact" để mở Artifact Registry.

Mở Artifact Registry

Sau đó bật dịch vụ cho dự án của bạn. Bước này cần thiết để lưu Docker image cho thiết lập vLLM.

Bật Artifact Registry.

Bước 4: Tạo kho artifact

Giờ hãy tạo một kho artifact để lưu container image. Điều hướng đến Artifact Registry và nhấp "Create Repository." 

Tạo kho lưu trữ mới.

Đặt tên kho là vllm-cpu và chọn định dạng "Docker". Chỉ định vị trí là us-central1 để tối ưu hiệu năng theo nhu cầu triển khai. Các cấu hình còn lại có thể để mặc định.

Cấu hình kho lưu trữ.

Bước 5: Build và đẩy Docker image

Cũng như trên máy cục bộ, chúng ta sẽ build Docker image rồi tải (push) lên kho vllm-cpu trên Google Cloud. Thực hiện qua cloud shell ở góc trên bên phải.

Mở Google Cloud Console..

Trong terminal đó, hãy clone kho GitHub của vLLM bằng lệnh sau để lấy các tệp cần thiết:

git clone https://github.com/vllm-project/vllm.git

Đi vào thư mục vLLM vừa clone bằng terminal.

cd vllm

Build Docker image bằng lệnh sau, sử dụng Dockerfile cấu hình cho CPU:

docker build \
-t us-central1-docker.pkg.dev/vllm-demo/vllm-cpu/vllm-openai:latest \
-f Dockerfile.cpu .

Sau khi build xong image, hãy push lên Artifact Repository để có thể dùng với các dịch vụ của Google Cloud sau này:

docker push us-central1-docker.pkg.dev/vllm-demo/vllm-cpu/vllm-openai:latest

Bước 6: Thiết lập dịch vụ trên Cloud Run

Google Cloud Run cho phép triển khai ứng dụng đóng gói trong container. Chúng ta sẽ dùng dịch vụ này để triển khai image vừa build. 

Gõ "cloud run" trong ô tìm kiếm và mở dịch vụ “Cloud Run”.

Mở Cloud Run

Tại đây, nhấp nút "Create Service":

Tạo dịch vụ mới trên Google Cloud

Sau đó thực hiện các bước sau:

  1. Chọn container image: Chọn image bạn đã push trước đó.
  2. Cấu hình cổng: Đổi cổng mặc định thành 8000, là cổng vLLM sử dụng.
  3. Thêm token Hugging Face: Trong mục "Variables & Secrets", thêm biến mới tên HUGGING_FACE_HUB_TOKEN và dán token của bạn. Token này cho phép vLLM truy cập mô hình từ Hugging Face.
  4. Tham số cho container: Trong phần lệnh, thêm đối số --model=meta-llama/Llama-3.2-1B để chỉ định mô hình mong muốn.
  5. Cấp phát tài nguyên: Đặt bộ nhớ 16 GiB và 4 CPU để container có đủ tài nguyên xử lý hiệu quả.
  6. Thiết lập instance: Để giảm thời gian khởi động lạnh, luôn giữ ít nhất một instance hoạt động. Điều này có thể tăng chi phí nhưng cải thiện hiệu năng bằng cách giảm thời gian tải mô hình và khởi động.

Khi cấu hình xong (các tùy chọn khác để mặc định), nhấp “Create” ở cuối trang. Chờ dịch vụ sẵn sàng rồi mở trang dịch vụ. Tại đây, bạn sẽ thấy URL dịch vụ để giao tiếp với LLM. 

URL sẽ có dạng như sau:

https://vllm-llama-577126904161.us-central1.run.app

Tương tác với LLM

Bạn có thể tương tác với LLM bằng Python giống như khi chạy cục bộ. Chỉ cần đổi URL trong script:

# Thay bằng URL dịch vụ của bạn
openai_api_base = "https://vllm-llama-577126904161.us-central1.run.app/v1"

Lưu ý quan trọng về chi phí

Cảnh báo: Nếu bạn làm theo các bước này, lưu ý rằng giữ Artifact Registry hoạt động sẽ tốn phí. Hãy nhớ hủy liên kết tài khoản thanh toán sau khi làm theo hướng dẫn này, nếu không bạn sẽ bị tính phí kể cả khi không ai sử dụng.

Thiết lập GPU trên Google Cloud

Tại thời điểm viết hướng dẫn này, hỗ trợ GPU cho Google Cloud Run được cung cấp theo yêu cầu. Nghĩa là bạn cần đề nghị để được cấp quyền. Khi có quyền, chạy vLLM bằng GPU sẽ tăng hiệu năng đáng kể so với CPU, đặc biệt hữu ích khi xử lý các mô hình ngôn ngữ lớn vì GPU tối ưu cho xử lý song song.

Nếu được cấp quyền GPU, bạn có thể đơn giản hóa quy trình. Khi đó, không cần tự build Docker image. Thay vào đó, có thể tạo dịch vụ trực tiếp với image sẵn có vllm/vllm-openai:latest. Image này được tối ưu cho GPU, giúp triển khai nhanh chóng và hiệu quả mà không cần các bước thiết lập thêm như trên CPU.

Khi đã được duyệt GPU và thiết lập dịch vụ bằng image cung cấp, triển khai vLLM của bạn có thể khai thác tối đa sức mạnh và tốc độ của GPU, phù hợp cho các ứng dụng thời gian thực và tác vụ xử lý ngôn ngữ cường độ cao.

RunPod: Giải pháp lưu trữ thay thế

Nếu cần phương án lưu trữ thay thế, các nền tảng như RunPod cung cấp dịch vụ tối giản để lưu trữ mô hình ngôn ngữ lớn. Chẳng hạn, RunPod có thiết lập serverless giúp đơn giản hóa quá trình triển khai.

Lưu trữ với RunPod.

Dù thân thiện và thiết lập nhanh, hãy lưu ý rằng sự tiện lợi thường đi kèm mức giá cao hơn. Nếu ngân sách hạn chế, bạn nên cân nhắc giữa sự dễ dùng và chi phí của các dịch vụ như vậy.

Kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu cách thiết lập và lưu trữ vLLM cả cục bộ và trên Google Cloud.

Chúng ta đã học cách build và chạy Docker image dành riêng cho CPU, đảm bảo khả năng tiếp cận ngay cả khi không có GPU cao cấp. Ngoài ra, chúng ta cũng xem xét việc triển khai vLLM trên Google Cloud để có giải pháp mở rộng, xử lý khối lượng công việc lớn.


François Aubry's photo
Author
François Aubry
LinkedIn
Kỹ sư full-stack & nhà sáng lập tại CheapGPT. Giảng dạy luôn là niềm đam mê của tôi. Từ những ngày còn là sinh viên, tôi đã háo hức tìm kiếm cơ hội kèm cặp và hỗ trợ các bạn học khác. Niềm đam mê đó đã thôi thúc tôi theo học tiến sĩ, nơi tôi cũng đảm nhiệm vai trò trợ giảng để hỗ trợ con đường học thuật của mình. Trong những năm ấy, tôi tìm thấy sự mãn nguyện lớn lao trong môi trường lớp học truyền thống, xây dựng kết nối và thúc đẩy việc học tập. Tuy nhiên, với sự ra đời của các nền tảng học trực tuyến, tôi nhận ra tiềm năng thay đổi của giáo dục số. Thực tế, tôi đã trực tiếp tham gia phát triển một nền tảng như vậy tại trường đại học của chúng tôi. Tôi tận tâm kết hợp các nguyên tắc giảng dạy truyền thống với những phương pháp số đổi mới. Đam mê của tôi là tạo ra các khóa học không chỉ hấp dẫn và giàu thông tin mà còn dễ tiếp cận với người học trong thời đại số này.
Chủ đề
Trí tuệ Nhân tạo
Mô hình Ngôn ngữ Lớn

Học AI với các khóa học này!

Khóa học

Phát triển ứng dụng LLM với LangChain

3 giờ
51.9K
Khám phá cách xây dựng các ứng dụng tích hợp AI bằng cách sử dụng LLM, prompt, chain và agent trong LangChain.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm