私有化部署与本地大模型
私有化部署将大模型和 AI 工作流运行在自有服务器上,确保数据不出内网、满足合规要求、消除 API 调用成本。核心方案为 Ollama(模型推理)+ Dify(工作流平台)的组合架构。
部署方案概览
为什么选择私有化
| 维度 | 云端 API | 私有化部署 |
|---|---|---|
| 数据安全 | 数据传输至第三方 | 数据完全自控 |
| 合规要求 | 可能不满足行业监管 | 满足金融/医疗/政务合规 |
| 成本模型 | 按 Token 持续计费 | 一次性硬件投入 |
| 网络依赖 | 必须联网 | 支持完全离线 |
| 定制能力 | 受限于 API 接口 | 可微调/量化/定制 |
| 性能上限 | 顶级模型能力 | 受硬件限制 |
技术栈选择
图表渲染中…
Ollama 本地模型部署
安装与配置
bash
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# 启动服务
ollama serve # 默认监听 http://localhost:11434模型管理
bash
# 拉取模型
ollama pull qwen3:1.7b # 轻量级,适合工具调用
ollama pull qwen3:8b # 平衡性能与质量
ollama pull llama3:8b # Meta 开源模型
ollama pull mistral:7b # 欧洲开源模型
# 查看已安装模型
ollama list
# 运行模型(交互式)
ollama run qwen3:1.7b
# 删除模型
ollama rm qwen3:1.7b模型选型指南
| 模型 | 参数量 | 显存需求 | 适用场景 |
|---|---|---|---|
| qwen3:1.7b | 1.7B | ~2GB | 工具调用、简单对话 |
| qwen3:8b | 8B | ~6GB | 通用对话、代码生成 |
| llama3:8b | 8B | ~6GB | 英文场景、推理 |
| mistral:7b | 7B | ~5GB | 多语言、轻量部署 |
| qwen3:32b | 32B | ~20GB | 高质量生成、复杂推理 |
| llama3:70b | 70B | ~40GB | 接近云端模型质量 |
OpenAI 兼容 API
Ollama 提供 OpenAI 兼容接口,现有代码无需修改即可切换:
typescript
// 与调用云端 API 完全一致的代码
const response = await fetch('http://localhost:11434/v1/chat/completions', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'qwen3:1.7b',
messages: [{ role: 'user', content: '你好' }],
stream: true,
}),
});硬件需求参考
| 模型规模 | 最低配置 | 推荐配置 |
|---|---|---|
| 1-3B | 8GB RAM, 无独显 | 16GB RAM |
| 7-8B | 16GB RAM, 4GB VRAM | 32GB RAM, 8GB VRAM |
| 13-14B | 32GB RAM, 8GB VRAM | 32GB RAM, 16GB VRAM |
| 32B+ | 64GB RAM, 24GB VRAM | 多卡/服务器 |
Dify 工作流平台
部署方式
bash
# Docker Compose 一键部署
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d核心功能
| 功能 | 说明 |
|---|---|
| 可视化工作流 | 拖拽式编排 AI 工作流 |
| RAG 引擎 | 内置知识库管理和向量检索 |
| Agent 能力 | 支持 Function Calling 和 ReAct |
| 多模型接入 | 对接 Ollama、OpenAI、各种国产模型 |
| API 发布 | 一键生成 RESTful API |
| 日志监控 | 对话日志、Token 消耗统计 |
对接 Ollama
在 Dify 设置中添加 Ollama 作为模型供应商:
yaml
# Dify 模型配置
provider: ollama
models:
- name: qwen3:8b
type: chat
base_url: http://host.docker.internal:11434
- name: nomic-embed-text
type: embedding
base_url: http://host.docker.internal:11434企业级私有化架构
生产环境架构
图表渲染中…
安全加固
| 层面 | 措施 |
|---|---|
| 网络 | 内网隔离、防火墙规则、VPC |
| 认证 | API Key + JWT 双重验证 |
| 传输 | 内部通信 TLS 加密 |
| 审计 | 全量请求日志、操作审计 |
| 数据 | 模型输入输出脱敏、定期清理 |
| 访问 | RBAC 权限控制、IP 白名单 |
性能优化
| 优化方向 | 具体措施 |
|---|---|
| 推理加速 | vLLM 替代 Ollama(高并发场景) |
| 模型量化 | GGUF Q4/Q5 量化降低显存 |
| 批处理 | 合并请求批量推理 |
| 缓存 | 语义缓存相似问题的回答 |
| 多卡并行 | Tensor Parallelism 分布推理 |
常见问题与陷阱
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 模型加载慢 | 首次需加载到显存 | 预热机制、保持服务常驻 |
| 并发能力差 | Ollama 默认单并发 | 使用 vLLM 或增加实例 |
| Docker 内无法访问 Ollama | 网络隔离 | 使用 host.docker.internal |
| 中文效果差 | 模型中文能力不足 | 选择 Qwen 系列中文模型 |
| 显存溢出 | 模型过大/上下文过长 | 量化模型或限制 max_tokens |