Đây là hướng dẫn thực hành cho các team cần một GPU Singapore chạy AI inference: một API LLM phản hồi nhanh cho người dùng Việt Nam và Đông Nam Á mà không phải đi vòng sang châu lục khác. Chúng ta sẽ tìm GPU ở Singapore trên Cloudj, chọn dung lượng VRAM, tự cài server inference, rồi đặt một VPS Singapore chạy Nginx và TLS phía trước để endpoint công khai luôn ổn định kể cả khi máy GPU thay đổi.
Bức tranh chung về GPU ở Singapore có trong bài máy chủ GPU Singapore.
Kiến trúc tóm gọn
Người dùng (hoặc chatbot Zalo, fanpage của bạn) gọi https://api.example.com. Tên miền này trỏ về một VPS nhỏ của Cloudj ở Singapore chạy Nginx với chứng chỉ TLS. Nginx chuyển yêu cầu qua một đường hầm SSH tới instance GPU, nơi vLLM phục vụ model trên một port nội bộ. GPU không bao giờ mở port model ra Internet. Nếu máy GPU không còn, bạn triển khai máy mới, khởi động lại đường hầm, và người dùng không nhận ra gì. Bài VPS làm front end, GPU làm backend giải thích vì sao nên tách như vậy.
Bước 1: chọn dung lượng VRAM
Chọn GPU theo model bạn định phục vụ. Hướng dẫn chung cho một card:
| Cỡ model và độ chính xác | VRAM cần, ước lượng | Card nên tìm |
|---|---|---|
| 7B đến 8B, 8-bit hoặc 4-bit | Khoảng 8 đến 12 GB cộng KV cache | RTX 4090 (24 GB) |
| 13B đến 14B, 4-bit hoặc 8-bit | Khoảng 10 đến 18 GB cộng cache | RTX 4090 (24 GB) |
| 30B đến 34B, 4-bit | Khoảng 20 GB cộng cache | L40S hoặc RTX A6000 (lớp 48 GB) |
| 70B, 4-bit | Khoảng 40 GB cộng cache | Lớp 48 GB, khá sát; nên cân nhắc card nhiều VRAM hơn |
Hãy chừa khoảng trống. Số người dùng đồng thời và độ dài context làm KV cache phình ra, và hết bộ nhớ lúc đông khách còn tệ hơn thuê card lớn hơn một chút. L40S và RTX A6000 là card datacenter và workstation, cần cấp tài khoản cao hơn; console sẽ báo nếu bạn chưa thuê được.
Với chatbot tiếng Việt, nhiều team bắt đầu từ một model 7B đến 14B đã được tinh chỉnh cho tiếng Việt, và RTX 4090 thường là đủ.
Bước 2: tìm máy ở Singapore và các nước lân cận
Vị trí GPU là bộ lọc quốc gia áp lên danh sách máy chủ đang có. Mở trang triển khai RTX 4090 và nhập SG vào ô Country. Mỗi kết quả hiển thị quốc gia (không có thành phố), độ tin cậy, thời hạn tối đa, tốc độ tải xuống, giá băng thông và nhãn Datacenter nếu có.
Nếu có máy, kiểm tra hai điều trước khi triển khai: ngày "available until" phải muộn hơn nhiều so với thời gian bạn định chạy dịch vụ, và độ tin cậy phải cao, vì đây là dịch vụ phục vụ người dùng. Nếu chưa có máy phù hợp, hàng thay đổi trong ngày; hãy mở rộng sang các nước gần:
SG, MY, TH
Sau đó đo độ trễ từ mạng của người dùng (Viettel, VNPT, FPT) trước khi chạy thật, và đặt độ tin cậy tối thiểu. Giá "từ" theo từng mẫu card có trên GPU cloud.
Bước 3: cài server inference
Triển khai bằng template Ubuntu + CUDA và một SSH key. Không template nào trên console cài sẵn vLLM; bạn tự cài. Kết nối bằ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
Khởi động server tương thích OpenAI, chỉ lắng nghe trên localhost và có API key:
vllm serve Qwen/Qwen2.5-7B-Instruct \
--host 127.0.0.1 --port 8000 \
--api-key "$VLLM_API_KEY" \
--max-model-len 8192
Chạy trong tmux hoặc trình quản lý tiến trình để không tắt theo phiên SSH. Tài liệu vLLM hướng dẫn chạy model lượng tử hóa, tinh chỉnh hiệu năng và các kiến trúc được hỗ trợ. Ollama là lựa chọn đơn giản hơn cho team nhỏ, và cách đặt front end bên dưới vẫn áp dụng y nguyên. Hướng dẫn kỹ hơn về vLLM có trong bài dựng server inference vLLM.
Bước 4: mở đường hầm từ VPS tới GPU
Trên VPS Singapore, tạo một SSH key, thêm public key đó vào ~/.ssh/authorized_keys trên instance GPU, rồi mở một đường hầm chạy liên tục:
ssh -N -o ServerAliveInterval=30 -o ExitOnForwardFailure=yes \
-L 127.0.0.1:8000:127.0.0.1:8000 -p <port> root@<host>
Bọc lệnh này trong một service systemd (hoặc dùng autossh) để tự khởi động lại khi lỗi. Lúc này http://127.0.0.1:8000 trên VPS đi thẳng tới vLLM trên GPU, và GPU không mở gì ra ngoài ngoài SSH.
Bước 5: Nginx và TLS trên VPS
Một khối cấu hình tối giản:
server {
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_buffering off;
proxy_read_timeout 300s;
}
}
proxy_buffering off giúp token sinh ra đến tay client ngay, đúng kiểu chữ chạy dần trên màn hình. Cấp chứng chỉ bằng certbot, thêm giới hạn tần suất gọi và giữ bước kiểm tra API key. Bài Nginx reverse proxy với SSL hướng dẫn đầy đủ.
Bước 6: kiểm tra sức khỏe và chuyển máy thủ công
vLLM có endpoint /health. Từ VPS, gọi nó mỗi phút:
curl -fsS http://127.0.0.1:8000/health || echo "GPU backend down"
Gửi cảnh báo khi lỗi, ví dụ qua bot Telegram của team. Máy GPU là host độc lập, không có SLA phần cứng, và không có cơ chế tự chuyển khi máy mất kết nối. Hãy giữ sẵn một script triển khai cài vLLM và kéo model, để dựng máy thay thế ở SG hoặc nước lân cận rồi trỏ lại đường hầm thật nhanh. Trong lúc backend ngừng, cho Nginx trả về một thông báo lỗi dễ hiểu.
Về chi phí: GPU trừ tiền theo phút từ số dư, bạn nạp bằng chuyển khoản VND. VPS có thể thanh toán theo giờ hoặc theo tháng.
Câu hỏi thường gặp
Cloudj có cài sẵn vLLM không?
Không. Bạn tự cài vLLM hoặc Ollama trên template Ubuntu + CUDA, hoặc build Docker image công khai riêng nếu cấp tài khoản cho phép.
GPU ở Singapore lúc nào cũng có chứ?
Không. Hàng thay đổi trong ngày. Tìm SG; nếu chưa có máy phù hợp, thêm MY và TH rồi đo độ trễ.
Sao không mở vLLM trực tiếp trên GPU cho nhanh?
Máy GPU có thể thay đổi. VPS cho bạn tên miền cố định, TLS và kiểm soát truy cập, đồng thời giữ port model kín.
Nên bắt đầu với GPU nào?
Với model 7B đến 14B, RTX 4090 là điểm khởi đầu phổ biến. Chuyển lên card lớp 48 GB khi model lớn hơn hoặc lượng người dùng đồng thời cao.
Bắt tay vào dựng
Mở trang triển khai RTX 4090, đặt Country là SG và xem đang có máy nào. So sánh giá trực tiếp trên GPU cloud trước khi triển khai.