- Ollama là cách dễ nhất chạy LLM local trên Linux/Mac. Pull và chạy Qwen 2.5 32B qua 2 lệnh.
- Qwen 2.5 32B với quantization Q4_K_M cần ~22GB VRAM, chạy ổn trên RTX 4090 24GB. Tốc độ 25-35 tok/s.
- VPS GPU rẻ nhất VN cấu hình RTX 3060 12GB (~1 triệu/tháng) chỉ chạy nổi Qwen 14B Q4. Cần RTX 4090 cho 32B.
- Qwen 2.5 hỗ trợ tiếng Việt rất tốt, hiểu context dài 128k token, code completion gần ngang GPT-4o-mini.
- Bài này hướng dẫn full: cài driver, deploy Ollama, pull model, expose REST API, dùng từ Open WebUI và Tabby.
Năm 2026, Qwen 2.5 của Alibaba đã vượt Llama 3.3 ở nhiều benchmark, đặc biệt nổi bật ở khả năng tiếng Việt và code. Cho dev solo Việt Nam, một câu hỏi cuối cùng cần trả lời: cài Qwen tự host trên VPS GPU rẻ nhất có thể, để có một AI agent hoàn toàn riêng, không phụ thuộc Anthropic hay OpenAI. Bài này hướng dẫn deploy Ollama + Qwen 2.5 trên VPS GPU NVIDIA, từ chọn cấu hình hợp lý đến gọi API và tích hợp với Open WebUI làm dashboard chat.
Test trên hai cấu hình: RTX 3060 12GB (chạy Qwen 14B Q4) và RTX 4090 24GB (chạy Qwen 32B Q4). Cả hai đều phù hợp dev solo, chi phí từ 1 triệu tới 5 triệu/tháng tùy lựa chọn. Sau bài này bạn có một LLM endpoint OpenAI-compatible chạy nội bộ, có thể wrap mọi tool hỗ trợ OpenAI API (Cursor, Continue.dev, Tabby).
Vì sao chọn Qwen 2.5 thay vì Llama 3.3 hay Mistral?
| Tiêu chí | Qwen 2.5 | Llama 3.3 | Mistral Large 2 |
|---|---|---|---|
| Tiếng Việt | Rất tốt | Trung bình | Tốt |
| Code | Rất tốt (Qwen2.5-Coder) | Tốt | Tốt |
| Context window | 128k token | 128k | 128k |
| License | Apache 2.0 (1.5B-32B) | Llama Community | MRL (commercial restricted) |
| Size đa dạng | 0.5B/1.5B/3B/7B/14B/32B/72B | 3B/8B/70B/405B | 123B only |
| Quantization hỗ trợ | Tốt (gguf, awq, gptq) | Tốt | Tốt |
Qwen 2.5 thắng ở: tiếng Việt, dải size linh hoạt (chọn phù hợp VRAM), license Apache thoải mái thương mại. Mistral Large 2 size quá lớn, không khả thi tự host budget thường.
Lựa chọn VPS GPU theo budget
| VPS GPU | VRAM | Giá/tháng | Qwen 2.5 chạy được | Tok/s |
|---|---|---|---|---|
| RTX 3060 | 12 GB | ~1-1.5 triệu | 7B FP16, 14B Q4 | 30-50 |
| RTX 4070 | 12 GB | ~1.5-2 triệu | 14B Q4, 14B Q5 | 40-60 |
| RTX 4090 | 24 GB | ~4-6 triệu | 32B Q4, 32B Q5 | 25-35 |
| 2x RTX 4090 | 48 GB | ~10 triệu | 72B Q4 split | 15-25 |
| A100 40GB | 40 GB | ~15-20 triệu | 72B Q5 | 40-60 |
Cho dev solo, sweet spot là RTX 4090 24GB chạy Qwen 32B. Đủ thông minh cho 90 phần trăm task, giá hợp lý. Khi chỉ test thử, RTX 3060 12GB + Qwen 14B đủ trải nghiệm.
Bước 1: Cài NVIDIA driver
sudo apt update
sudo apt install -y ubuntu-drivers-common
sudo ubuntu-drivers autoinstall
sudo reboot
# sau reboot
nvidia-smi
Thấy bảng GPU info nghĩa driver OK.
Bước 2: Cài Ollama
curl -fsSL https://ollama.com/install.sh | sh
ollama --version
sudo systemctl status ollama
Script tự install binary, tạo systemd service, expose REST API tại localhost:11434.
Bước 3: Pull và chạy Qwen 2.5
# 32B với Q4 (cho RTX 4090)
ollama pull qwen2.5:32b
# Hoặc 14B với Q4 (cho RTX 3060/4070)
ollama pull qwen2.5:14b
# Hoặc 7B (thử nhanh)
ollama pull qwen2.5:7b
Download mất 5-15 phút tùy bandwidth (model size 4-20GB). Khi xong, test:
ollama run qwen2.5:32b "Viết hàm Python tính tuổi từ ngày sinh"
Model load lần đầu mất 30-60 giây vào VRAM. Sau đó stream câu trả lời mượt, 25-35 tok/s.
Bước 4: Expose API ra ngoài
Mặc định Ollama bind 127.0.0.1. Sửa systemd:
sudo systemctl edit ollama
# Thêm:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_ORIGINS=*"
sudo systemctl daemon-reload
sudo systemctl restart ollama
Bây giờ port 11434 mở ra interface ngoài. Đặt sau Caddy với auth token để tránh ai cũng gọi được.
Bước 5: Caddy reverse proxy + auth
ollama.your-domain.com {
@authorized header Authorization "Bearer $YOUR_LONG_API_KEY"
handle @authorized {
reverse_proxy localhost:11434
}
handle {
respond "Unauthorized" 401
}
}
App từ ngoài gọi:
curl -X POST https://ollama.your-domain.com/api/generate
-H "Authorization: Bearer $YOUR_API_KEY"
-d '{"model": "qwen2.5:32b", "prompt": "Hello in Vietnamese"}'
Bước 6: OpenAI-compatible endpoint
Ollama có endpoint /v1/chat/completions tương thích OpenAI:
curl -X POST https://ollama.your-domain.com/v1/chat/completions
-H "Authorization: Bearer $YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"model": "qwen2.5:32b",
"messages": [{"role": "user", "content": "Viết quote về dev solo"}]
}'
Mọi tool hỗ trợ OpenAI API đều dùng được bằng cách đổi base URL. Cursor, Continue.dev, LiteLLM, LangChain, OpenAI SDK.
Bước 7: Cài Open WebUI làm dashboard chat
docker run -d --name open-webui
--add-host=host.docker.internal:host-gateway
-e OLLAMA_BASE_URL=http://host.docker.internal:11434
-p 3000:8080
-v open-webui:/app/backend/data
--restart=always
ghcr.io/open-webui/open-webui:main
Đặt sau Caddy:
chat.your-domain.com {
reverse_proxy localhost:3000
}
Mở https://chat.your-domain.com, đăng ký account đầu tiên (auto admin). UI giống ChatGPT, có RAG (upload file), web search plugin, model switcher.
Tích hợp với Tabby cho code completion
Tabby (đã có bài riêng) hỗ trợ Ollama backend. Sửa Tabby config:
model:
completion:
http:
kind: ollama/completion
model_name: qwen2.5-coder:7b
api_endpoint: http://localhost:11434
chat:
http:
kind: ollama/chat
model_name: qwen2.5:14b
api_endpoint: http://localhost:11434
Restart Tabby. Code completion trong VS Code dùng Qwen2.5-Coder 7B (latency 100-200ms), chat dùng Qwen 14B. Toàn bộ nội bộ.
Tích hợp với Cursor
Cursor cho phép custom OpenAI endpoint. Settings > Models > Override OpenAI Base URL:
- OpenAI API Key: $YOUR_API_KEY
- Override OpenAI Base URL: https://ollama.your-domain.com/v1
- Default Model: qwen2.5:32b
Cursor chat và edit dùng Qwen tự host. Tiết kiệm subscription Cursor Pro.
Tối ưu performance
- num_ctx: giảm context window xuống 8192 nếu không cần long context, tăng tốc 2x.
- num_predict: giới hạn output token, tránh agent loop dài.
- num_gpu: số layer trên GPU. Default tự detect, force = N nếu cần.
- flash_attention: bật trong env OLLAMA_FLASH_ATTENTION=1, tăng tốc 20-30 phần trăm.
- Preload model: giữ model trong VRAM với
ollama run qwen2.5:32b ""rồi exit, model vẫn loaded.
Monitor GPU usage
watch -n 1 nvidia-smi
# Hoặc nvtop đẹp hơn
sudo apt install nvtop
nvtop
Theo dõi VRAM usage, GPU utilization, temperature. Trên Qwen 32B Q4, GPU thường 80-95 phần trăm util khi inference, idle 0 phần trăm khi không có request.
So sánh chi phí token
| Solution | Chi phí 1M token | Privacy |
|---|---|---|
| GPT-4o-mini API | 0.15 USD input, 0.6 USD output | Gửi data ra OpenAI |
| Claude Haiku API | 0.25 USD input, 1.25 USD output | Gửi data ra Anthropic |
| Qwen self-host RTX 4090 | Cost flat VPS ~5 triệu/tháng = unlimited | 100% nội bộ |
Break-even: nếu dùng trên 30M token/tháng (GPT-4o-mini = 7-15 USD), self-host bắt đầu rẻ hơn. Đặc biệt khi privacy là yêu cầu, self-host là duy nhất khả thi.
Backup model và config
- Model file ở ~/.ollama/models, khoảng 4-20GB mỗi model. Có thể tar và backup vào S3 nếu không muốn download lại.
- Config systemd: /etc/systemd/system/ollama.service.d/override.conf - commit vào git.
- Open WebUI data trong docker volume open-webui. Backup volume hàng tuần.
Update Ollama và model
curl -fsSL https://ollama.com/install.sh | sh # update binary
ollama pull qwen2.5:32b # update model nếu có version mới
Qwen mới (3.0+) ra mắt khi nào thì pull tương ứng. Test trước, switch dần.
FAQ
VPS GPU rẻ nhất Việt Nam tìm ở đâu?
Một số nhà cung cấp VN có VPS GPU với RTX 3060/4070 từ 1-2 triệu/tháng. Cần check kỹ về uptime, support, có dùng được full GPU không (một số virtualization chỉ cho 50 phần trăm). TND đang mở rộng dòng VPS GPU 2026, theo dõi cập nhật ở trang sản phẩm.
Qwen 2.5 có an toàn dùng cho production không?
License Apache 2.0 cho phép thương mại không hạn chế. Alibaba (Tongyi Lab) maintain tích cực, release model mới đều. Đã được nhiều startup VN dùng production. Chỉ lưu ý: data input không nên có PII của user khác để tránh vấn đề pháp lý nội bộ.
Có thể dùng Ollama trên Mac M3/M4 thay VPS GPU không?
Có. Apple Silicon dùng Metal backend, M3 Max 64GB chạy Qwen 32B Q4 ổn 15-25 tok/s. Phù hợp dev cá nhân. Khi cần share cho team, vẫn nên VPS GPU dedicated 24/7.
Qwen 32B so với Claude Sonnet 3.5 ra sao?
Trên benchmark public, Qwen 32B khoảng 85-90 phần trăm Claude Sonnet 3.5 ở task reasoning, code, summarize. Tiếng Việt Qwen tốt hơn. Task agentic phức tạp Claude vẫn hơn. Cho work hàng ngày 80 phần trăm task, Qwen đủ tốt.
Có thể chạy multiple model song song trên 1 VPS GPU không?
Có nếu VRAM còn dư. RTX 4090 24GB chứa được Qwen 14B Q4 (~9GB) + Qwen2.5-Coder 7B (~5GB) song song. Ollama tự load/unload theo request. Concurrent inference nhiều cùng lúc thì 1 model 1 thời điểm, queue.
Cloud VPS làm app server + VPS GPU dedicated chạy Ollama
Cloud VPS TND sẵn AlmaLinux 9, Ubuntu 22/24, Debian 12/13. SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. Combo: Cloud VPS 50 chạy Caddy + Open WebUI, VPS GPU dedicated chạy Ollama Qwen, tổng dưới 6 triệu/tháng cho full stack AI tự host.
Xem 8 cấu hình Cloud VPS →


