本地跑大模型:Ollama + Open WebUI 一条龙部署

不是所有对话都适合发给云端 API——公司内部文档、私人笔记、还没发布的想法。本地大模型的意义就是:数据不出门。 而且跑通之后,断网也能用。

结论前置:Ollama 跑模型,Open WebUI 给界面。前者把模型权重、推理引擎、OpenAI 兼容接口打包成一个二进制;后者把接口变成一个能多用户、能传附件、能建知识库的网页。两者都是单进程,Docker 起完十分钟内可对话。

两个组件怎么配合

本地大模型的部署结构

浏览器 → Open WebUI(Docker,3000 端口)→ Ollama(11434 端口,跑模型)→ 本地模型权重。全程在你自己的机器上,没有任何一个字节出去。

操作步骤速览

本地大模型部署步骤

一、装 Ollama 并拉模型

步骤 1:安装 Ollama 并拉模型

curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen2.5:7b
ollama run qwen2.5:7b

能对话就说明 OK。ollama list 看已下载的模型,ollama rm 名字 删掉不用的(权重很占盘)。

几个常用型号的定位:

模型 体量 适合
qwen2.5:7b ~4.7 GB 中文写作、日常问答,首选入门
llama3.1:8b ~4.7 GB 英文任务、通用对话
deepseek-r1:7b ~4.7 GB 有推理链的数学/代码题
qwen2.5:14b ~9 GB 明显更聪明,需要 12G+ 显存

二、Docker 起 Open WebUI

步骤 2:Docker 启动 Open WebUI

docker run -d --restart=always \
  -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  ghcr.io/open-webui/open-webui:main

--add-host 那行是让容器能访问宿主机上的 Ollama(Linux 上必需,macOS/Windows 自带 host.docker.internal)。起来后访问 http://你的IP:3000,注册第一个账号(第一个用户自动是管理员),在设置里把 Ollama 地址填 http://host.docker.internal:11434 即可。

三、模型选型:先看显存/内存

步骤 3:按硬件选模型

跑不跑得动,取决于模型量化后的体积:

模型规模 大致内存占用 适合硬件 典型速度(GPU)
3B 3–4 GB 轻量笔记本 40+ tok/s
7B 5–8 GB 主流独显 / 16G 内存 25–45 tok/s
14B 10–16 GB 12G+ 显存 15–25 tok/s
32B+ 24 GB+ 专业卡 / 多卡 5–12 tok/s

经验值:显存不够会自动走 CPU,速度掉一个数量级(7B 在 CPU 上大约 3–6 tok/s)。宁可跑小模型跑得顺,别硬上大模型卡成幻灯片。

想量化得更省,用显式标签:ollama pull qwen2.5:7b-instruct-q4_K_M。Q4_K_M 是质量与体积的甜点,往下 Q3 掉质量明显,往上 Q8 体积近乎翻倍。

想让容器里的 Ollama 用上显卡,得装 NVIDIA Container Toolkit,并把容器用 --gpus all 起:

docker run -d --gpus all --name ollama -p 11434:11434 -v ollama:/root/.ollama ollama/ollama

跑 docker exec ollama nvidia-smi 能列出显卡,才算真用上了。

四、几个实用配置

步骤 4:把模型挪到数据盘

  • 换模型存储路径:模型默认下在系统盘,很容易撑爆。设 OLLAMA_MODELS=/data/ollama 挪到数据盘。
  • 放宽上下文:Ollama 默认 num_ctx=2048,长文档会被截断。启动时加 -e OLLAMA_CONTEXT_LENGTH=8192。
  • 对外访问:默认 Ollama 只监听 127.0.0.1。要暴露 0.0.0.0,先确认防火墙和 Open WebUI 的登录都没问题。
  • 接 API:两者都提供 OpenAI 兼容接口(Ollama 在 /v1),你自己的脚本、其他支持自定义 BASE_URL 的客户端都能直接指向它。

五个常见的坑

  • 容器连不上 Ollama:Linux 上忘了 --add-host=host.docker.internal:host-gateway,容器里的 host.docker.internal 解析不了。
  • 回答被莫名截断:多半是 num_ctx 太小,长文请在 Open WebUI 的模型参数里把上下文调大。
  • 磁盘一夜少了几十 G:每个模型动辄数 GB,ollama list 定期清理,或把 OLLAMA_MODELS 指到数据盘。
  • 拉模型卡在 0%:官方源在国内偏慢,可用镜像站或挂代理;别反复重试,先看是不是网络问题。
  • 以为装了就有 GPU 加速:裸装 Ollama 在容器场景未必拿到显卡,用 nvidia-smi 验证。

五、实测:7B 模型的真实速度

口碑数据不如自己测。我在三种硬件上跑 qwen2.5:7b(Q4_K_M 量化),用同一段 300 字的提示让它续写,记录生成速度:

硬件 推理设备 生成速度 体感
RTX 3060 12G 全量 GPU 38 tok/s 打字机般流畅
RTX 2060 6G 部分卸载 12 tok/s 略慢但可用
4C8G 纯 CPU CPU 4 tok/s 一句话要等半天

结论:能不能用得舒服,分水岭就在"模型是否完全装进显存"。部分卸载(模型一部分在 GPU、一部分在内存)会让速度断崖式下跌。预算有限时,宁可选 7B 全装进显存,也别选 14B 硬挤。

提示处理(prompt 部分)通常比生成快 5–10 倍,所以第一次提问前的"思考停顿"主要花在处理长上下文上,而不是生成。

六、和云端 API 的取舍

维度 本地 Ollama 云端 API
隐私 数据不出机器 内容经过第三方
成本 一次性硬件 + 电费 按量计费,用得多更贵
能力上限 受显存限制(一般 ≤32B) 顶级模型随时可用
离线可用 是 否
维护 自己管升级与显卡驱动 无

现实做法是混用:日常草稿、敏感内容走本地,需要高质量输出的关键时刻再调云端。这套配置最大的意义,是让你在"数据出门"这件事上有的选。

FAQ

Q:本地 7B 和云端大模型差多少?
差在"最难的那部分"。日常整理、摘要、离线写作,7B 已经好用;复杂推理、长链路编程,云端仍明显更强。本地是补位,不是替换。

Q:没独显、只有 CPU 能用吗?
能,但慢。3B 模型在 CPU 上勉强可用;7B 以上基本等于"能跑但不想用"。有核显的 Mac / 新 Intel 芯片体验会好不少。

Q:多个人一起用会不会卡?
会。单张消费级显卡并发两三个请求就开始排队。家庭/小团队够用,别当生产集群。

Q:数据真的一点都不出门?
装好之后是。但拉模型那一步是联网的——权重从 Ollama 官方源下载。下完断网也能跑,这正是它和云端的本质区别。

Q:为什么同一个模型不同人跑出来速度差很多?
主要看三件事:显卡型号、模型量化等级(Q4 还是 Q8)、以及并发数量。别人报 40 tok/s,你只有 8 tok/s,先查是不是没走 GPU(nvidia-smi 看显存占用),再查量化标签是不是选重了。

发布前自查

  • [ ] ollama run 能正常对话
  • [ ] Open WebUI 能连上 Ollama 并列出模型
  • [ ] 至少跑过一次长文本,确认没被 num_ctx 截断
  • [ ] 模型目录已挪到有空间的数据盘
  • [ ] 若要外网访问,登录与防火墙都已确认

小结

本地大模型的定位不是替代云端最强模型,而是在隐私和成本之间给你一个不需要联网的选项。文档整理、笔记问答、离线写作,7B 模型已经够用得好。全部成本就是一点硬盘和电费。

常见问题

本地模型能替代云端大模型吗?

定位不同。本地模型解决的是隐私和离线问题,7B–14B 级别应付文档整理、笔记问答、离线写作已经够用;追求最强推理能力仍需云端。

显存不够会怎样?

会自动退到 CPU 推理,速度掉一个数量级。宁可跑小模型跑得顺,也别硬上大模型卡成幻灯片。

相关阅读

上一篇 Nginx 反向代理 + Let's Encrypt 证书自动续期实战
下一篇 青龙面板 Docker 部署实战:定时任务面板从零到自动签到(2026)