《Windows 下 DeepSeek-R1:14B + OpenWebUI 极简部署排坑记》
—— 一个被 Docker 和 Ollama 反复摩擦的极客自白
背景
最近沉迷本地大模型,盯上了国产之光 DeepSeek-R1:14B,想用 OpenWebUI 搭个颜值在线的聊天界面。本以为 Windows 下部署是“开箱即用”,结果……呵呵,踩坑密度堪比马里奥的隐藏关卡。
坑点 1:OpenWebUI 原生部署?不存在的!
症状: 网上各种“Windows 原生部署 OpenWebUI 提升性能”的教程,试了 N 种方法(Python 虚拟环境、Node.js 魔改),要么卡在 npm install 的依赖地狱,要么启动后响应速度比树懒还慢。
真相: Windows 对 Linux 生态的工具链支持太弱(比如 ASGI 服务器优化),最终老老实实回归 Docker 部署。
解法:
# 直接拉取 OpenWebUI 官方镜像(拒绝挣扎)
docker run -d --name openwebui -p 3000:8080 --add-host=host.docker.internal:host-gateway -v openwebui:/app/backend/data --restart always ghcr.io/open-webui/open-webui:main
关键参数:
- --add-host=host.docker.internal:host-gateway:解决 Windows 容器内访问宿主机服务的 DNS 解析问题
- --restart always:避免系统重启后服务挂掉
坑点 2:Docker 服务“睡眠杀”
症状: 部署后第一天美滋滋,隔天再打开 OpenWebUI,页面空白!docker ps 显示容器还在运行,但 docker logs 无报错。
真相: Windows 的 电源管理策略 会限制后台进程资源,Docker Desktop 的 Hyper-V 虚拟机被“休眠”了。
解法:
- 禁用 Windows 休眠(管理员 PowerShell):
powercfg /h off
- 锁定 Docker 内存:
- 在 Docker Desktop 设置 → Resources → Advanced 中,固定内存为 ≥8GB(防止内存回收)
- 定时唤醒脚本(可选):
# 每10分钟访问一次服务(保持活跃)
while ($true) { Invoke-WebRequest http://localhost:3000 -UseBasicParsing; Start-Sleep -Seconds 600 }
坑点 3:Ollama 部署 DeepSeek-R1:14B 的“单线程诅咒”
症状: 用 Ollama 一键安装 deepseek-r1:14b 顺利到怀疑人生,但第二个用户访问时直接报错 model busy。
真相: Ollama 默认单线程推理,且未开放多用户 API 权限。
解法:
- 修改 Ollama 服务配置:
- 编辑 %USERPROFILE%\.ollama\config\config.json:
{
"OLLAMA_HOST": "0.0.0.0:11434", // 开放全网访问
"OLLAMA_MODELS": "C:\\Models", // 指定模型路径(避免权限问题)
"OLLAMA_NUM_PARALLEL": 2 // 允许2个并发请求
}
- 重启 Ollama 服务:
ollama serve stop
ollama serve
坑点 4:GPU 加速?默认是“战五渣”
症状: CPU 跑 14B 模型像老牛拉车,nvidia-smi 显示 GPU 在躺平。
真相: Ollama 默认用 CPU 推理,需手动开启 GPU 支持 + 配置 CUDA 依赖。
解法:
- 安装 CUDA 全家桶:
- CUDA 12.1 + cuDNN 8.9 + NVIDIA 驱动(版本 ≥535)
- 启动 Ollama 时绑定 GPU:
# 先卸载旧版 Ollama,安装 GPU 专用版本
winget uninstall Ollama
winget install Ollama --source "winget" --override "install --gpu"
- 验证 GPU 是否干活:
ollama run deepseek-r1:14b "写诗赞美显卡" | findstr "cuda"
坑点 5:其他用户:“模型去哪儿了?”
症状: 自己能看到 deepseek-r1:14b,同事访问 OpenWebUI 却提示 model not found。
真相: Ollama 默认模型存储在用户目录,其他用户无权限读取。
解法:
- 共享模型存储路径:
- 将模型文件从 %USERPROFILE%\.ollama\models 复制到 C:\OllamaModels
- 右键文件夹 → 属性 → 安全 → 添加 Everyone 读取权限
- 设置全局环境变量(管理员 PowerShell):
[System.Environment]::SetEnvironmentVariable("OLLAMA_MODELS", "C:\OllamaModels", "Machine")
- 重启 Ollama 服务:
taskkill /f /im ollama.exe
ollama serve
最终效果
- OpenWebUI 访问 http://localhost:3000,多用户同时提问无压力
- GPU 利用率稳定 90%+,推理速度提升 5 倍
- 同事:“这界面比 ChatGPT 还炫酷!”
极客总结
- Windows 下玩转 AI 的核心奥义:Docker 保平安,原生部署是条不归路
- GPU 加速的关键:CUDA 版本对齐比找对象还难,务必严格对照文档
- 权限问题万能解法:Everyone 读权限 + 环境变量全局化
- Ollama 的真香警告:多线程和模型路径配置是隐藏技能
附赠:一键复活脚本
# 保存为 restart_ai.ps1,双击运行
taskkill /f /im ollama.exe
taskkill /f /im Docker.exe
docker start openwebui
Start-Process "ollama" -ArgumentList "serve"
祝各位极客少掉头发,多薅算力!