vLLM đã trở thành cách mặc định để nhiều đội chạy model ngôn ngữ mã nguồn mở: gom batch yêu cầu hiệu quả, quản lý bộ nhớ KV cache tốt và cung cấp API tương thích OpenAI, nên code client cũ chỉ cần đổi base URL là chạy. Bài này hướng dẫn dựng vLLM inference server trên GPU thuê của Cloudj để phục vụ người dùng ở Mỹ, ví dụ cho một startup Việt bán SaaS sang thị trường Mỹ: từ chọn card, tìm máy ở Mỹ tới bảo vệ API phía sau một VPS. Bài giả định bạn đã quen với SSH và Python.
Bước 1: chọn GPU theo model
vLLM cần chỗ cho trọng số model cộng với KV cache. Gợi ý chung:
| Model | Độ chính xác | Điểm khởi đầu |
|---|---|---|
| 7B đến 8B | 16-bit | RTX 4090, 24 GB |
| 14B | Lượng tử hóa 4 hoặc 8 bit | RTX 4090, 24 GB |
| Lớp 30B | Lượng tử hóa | A100 PCIe, bản 40 GB, hoặc 2× card 24 GB |
| Lớp 70B | 8-bit hoặc 4-bit | H100 SXM, 80 GB, hoặc nhiều GPU trong một máy |
RTX 4090 thuê được ngay ở cấp tài khoản khởi đầu. A100 và H100 là GPU datacenter, cần cấp tài khoản cao hơn; console sẽ báo nếu lựa chọn chưa mở cho bạn. Giá "từ" theo thời gian thực có trên GPU cloud.
Bước 2: tìm máy ở Mỹ
Nếu người dùng ở Mỹ, họ chờ từng token, nên đặt máy ở Mỹ là hợp lý. Đội dev ngồi ở Việt Nam không ảnh hưởng gì, vì bạn chỉ SSH vào để cài đặt.
- Mở trang triển khai đã chọn sẵn RTX 4090, hoặc chọn mẫu khác.
- Chọn số GPU. Muốn dùng tensor parallel thì chọn 2× hoặc 4×; tất cả GPU nằm trong cùng một máy.
- Nhập
USvào ô Country. Console chỉ hiển thị quốc gia, không có bang hay thành phố. - Xem reliability, max duration, tốc độ tải (trọng số rất nặng) và giá băng thông.
- Chọn dung lượng ổ đĩa đủ cho trọng số và cache; không tăng được sau này.
Nếu chưa có máy phù hợp, thử lại sau, chọn mẫu khác đủ VRAM, hoặc thêm CA. Bài thuê GPU tại Mỹ nói kỹ hơn về cách tìm ở Mỹ.
Bước 3: cài vLLM
Cloudj không cung cấp sẵn vLLM dưới dạng template. Bạn có hai cách.
Cách A: pip trên template cơ bản
Triển khai với template Ubuntu 22.04 + CUDA và cài qua SSH. Dùng host và port trong tab Connection:
ssh -p PORT root@HOST
nvidia-smi
python3 -m venv /opt/vllm && . /opt/vllm/bin/activate
pip install vllm
Đây là cách đơn giản nhất và dùng được ở mọi cấp tài khoản.
Cách B: Docker image vLLM công khai
vLLM phát hành image chính thức trên Docker Hub. Với template Custom image, bạn tham chiếu một image công khai và cố định phiên bản, đỡ phải cài lại mỗi lần triển khai. Custom image cần cấp tài khoản cao hơn, và registry riêng tư không được hỗ trợ. Bài dùng Docker image riêng trên GPU cloud giải thích custom image hoạt động thế nào trên Cloudj, gồm cả phiên bản CUDA và driver của host.
Bước 4: chạy server tương thích OpenAI
tmux new -s vllm
export VLLM_API_KEY=change-me
vllm serve MODEL_ID --host 127.0.0.1 --port 8000 --api-key "$VLLM_API_KEY" --max-model-len 8192
Thay MODEL_ID bằng model trên Hugging Face bạn muốn dùng, và kiểm tra giấy phép của nó. Lắng nghe trên 127.0.0.1 giúp API không lộ ra internet. Kiểm tra ngay trên máy GPU:
curl http://127.0.0.1:8000/v1/models -H "Authorization: Bearer $VLLM_API_KEY"
Tài liệu vLLM liệt kê mọi tùy chọn của server.
Bước 5: tensor parallel trên máy 2× hoặc 4×
Nếu model không vừa một card, hoặc bạn muốn phục vụ nhiều hơn, hãy triển khai máy 2× hoặc 4× và chia model:
vllm serve MODEL_ID --tensor-parallel-size 2 --host 127.0.0.1 --port 8000 --api-key "$VLLM_API_KEY"
Giá trị tensor parallel nên bằng số GPU bạn muốn dùng. Card consumer giao tiếp qua PCIe, chậm hơn kết nối trên bo mạch datacenter, nên hãy đo throughput với lưu lượng thật của bạn. Có khi chạy mỗi GPU một bản model sau một bộ cân bằng tải lại phục vụ được nhiều người hơn là chia một bản. Bài một GPU hay nhiều GPU trên cloud phân tích lựa chọn này.
Bước 6: đặt VPS Mỹ phía trước
Máy GPU là host độc lập, không có SLA phần cứng và có ngày "available until". Nếu host mất kết nối, việc tính tiền tạm dừng nhưng instance không tự chuyển đi. Đừng cho người dùng trỏ thẳng vào máy GPU. Thay vào đó:
- Chạy một VPS Cloudj tại Mỹ giữ tên miền, TLS, xác thực, giới hạn tần suất và ghi log.
- Trên VPS, mở một SSH tunnel thường trực tới máy GPU:
ssh -N -L 8000:127.0.0.1:8000 -p PORT root@HOST, quản lý bằng systemd hoặc autossh. - Dùng nginx trên VPS reverse proxy
https://api.example.comvề127.0.0.1:8000.
Khi cần thay GPU, bạn triển khai máy mới, chạy vLLM, cập nhật tunnel. Client vẫn dùng URL cũ. Bài chạy AI agent trên VPS Mỹ trình bày một cấu hình VPS liên quan.
Ghi chú vận hành
- Theo dõi
nvidia-smivà log của vLLM để thấy áp lực bộ nhớ; giảm--max-model-lenhoặc--gpu-memory-utilizationnếu gặp lỗi hết bộ nhớ. - Giữ một script cài vLLM và khởi chạy server với đúng tham số, để triển khai lại chỉ mất vài phút.
- Stop sẽ nhả GPU; với API đang phục vụ, nên để máy chạy hoặc chuyển sang một lần triển khai mới.
- Tiền thuê trừ theo phút từ số dư tài khoản; đội ở Việt Nam nạp bằng chuyển khoản VND, nên nạp dư để API không bị gián đoạn giữa chừng.
Câu hỏi thường gặp
Cloudj có cài sẵn vLLM một chạm không?
Không. Hãy cài vLLM bằng pip trên template cơ bản, hoặc dùng image vLLM công khai với template Custom image.
Có mở thẳng cổng vLLM ra internet được không?
Nên giữ trên localhost và truy cập qua SSH tunnel từ một VPS lo phần TLS và xác thực.
Có cần A100 hay H100 không?
Chỉ khi chạy model lớn hơn hoặc lưu lượng nặng. Nhiều triển khai 7B đến 14B chạy tốt trên RTX 4090.
Không có máy ở Mỹ cho mẫu tôi cần thì sao?
Thử lại sau, chọn mẫu khác đủ VRAM, hoặc thêm CA và đo thử.
Bước tiếp theo
Mở trang triển khai RTX 4090, nhập US vào ô Country, và bạn có thể có một endpoint tương thích OpenAI chạy phía sau VPS ngay trong hôm nay.