ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

无标离线也能丝滑对话!借助 Docker 三分钟极速部署私有化大模型矩阵(Ollama/vLLM 实战)题

无标离线也能丝滑对话!借助 Docker 三分钟极速部署私有化大模型矩阵(Ollama/vLLM 实战)题 最近几年大模型越来越强但企业真正开始把 AI 接入业务之后很多团队马上遇到了一个现实问题数据到底能不能放心交给公网大模型代码、客户资料、内部技术文档、业务数据库、运维日志……这些数据一旦上传到第三方 AI 服务就会产生新的安全风险。尤其是企业内部的源代码 数据库结构 客户信息 API Key 服务器配置 技术文档 内部聊天记录 业务数据这些内容并不适合无脑发送到公网。所以越来越多企业开始考虑私有化部署大模型。简单来说就是传统方案 用户 ↓ 公网 API ↓ 第三方大模型 ↓ 返回结果变成私有化方案 用户 ↓ 企业内网 ↓ 本地服务器 ↓ 本地大模型 ↓ 返回结果数据不需要离开自己的服务器。今天就不讲复杂的理论直接上实战。我们使用 Docker 快速部署两种目前非常常见的本地大模型推理方案Ollama vLLM一、先搞清楚Ollama 和 vLLM 是干什么的在部署之前先把两者的定位搞清楚。1. OllamaOllama 最大的特点就是简单。非常适合个人开发 本地测试 AI 应用开发 快速体验模型 小规模内部服务你甚至可以直接ollama run qwen3然后开始和模型聊天。整个过程非常简单。2. vLLMvLLM 更偏向生产环境的大模型推理服务。它重点解决高并发 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_HOST0.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 调用 OllamaOllama 不只是聊天工具。它本身还提供 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, jsondata ) 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 为什么适合企业 APIvLLM 可以提供兼容 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_keyEMPTY, base_urlhttp://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 到底怎么选直接给你一张表。项目OllamavLLM上手难度低中本地体验非常适合适合模型管理简单相对复杂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 GPUnvidia-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、批处理、高并发和多模型路由。这样学习效率反而最高。如果在拉取镜像时遇到网络报错可以看主页简介获取我整理的国内加速源配置和自动化部署脚本。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进