不是所有对话都适合发给云端 API——公司内部文档、私人笔记、还没发布的想法。本地大模型的意义就是:数据不出门。 而且跑通之后,断网也能用。
结论前置:Ollama 跑模型,Open WebUI 给界面。前者把模型权重、推理引擎、OpenAI 兼容接口打包成一个二进制;后者把接口变成一个能多用户、能传附件、能建知识库的网页。两者都是单进程,Docker 起完十分钟内可对话。
两个组件怎么配合

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

一、装 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

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 即可。
三、模型选型:先看显存/内存

跑不跑得动,取决于模型量化后的体积:
| 模型规模 | 大致内存占用 | 适合硬件 | 典型速度(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 能列出显卡,才算真用上了。
四、几个实用配置

- 换模型存储路径:模型默认下在系统盘,很容易撑爆。设
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 推理,速度掉一个数量级。宁可跑小模型跑得顺,也别硬上大模型卡成幻灯片。