Bỏ qua tới nội dung chính
VNSO

Trung tâm AI · Hướng dẫn

Triển khai model AI phục vụ người dùng

Có model rồi, làm sao cho ứng dụng và đồng nghiệp gọi được một cách an toàn? Trang này so sánh định tính bốn công cụ phổ biến, kèm lệnh khởi chạy và các lớp bảo vệ bắt buộc.

Trước khi chạy model, cần có máy chủ đã cài driver (xem cài đặt môi trường) và ước lượng đủ bộ nhớ GPU bằng máy tính VRAM. Bảng dưới đây là so sánh định tính theo mô tả trong tài liệu của từng dự án — không có số đo hiệu năng.

Chọn công cụ nào?

Nhu cầuCân nhắcVì sao
Thử model trong vài phút trên một máyOllamaCài và chạy bằng một vài lệnh, tự quản lý việc tải model.
Ứng dụng có nhiều người dùng đồng thời, muốn API giống OpenAIvLLMTài liệu vLLM định vị là máy chủ tương thích OpenAI, thay thế trực tiếp trong ứng dụng.
Không có GPU lớn, hoặc muốn chạy model đã lượng tử hoállama.cppHỗ trợ chạy trên CPU và kết hợp CPU+GPU khi model lớn hơn VRAM.
Hệ thống cũ đang dùng TGITGI (duy trì) → lên kế hoạch chuyểnTGI đã ở chế độ bảo trì theo README chính thức.
Công cụGiấy phépAPIĐịa chỉ nghe mặc định
OllamaMITAPI riêng + API tương thích OpenAI tại /v1/127.0.0.1:11434
vLLMApache-2.0Tương thích OpenAI (/v1/chat/completions, /v1/completions, /v1/models…)localhost:8000
llama.cppMITllama-server có API tương thích OpenAI (/v1/chat/completions…)127.0.0.1:8080
Text Generation Inference (TGI)Apache-2.0Có API riêng và API Messages tương thích OpenAICổng 80 trong container

Ollama

Bắt đầu gọn trên một máy: cài bằng một lệnh, tải và chạy model bằng một lệnh.

Phù hợp khi

  • Thử nghiệm nhanh, demo nội bộ, một nhóm nhỏ dùng chung
  • Người chưa quen vận hành máy chủ AI
  • Có API tương thích OpenAI để nối vào ứng dụng sẵn có

Lưu ý

  • Mặc định chỉ nghe ở 127.0.0.1 — muốn cho máy khác dùng, tự đặt reverse proxy và xác thực phía trước
TerminalCài trên Linux và kiểm tra
curl -fsSL https://ollama.com/install.sh | sh
ollama -v
TerminalHoặc chạy bằng Docker có GPU (đã sửa cổng chỉ mở ở 127.0.0.1)
docker run -d --gpus=all -v ollama:/root/.ollama -p 127.0.0.1:11434:11434 --name ollama ollama/ollama
Ollama mặc định chỉ nghe ở 127.0.0.1 cổng 11434. Biến OLLAMA_HOST đổi địa chỉ nghe — chỉ đổi khi đã có tường lửa và reverse proxy phía trước.

Mã nguồn: github.com/ollama/ollama (mở tab mới) · Giấy phép MIT

vLLM

Máy chủ suy luận hướng tới phục vụ nhiều yêu cầu đồng thời, có API tương thích OpenAI.

Phù hợp khi

  • Sản phẩm có nhiều người dùng gọi cùng lúc
  • Muốn thay API OpenAI bằng model tự vận hành mà ít sửa code ứng dụng
  • Cần chia model ra nhiều GPU (README vLLM liệt kê tensor, pipeline, data, expert parallelism)

Lưu ý

  • Nhiều tham số cấu hình (bộ nhớ GPU, độ dài ngữ cảnh, song song hoá) — nên đọc tài liệu trước khi chạy thật
  • Theo tài liệu bảo mật của vLLM, --api-key chỉ bảo vệ các đường dẫn /v1, /v2, /inference, /cohere — không được coi là lớp bảo vệ duy nhất
TerminalCài bằng uv
uv venv --python 3.12 --seed
source .venv/bin/activate
uv pip install vllm --torch-backend=auto
TerminalChạy máy chủ API (bật kiểm tra API key; khoá lấy từ biến môi trường)
vllm serve Qwen/Qwen2.5-7B-Instruct --host 127.0.0.1 --port 8000 --api-key "$VLLM_API_KEY"
TerminalKiểm tra
curl http://localhost:8000/v1/models -H "Authorization: Bearer $VLLM_API_KEY"
TerminalHoặc chạy image Docker chính thức (đã sửa cổng chỉ mở ở 127.0.0.1)
docker run --runtime nvidia --gpus all \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    --env "HF_TOKEN=$HF_TOKEN" \
    -p 127.0.0.1:8000:8000 \
    --ipc=host \
    vllm/vllm-openai:latest \
    --model Qwen/Qwen2.5-7B-Instruct

Mã nguồn: github.com/vllm-project/vllm (mở tab mới) · Giấy phép Apache-2.0

llama.cpp

Viết bằng C/C++, chạy model định dạng GGUF trên CPU, GPU nhỏ hoặc kết hợp CPU+GPU.

Phù hợp khi

  • Máy không có GPU lớn: chạy trên CPU hoặc nạp một phần model lên GPU
  • Model đã lượng tử hoá (1.5-bit đến 8-bit) để giảm bộ nhớ
  • Cần một máy chủ gọn nhẹ, ít phụ thuộc, có giao diện web đi kèm

Lưu ý

  • Model phải ở định dạng GGUF
  • Build bản CUDA cần CUDA Toolkit trên máy
TerminalBuild bản CUDA từ mã nguồn
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release
TerminalChạy máy chủ API với file GGUF, bật API key
./build/bin/llama-server -m /srv/models/model.gguf --host 127.0.0.1 --port 8080 --api-key "$LLAMA_API_KEY"
README hiện hành cũng giới thiệu cách chạy nhanh: llama serve -hf <kho-GGUF-trên-Hugging-Face>. Bảng tham số của llama-server ghi mặc định --host 127.0.0.1, --port 8080, --api-key không đặt.

Mã nguồn: github.com/ggml-org/llama.cpp (mở tab mới) · Giấy phép MIT

Text Generation Inference (TGI)

Máy chủ suy luận của Hugging Face, chạy bằng Docker.

README của TGI thông báo dự án đã chuyển sang chế độ bảo trì (chỉ nhận sửa lỗi nhỏ, tài liệu) và khuyến nghị dùng vLLM, SGLang hoặc llama.cpp cho các triển khai về sau. Kho GitHub ở trạng thái lưu trữ (archived) khi tra cứu 15/09/2026.

Phù hợp khi

  • Hệ thống đang chạy TGI sẵn, cần duy trì
  • Tham khảo cấu hình khi chuyển sang công cụ khác

Lưu ý

  • Không nhận tính năng mới — dự án mới nên cân nhắc lựa chọn khác
TerminalChạy bằng Docker (theo Quick Tour; đã sửa cổng chỉ mở ở 127.0.0.1)
model=Qwen/Qwen2.5-7B-Instruct
volume=$PWD/data

docker run --gpus all --shm-size 1g -p 127.0.0.1:8080:80 -v $volume:/data \
    ghcr.io/huggingface/text-generation-inference:3.3.5 \
    --model-id $model

Mã nguồn: github.com/huggingface/text-generation-inference (mở tab mới) · Giấy phép Apache-2.0

Bảo mật endpoint

Máy chủ model mở ra internet mà không có xác thực thì ai cũng dùng được GPU và dữ liệu của bạn.

  1. Không mở cổng trần ra internet

    Để máy chủ model nghe ở 127.0.0.1 (mặc định của Ollama, llama-server). Với Docker, luôn publish dạng 127.0.0.1:cổng:cổng — tài liệu Docker cảnh báo publish cổng không kèm địa chỉ là mở ra bên ngoài, và ufw không chặn được cổng do Docker publish.

  2. Đặt reverse proxy phía trước

    Reverse proxy (ví dụ nginx) là cửa ngõ duy nhất nhận kết nối từ ngoài: bật HTTPS, kiểm tra xác thực, giới hạn truy cập, rồi mới chuyển yêu cầu vào model ở 127.0.0.1.

  3. Bắt buộc xác thực

    Bật API key của công cụ (vLLM --api-key, llama-server --api-key) VÀ xác thực ở reverse proxy. Tài liệu vLLM nói rõ --api-key không bảo vệ mọi đường dẫn.

  4. Tường lửa tối thiểu

    Chỉ mở cổng HTTPS của reverse proxy. Các cổng nội bộ giữa các máy (ví dụ khi chia model ra nhiều node) chỉ cho phép từ mạng tin cậy — khuyến nghị trong tài liệu bảo mật vLLM.

  5. Giữ bí mật ngoài mã nguồn

    API key, HF_TOKEN đặt qua biến môi trường hoặc trình quản lý bí mật, không ghi thẳng vào file cấu hình đưa lên Git.

nginxReverse proxy tối thiểu: xác thực trước, rồi chuyển vào model ở 127.0.0.1
# /etc/nginx/conf.d/llm.conf — ví dụ tối thiểu, cần bổ sung HTTPS
server {
    listen 80;
    server_name llm.example.vn;

    location / {
        auth_basic           "LLM API";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass           http://127.0.0.1:8000;
    }
}
Ví dụ chỉ dùng các chỉ thị có trong tài liệu nginx (proxy_pass, auth_basic, auth_basic_user_file). Chạy thật cần thêm HTTPS theo hướng dẫn cấu hình HTTPS của nginx; khi ứng dụng gọi bằng API key, có thể bỏ auth_basic và để máy chủ model kiểm tra khoá.

Giám sát

  • Chỉ số của máy chủ model

    vLLM xuất số liệu dạng Prometheus tại đường dẫn /metrics trên cùng máy chủ HTTP — thu thập bằng hệ thống giám sát nội bộ, không công khai đường dẫn này.

  • Chỉ số GPU

    nvidia-smi và nvidia-smi dmon để xem nhanh. Muốn đưa số liệu GPU vào Prometheus/Grafana, NVIDIA có DCGM Exporter.

  • Nhật ký và cảnh báo

    Ghi log truy cập ở reverse proxy để biết ai gọi, gọi bao nhiêu; đặt cảnh báo khi GPU đầy bộ nhớ hoặc máy chủ model ngừng phản hồi.

Hạ tầng để chạy model

  • Máy chủ GPU

    Thuê máy chủ có GPU để huấn luyện hoặc chạy model lâu dài.

  • Private Cloud

    Đám mây riêng cho doanh nghiệp cần tách biệt tài nguyên và kiểm soát dữ liệu.

  • Enterprise Cloud

    Máy chủ ảo cho phần ứng dụng: web, API, cơ sở dữ liệu, công cụ tự động hoá.

  • Cloud GPU theo giờ (mở tab mới)

    Thuê GPU theo giờ tại gpu.vnso.vn — hợp để thử nghiệm, làm đồ án, chạy việc ngắn hạn.

Chưa chắc GPU nào đủ? Dùng công cụ chọn GPU cho model AI.

Nguồn

Mọi lệnh, phiên bản và giấy phép trên trang được đối chiếu trực tiếp với các trang dưới đây. Tra cứu ngày 15/09/2026.

  1. Ollama — Linux (mở tab mới)Ollama · tra cứu
  2. Ollama — Docker (mở tab mới)Ollama · tra cứu
  3. Ollama — FAQ (OLLAMA_HOST, mặc định 127.0.0.1:11434) (mở tab mới)Ollama · tra cứu
  4. Ollama — OpenAI compatibility (mở tab mới)Ollama · tra cứu
  5. Docker — Port publishing and mapping (mở tab mới)Docker · tra cứu
  6. vLLM — GPU installation (mở tab mới)vLLM · tra cứu
  7. vLLM — Quickstart (vllm serve, --api-key) (mở tab mới)vLLM · tra cứu
  8. vLLM — Using Docker (mở tab mới)vLLM · tra cứu
  9. vLLM — Security (mở tab mới)vLLM · tra cứu
  10. vLLM — Production Metrics (/metrics) (mở tab mới)vLLM · tra cứu
  11. llama.cpp — README (mở tab mới)ggml-org · tra cứu
  12. llama.cpp — Build guide (CUDA) (mở tab mới)ggml-org · tra cứu
  13. llama.cpp — llama-server README (mở tab mới)ggml-org · tra cứu
  14. Text Generation Inference — README (thông báo chế độ bảo trì) (mở tab mới)Hugging Face · tra cứu
  15. Text Generation Inference — Quick Tour (mở tab mới)Hugging Face · tra cứu
  16. Text Generation Inference — Launcher arguments (mở tab mới)Hugging Face · tra cứu
  17. Docker — Packet filtering and firewalls (Docker và ufw) (mở tab mới)Docker · tra cứu
  18. nginx — ngx_http_proxy_module (mở tab mới)nginx · tra cứu
  19. nginx — ngx_http_auth_basic_module (mở tab mới)nginx · tra cứu
  20. nginx — Configuring HTTPS servers (mở tab mới)nginx · tra cứu
  21. nvidia-smi — tài liệu dòng lệnh (mở tab mới)NVIDIA · tra cứu
  22. DCGM Exporter (mở tab mới)NVIDIA · tra cứu

Cần tư vấn hạ tầng chạy model?

Cho VNSO biết model, số người dùng dự kiến và yêu cầu về dữ liệu để được gợi ý cấu hình máy chủ.

Liên hệ tư vấn