详细对比vLLM、Ollama、LocalAI、TGI四款自托管推理引擎的性能与适用场景,含生产级Docker Compose配置。
将机密公司数据、源代码和客户记录发送到商业 LLM API,会让组织面临隐私泄露、意外速率限制和每月账单失控的风险。
借助 DeepSeek-R1 / V3、Llama 3.3 70B、Mistral NeMo 和 Qwen 2.5 等开源权重模型,在自有硬件(或 Hetzner、RunPod、Lambda 等专用 GPU 云实例)上运行本地推理,比以往任何时候都更快、更具成本效益。
然而,选择正确的推理引擎,决定了你能否在每个 GPU 上实现 5 tokens/秒还是 120 tokens/秒的性能。
本指南将深入解析四款领先的自托管 LLM 服务引擎,并提供生产级 Docker Compose 配置。
引擎对比矩阵
选择你的服务架构
你拥有现代 NVIDIA GPU(RTX 3090、4090、A100、H100)或 AMD ROCm 硬件。
你需要为多个并发用户或后台 Agent 工作流提供服务,而不出现吞吐量崩溃。
你想通过 PagedAttention 实现最先进的内存管理,消除 KV 缓存带来的 VRAM 浪费。
何时选择 Ollama
你想要零配置的模型拉取(ollama run llama3.3)。
你在消费级硬件、Apple Silicon(M1/M2/M3/M4)或使用 GGUF 量化的混合 CPU/GPU 环境下运行。
你想与 Open WebUI、AnythingLLM 或 Cursor 无缝集成。
何时选择 LocalAI
你需要一款统一的引擎,能够在单个容器内运行文本生成、语音合成(TTS)、音频转录(Whisper)和图像生成(Stable Diffusion)。
Stack 1:高性能 vLLM + Open WebUI(GPU 生产栈)
此栈在 8000 端口暴露 OpenAI 兼容 API,在 3000 端口提供旗舰级类 ChatGPT 界面(Open WebUI):
services:
vllm:
image: vllm/vllm-openai:latest
container_name: vllm_server
restart: unless-stopped
environment:
- HUGGING_FACE_HUB_TOKEN=${HF_TOKEN:-}
volumes:
- ~/.cache/huggingface:/root/.cache/huggingface
ports:
- "127.0.0.1:8000:8000"
ipc: host
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
command: >
--model Qwen/Qwen2.5-Coder-7B-Instruct
--gpu-memory-utilization 0.90
--max-model-len 8192
--dtype auto
--api-key ${VLLM_API_KEY:-super-secret-key-123}
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open_webui
restart: unless-stopped
ports:
- "127.0.0.1:3000:8080"
volumes:
- open_webui_data:/app/backend/data
environment:
- OPENAI_API_BASE_URL=http://vllm:8000/v1
- OPENAI_API_KEY=${VLLM_API_KEY:-super-secret-key-123}
- WEBUI_AUTH=true
- ENABLE_SIGNUP=false # Disable public registration
depends_on:
- vllm
volumes:
open_webui_data:
Stack 2:Ollama + Open WebUI(CPU & GPU 家庭实验室栈)
适用于混合环境和便捷的 GGUF 模型处理:
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "127.0.0.1:11434:11434"
volumes:
- ollama_models:/root/.ollama
# Uncomment deploy block if NVIDIA GPU is present:
# deploy:
# resources:
# reservations:
# devices:
# - driver: nvidia
# count: all
# capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open_webui
restart: unless-stopped
ports:
- "127.0.0.1:3000:8080"
volumes:
- open_webui_data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- WEBUI_AUTH=true
depends_on:
- ollama
volumes:
ollama_models:
open_webui_data:
硬件规格与 VRAM 经验法则
生产环境加固清单
身份验证优先:切勿将未认证的 Ollama(11434)或 vLLM(8000)端口暴露在公共互联网。任何找到该 IP 的人都可能耗尽你的计算资源或注入恶意 prompt。
反向代理与 SSL:用 Traefik 或 Caddy 包装你的 Open WebUI,并配置 Let's Encrypt 证书。
模型权重缓存:将 ~/.cache/huggingface 和 ~/.ollama 持久化到快速 NVMe 卷上,以避免容器重启时重新下载 20GB+ 的权重文件。
结论与架构路线图
自托管 AI 栈可以实现完整的数据治理、零合规风险和固定计算成本。
正在寻找适用于本地 AI、RAG 管道、向量数据库和反向代理的生产级 Docker Compose 模板?查看 SelfHostStack 上的完整指南,或获取 Self-Hosted Starter Stack Pack($29)。