最近几年,大模型越来越强,但企业真正开始把 AI 接入业务之后,很多团队马上遇到了一个现实问题:
数据到底能不能放心交给公网大模型?
代码、客户资料、内部技术文档、业务数据库、运维日志……
这些数据一旦上传到第三方 AI 服务,就会产生新的安全风险。
尤其是企业内部的:
源代码 数据库结构 客户信息 API Key 服务器配置 技术文档 内部聊天记录 业务数据这些内容并不适合无脑发送到公网。
所以越来越多企业开始考虑:
私有化部署大模型。
简单来说,就是:
传统方案: 用户 ↓ 公网 API ↓ 第三方大模型 ↓ 返回结果变成:
私有化方案: 用户 ↓ 企业内网 ↓ 本地服务器 ↓ 本地大模型 ↓ 返回结果数据不需要离开自己的服务器。
今天就不讲复杂的理论,直接上实战。
我们使用 Docker 快速部署两种目前非常常见的本地大模型推理方案:
Ollama vLLM一、先搞清楚:Ollama 和 vLLM 是干什么的?
在部署之前,先把两者的定位搞清楚。
1. Ollama
Ollama 最大的特点就是:
简单。
非常适合:
个人开发 本地测试 AI 应用开发 快速体验模型 小规模内部服务你甚至可以直接:
ollama run qwen3然后开始和模型聊天。
整个过程非常简单。
2. vLLM
vLLM 更偏向:
生产环境的大模型推理服务。
它重点解决:
高并发 GPU 利用率 批量请求 吞吐量 推理性能 API 服务如果你准备搭建:
企业 AI 服务 内部大模型 API RAG 后端 Agent 后端 多人同时访问那么 vLLM 更值得研究。
简单理解:
Ollama = 好用、简单、快速上手 vLLM = 高性能、服务化、适合生产二、部署前先检查服务器
先不要急着 Docker Compose。
第一步:
docker --version然后:
docker compose version如果都能正常返回版本号,说明 Docker 环境基本没问题。
三、如果使用 NVIDIA GPU,检查驱动
执行:
nvidia-smi如果能够看到:
NVIDIA-SMI Driver Version CUDA Version GPU Memory说明 NVIDIA 驱动基本正常。
例如:
+------------------------------------------------------+ | NVIDIA-SMI | +------------------------------------------------------+ | GPU Name Memory-Usage | | RTX 4090 1024MiB / 24564MiB | +------------------------------------------------------+注意:
GPU 显存是部署大模型最关键的硬件指标之一。
不要看到:
GPU就以为所有模型都能跑。
例如:
7B 模型 14B 模型 32B 模型 70B 模型对显存的需求完全不同。
四、第一种方案:Docker 部署 Ollama
如果你的目标是:
先把本地大模型跑起来。
我建议优先选择 Ollama。
创建目录:
mkdir -p ~/ollama cd ~/ollama创建:
docker-compose.yml写入:
services: ollama: image: ollama/ollama:latest container_name: ollama restart: unless-stopped ports: - "11434:11434" volumes: - ollama_data:/root/.ollama environment: - OLLAMA_HOST=0.0.0.0:11434 deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu] volumes: ollama_data:这里最关键的是:
volumes: - ollama_data:/root/.ollama为什么要挂载 Volume?
因为模型文件非常大。
如果不持久化:
删除容器 ↓ 模型可能丢失挂载之后:
Container │ ▼ /root/.ollama │ ▼ Docker Volume即使重新创建容器,模型数据仍然可以保留。
五、启动 Ollama
直接执行:
docker compose up -d查看:
docker compose ps应该可以看到:
ollama running然后查看日志:
docker compose logs -f ollama如果没有明显报错,说明服务基本启动成功。
六、下载第一个本地模型
进入容器:
docker exec -it ollama bash然后:
ollama pull qwen3下载完成之后:
ollama list应该能看到对应模型。
运行:
ollama run qwen3然后直接输入:
你好,请介绍一下你自己。如果模型开始回答:
恭喜,本地大模型已经跑起来了。
七、直接通过 API 调用 Ollama
Ollama 不只是聊天工具。
它本身还提供 API。
例如:
curl http://localhost:11434/api/generate \ -d '{ "model": "qwen3", "prompt": "什么是 RAG?", "stream": false }'返回:
{ "model": "qwen3", "response": "RAG 是检索增强生成技术……" }这意味着:
你的业务系统 ↓ Ollama API ↓ 本地大模型因此可以直接把它接入:
RAG Agent 企业知识库 自动化系统 内部 AI 助手八、Python 调用 Ollama
例如:
import requests url = "http://localhost:11434/api/generate" data = { "model": "qwen3", "prompt": "什么是向量数据库?", "stream": False } response = requests.post( url, json=data ) result = response.json() print(result["response"])这时候:
Python ↓ HTTP API ↓ Ollama ↓ 本地模型整个调用链已经打通。
九、第二种方案:Docker 部署 vLLM
如果你已经开始考虑:
高并发 API 服务 企业内部 AI 平台 RAG Agent那么可以进一步尝试 vLLM。
创建:
mkdir -p ~/vllm cd ~/vllm然后创建:
docker-compose.yml示例:
services: vllm: image: vllm/vllm-openai:latest container_name: vllm restart: unless-stopped ports: - "8000:8000" ipc: host volumes: - ./models:/models command: - "--model" - "/models/Qwen" - "--host" - "0.0.0.0" - "--port" - "8000" deploy: resources: reservations: devices: - driver: nvidia count: all capabilities: [gpu]这里和 Ollama 最大的区别之一就是:
Ollama 自己负责模型管理 vLLM 通常需要你准备模型目录例如:
models/ └── Qwen/ ├── config.json ├── tokenizer.json ├── tokenizer_config.json └── model files...十、启动 vLLM
执行:
docker compose up -d查看日志:
docker compose logs -f vllm如果模型成功加载,一般可以看到服务监听:
0.0.0.0:8000此时:
http://服务器IP:8000就是 vLLM 的 API 服务入口。
十一、vLLM 为什么适合企业 API?
vLLM 可以提供兼容 OpenAI 风格的 API。
例如:
curl http://localhost:8000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "/models/Qwen", "messages": [ { "role": "user", "content": "介绍一下 RAG" } ] }'这种接口设计非常方便。
因为很多 AI 应用本身就是按照 OpenAI API 格式开发的。
因此可以做到:
原来: 业务系统 ↓ OpenAI API 现在: 业务系统 ↓ vLLM ↓ 企业本地模型很多情况下,应用层甚至不需要进行大规模修改。
十二、Python 调用 vLLM
如果你的程序使用 OpenAI SDK,可以通过修改:
base_url连接到自己的 vLLM。
示例:
from openai import OpenAI client = OpenAI( api_key="EMPTY", base_url="http://localhost:8000/v1" ) response = client.chat.completions.create( model="/models/Qwen", messages=[ { "role": "user", "content": "什么是向量数据库?" } ] ) print( response.choices[0].message.content )这样:
Python ↓ OpenAI SDK ↓ vLLM ↓ 本地 GPU ↓ 大模型十三、Ollama 和 vLLM 到底怎么选?
直接给你一张表。
| 项目 | Ollama | vLLM |
|---|---|---|
| 上手难度 | 低 | 中 |
| 本地体验 | 非常适合 | 适合 |
| 模型管理 | 简单 | 相对复杂 |
| API 服务 | 支持 | 非常适合 |
| 高并发 | 一般 | 强 |
| 推理性能 | 较好 | 很强 |
| 企业部署 | 可以 | 更适合 |
| 学习成本 | 低 | 中 |
| 快速 Demo | 推荐 | 可以 |
| 生产推理服务 | 视场景而定 | 推荐 |
如果你是第一次接触本地大模型:
Ollama ↓ 先跑通 ↓ API ↓ RAG ↓ Agent如果已经开始考虑:
多人访问 高并发 吞吐量 GPU 利用率可以重点研究:
vLLM十四、真正企业级部署不能只关注模型
很多新人部署本地大模型,只关注:
模型能不能运行?但企业真正关心的是:
数据安全吗? 权限怎么控制? API 有没有认证? 日志怎么记录? 模型服务能不能扩展? GPU 资源怎么管理?例如:
错误方案: 公网 ↓ 8000 ↓ vLLM这相当于直接把模型 API 暴露在公网。
风险非常大。
更合理的结构应该是:
Internet │ ▼ Gateway │ Authentication │ ▼ AI Service │ ┌──────────┴──────────┐ │ │ RAG vLLM │ │ └──────────┬──────────┘ │ ▼ GPU也就是说:
不要直接把模型端口裸奔到公网。
十五、企业内部推荐的完整架构
如果进一步升级,可以设计成:
用户 │ ▼ Web UI │ ▼ Nginx │ ▼ API Gateway │ ┌─────────┴─────────┐ │ │ Auth RAG │ │ │ Vector DB │ │ └─────────┬─────────┘ │ ▼ AI Service │ ┌─────────┴─────────┐ │ │ Ollama vLLM │ │ └─────────┬─────────┘ │ ▼ GPU这时候,本地大模型已经不再是一个简单的聊天程序。
而是变成:
企业内部 AI 基础设施。
十六、一个容易被忽略的问题:模型文件非常大
例如:
7B 14B 32B 70B模型规模越大,对:
GPU 显存 磁盘空间 内存 CPU 网络的要求越高。
因此部署之前,一定先确认:
free -h查看内存。
df -h查看磁盘。
如果使用 NVIDIA GPU:
nvidia-smi查看显存。
不要出现这种情况:
模型下载 30GB 服务器磁盘只剩 15GB最后才发现:
模型根本拉不下来。
十七、为什么 Docker 特别适合部署 AI 环境?
大模型环境最大的麻烦之一就是:
CUDA Python PyTorch 驱动 依赖 模型不同版本之间很容易出现冲突。
例如:
Python 3.11 PyTorch A CUDA B 模型 C换一台机器:
Python 3.12 PyTorch D CUDA E然后:
环境炸了。
Docker 的作用就是把环境尽量封装起来:
宿主机 │ ▼ Docker │ ├── Python ├── PyTorch ├── CUDA Runtime ├── AI Service └── Dependencies这样部署和迁移都会方便很多。
十八、Docker Compose 的真正价值
为什么这里一直使用:
docker-compose.yml而不是直接:
docker run ...因为 AI 项目最终很可能不是只有一个容器。
例如:
rag-api vllm qdrant redis postgres nginx frontend如果全部使用docker run:
命令越来越长 参数越来越多 维护越来越麻烦而 Compose 可以直接描述整个系统:
docker-compose.yml │ ├── API ├── LLM ├── Vector DB ├── Redis └── Nginx然后:
docker compose up -d整个服务栈一起启动。
这才是 Docker Compose 在 AI 项目中的真正价值。
十九、从 Ollama 到企业 AI 平台
如果只是自己学习:
Ollama + 一个模型已经够用了。
但如果继续往企业级发展,可以逐步升级:
阶段 1 Ollama ↓ 本地聊天 阶段 2 Ollama API ↓ 业务程序 阶段 3 RAG ↓ 企业知识库 阶段 4 Vector DB ↓ 语义检索 阶段 5 Agent ↓ 工具调用 阶段 6 vLLM ↓ 高性能推理 阶段 7 Gateway ↓ 权限认证 阶段 8 监控 ↓ Prometheus / Grafana最后形成:
企业私有 AI 平台二十、最后总结
本地私有化部署大模型并没有想象中那么复杂。
最简单的路线就是:
Docker ↓ Ollama ↓ 本地模型 ↓ API想进一步提升:
Docker ↓ vLLM ↓ OpenAI Compatible API ↓ RAG ↓ Agent整个技术体系就逐渐建立起来了。
而企业真正选择私有化部署,并不是为了“追热点”。
更重要的是:
数据控制权 隐私保护 内部知识利用 访问权限 成本控制 系统可定制性如果你的企业准备把 AI 真正接入内部业务,那么:
本地大模型 + RAG + Agent + 权限体系
会是一个非常值得长期投入的技术方向。
最后给正在部署的朋友一个建议:
不要一上来就部署几十 B 的超大模型。
先从一个自己硬件能够稳定运行的小模型开始,把:
模型 ↓ API ↓ RAG ↓ Agent ↓ 业务系统整个链路跑通。
等系统真正稳定之后,再考虑模型量化、GPU 并行、vLLM、批处理、高并发和多模型路由。
这样学习效率反而最高。
如果在拉取镜像时遇到网络报错,可以看主页简介获取我整理的国内加速源配置和自动化部署脚本。