简介
本文介绍如何在本地电脑部署专属大语言模型系统,无需联网或付费 API。
技术栈: Ollama(模型运行)+ Open WebUI(Web 界面)+ DeepSeek/LLaMA(大模型)
适用场景:
- 个人开发者本地调试 AI 应用
- 企业内网私有化部署,数据不出网
- 学习研究大模型原理
使用 Ollama 和 Open WebUI 在本地部署大语言模型的完整流程。涵盖环境准备、Docker 部署方式、模型选择与下载、Web 界面配置以及 Docker Compose 一键部署方案。同时提供了 GPU 加速配置、自定义模型参数及 Python API 调用示例,适合开发者进行私有化部署或本地调试。
本文介绍如何在本地电脑部署专属大语言模型系统,无需联网或付费 API。
技术栈: Ollama(模型运行)+ Open WebUI(Web 界面)+ DeepSeek/LLaMA(大模型)
适用场景:
在开始部署之前,我们先了解一下整体架构:
| 组件 | 作用 | 端口 |
|---|---|---|
| Ollama | 大模型运行引擎,负责模型加载和推理 | 11434 |
| Open WebUI | 类 ChatGPT 的 Web 界面,提供对话功能 | 8080 |
| 模型文件 | DeepSeek、LLaMA 等大语言模型 | - |
| 模型大小 | 最低内存 | 推荐内存 | GPU(可选) |
|---|---|---|---|
| 7B 参数 | 8GB | 16GB | 6GB 显存 |
| 14B 参数 | 16GB | 32GB | 12GB 显存 |
| 70B 参数 | 64GB | 128GB | 48GB 显存 |
# 检查 Docker 是否安装
docker --version
# 如果未安装,请先安装 Docker
# Windows/Mac: 下载 Docker Desktop
# Ubuntu: sudo apt install docker.io docker-compose
Windows 安装:
# 验证安装
ollama --version
# 输出示例
ollama version is 0.1.27
Linux/macOS 安装:
# 一键安装脚本
curl -fsSL https://ollama.com/install.sh | sh
# 验证安装
ollama --version
# 拉取 Ollama 镜像
docker pull ollama/ollama:latest
# 创建数据目录(持久化模型文件)
mkdir -p ~/ollama-data
# 启动 Ollama 容器
docker run -d \
--name ollama \
--restart unless-stopped \
-p 11434:11434 \
-v ~/ollama-data:/root/.ollama \
ollama/ollama:latest
# 查看运行状态
docker ps | grep ollama
# 输出示例
# abc123 ollama/ollama Up 2 minutes 0.0.0.0:11434->11434/tcp ollama
# 测试 API 是否可用
curl http://localhost:11434/api/tags
# 如果返回 JSON 格式的模型列表,说明运行正常
# {"models":[]}
| 模型名称 | 参数量 | 文件大小 | 特点 |
|---|---|---|---|
| llama3.2:3b | 3B | ~2GB | 轻量级,适合低配机器 |
| llama3.1:8b | 8B | ~4.7GB | 平衡性能与资源 |
| deepseek-r1:7b | 7B | ~4GB | 中文能力强,推理优秀 |
| qwen2.5:7b | 7B | ~4.5GB | 阿里开源,中文友好 |
| mistral:7b | 7B | ~4GB | 欧洲开源模型,性能优秀 |
# 下载 DeepSeek R1 7B 模型(推荐中文用户)
ollama pull deepseek-r1:7b
# 下载 LLaMA 3.1 8B 模型
ollama pull llama3.1:8b
# 下载 Qwen 2.5 7B 模型
ollama pull qwen2.5:7b
# 下载过程示例
# pulling manifest
# pulling 6a4b3c2d... 100% |████████████| 4.0 GB / 4.0 GB
# verifying sha256 digest
# writing manifest
# success
# 运行模型进入对话模式
ollama run deepseek-r1:7b
# 对话示例
>>> 你好,请用中文介绍一下你自己
我是 DeepSeek,一个由深度求索公司开发的大语言模型...
# 使用 curl 调用 API
curl http://localhost:11434/api/generate -d '{ "model": "deepseek-r1:7b", "prompt": "请用一句话介绍 Python 语言", "stream": false }'
# 返回示例
# {"model":"deepseek-r1:7b","response":"Python 是一种简洁、易读的高级编程语言..."}
虽然命令行可以对话,但体验不够友好。Open WebUI 提供了类似 ChatGPT 的 Web 界面,支持多轮对话、历史记录、Markdown 渲染等功能。
# 拉取 Open WebUI 镜像
docker pull ghcr.io/open-webui/open-webui:main
# 启动容器(连接 Ollama)
docker run -d \
--name open-webui \
--restart unless-stopped \
-p 8080:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v ~/open-webui-data:/app/backend/data \
ghcr.io/open-webui/open-webui:main
# 如果 Ollama 也在 Docker 中运行,使用网络连接
docker run -d \
--name open-webui \
--restart unless-stopped \
-p 8080:8080 \
--network host \
-e OLLAMA_BASE_URL=http://127.0.0.1:11434 \
-v ~/open-webui-data:/app/backend/data \
ghcr.io/open-webui/open-webui:main
打开浏览器访问:http://localhost:8080
为了方便管理,我们可以使用 Docker Compose 同时部署 Ollama 和 Open WebUI。
# 创建项目目录
mkdir -p ~/ollama-stack && cd ~/ollama-stack
# 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
# Ollama 服务
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: unless-stopped
ports:
- "11434:11434"
volumes:
- ./ollama-data:/root/.ollama
environment:
- TZ=Asia/Shanghai
deploy:
resources:
reservations:
memory: 8G
# Open WebUI 服务
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./open-webui-data:/app/backend/data
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- TZ=Asia/Shanghai
depends_on:
- ollama
volumes:
ollama-data:
open-webui-data:
EOF
# 启动所有服务
docker compose up -d
# 查看服务状态
docker compose ps
# 输出示例
# NAME STATUS PORTS
# ollama running 0.0.0.0:11434->11434/tcp
# open-webui running 0.0.0.0:8080->8080/tcp
# 查看日志
docker compose logs -f
# 进入 Ollama 容器下载模型
docker exec -it ollama ollama pull deepseek-r1:7b
# 查看已下载的模型
docker exec -it ollama ollama list
# 输出示例
# NAME ID SIZE MODIFIED
# deepseek-r1:7b abc123def456 4.0 GB 2 minutes ago
# 检查 NVIDIA Docker 支持
docker run --rm --gpus all nvidia/cuda:11.8-base nvidia-smi
修改 docker-compose.yml,添加 GPU 支持:
services:
ollama:
image: ollama/ollama:latest
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
# 创建 Modelfile 自定义模型
cat > Modelfile << 'EOF'
FROM deepseek-r1:7b
# 设置系统提示词
SYSTEM 你是一个专业的 AI 助手,擅长中文对话。
# 设置参数
PARAMETER temperature 0.7
PARAMETER num_ctx 4096
PARAMETER top_p 0.9
# 设置停止词
PARAMETER stop "<|im_end|>"
PARAMETER stop "<|im_start|>"
EOF
# 创建自定义模型
ollama create my-assistant -f Modelfile
# 运行自定义模型
ollama run my-assistant
import requests
import json
def chat_with_ollama(prompt, model="deepseek-r1:7b"):
"""调用 Ollama API 进行对话"""
url = "http://localhost:11434/api/chat"
payload = {
"model": model,
"messages": [
{"role": "user", "content": prompt}
],
"stream": False
}
response = requests.post(url, json=payload)
result = response.json()
return result["message"]["content"]
# 使用示例
if __name__ == "__main__":
answer = chat_with_ollama("请解释什么是机器学习?")
print(answer)
# 使用国内镜像加速(如果有的话)
# 或者手动下载模型文件后导入
# 查看下载进度
ollama pull deepseek-r1:7b --insecure
# 使用更小的量化模型
ollama pull deepseek-r1:1.5b
# 1.5B 参数,仅需 2GB 内存
# 或者在启动时限制内存
docker run -d --memory="4g" --name ollama ollama/ollama
# 检查 Ollama 是否运行
curl http://localhost:11434/api/tags
# 检查容器网络
docker network inspect bridge
# 重启服务
docker compose restart
# 更新到最新版本
ollama pull deepseek-r1:7b
# 删除旧模型
ollama rm deepseek-r1:7b
通过本指南,你已经学会了:

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online