Windows 下 DeepSeek-R1:14B + OpenWebUI 极简部署排坑记
yuyutoo 2025-05-05 19:48 9 浏览 0 评论
《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"
祝各位极客少掉头发,多薅算力!
相关推荐
- 《保卫萝卜2》安卓版大更新 壕礼助阵世界杯
-
《保卫萝卜2:极地冒险》本周不仅迎来了安卓版本的重大更新,同时将于7月4日本周五,带来“保卫萝卜2”安卓版本世界杯主题活动的火热开启,游戏更新与活动两不误。一定有玩家会问,激萌塔防到底进行了哪些更新?...
- 儿童手工折纸:胡萝卜,和孩子一起边玩边学carrot
-
1、准备两张正方形纸,一橙一绿,对折出折痕。2、橙色沿其中一条对角线如图折两三角形。3、把上面三角折平,如图。4、绿色纸折成三角形。5、再折成更小的三角形。6、再折三分之一如图。7、打开折纸,压平中间...
- 《饥荒》食物代码有哪些(饥荒最新版代码总汇食物篇)
-
饥荒游戏中,玩家们需要获取各种素材与食物,进行生存。玩家们在游戏中,进入游戏后按“~”键调出控制台使用代码,可以直接获得素材。比如胡萝卜的代码是carrot,玉米的代码是corn,南瓜的代码是pump...
- Skyscanner:帮你找到最便宜机票 订票不求人
-
你喜欢旅行吗?在合适的时间、合适的目的地,来一场说走就走的旅行?机票就是关键!Skyscanner这款免费的手机应用,在几秒钟内比较全球600多家航空公司的航班安排、价格和时刻表,帮你节省金钱和时间。...
- 小猪佩奇第二季50(小猪佩奇第二季英文版免费观看)
-
Sleepover过夜Itisnighttime.现在是晚上。...
- 我在民政局工作的那些事儿(二)(我在民政局上班)
-
时间到了1997年的秋天,经过一年多的学习和实践,我在处理结婚和离婚的事情更加的娴熟,也获得了领导的器重,所以我在处理平时的工作时也能得心应手。这一天我正在离婚处和同事闲聊,因为离婚处几天也遇不到人,...
- 夏天来了就你还没瘦?教你不节食13天瘦10斤的哥本哈根减肥法……
-
好看的人都关注江苏气象啦夏天很快就要来了你是否和苏苏一样身上的肉肉还没做好准备?真是一个悲伤的故事……下面这个哥本哈根减肥法苏苏的同事亲测有效不节食不运动不反弹大家快来一起试试看吧~DAY1...
- Pursuing global modernization for peaceful development, mutually beneficial cooperation, prosperity for all
-
AlocalworkeroperatesequipmentintheChina-EgyptTEDASuezEconomicandTradeCooperationZonei...
- Centuries-old tea road regains glory as Belt and Road cooperation deepens
-
FUZHOU/ST.PETERSBURG,Oct.2(Xinhua)--NestledinthepicturesqueWuyiMountainsinsoutheastChi...
- Ftrace function graph简介(flat function)
-
引言由于android开发的需要与systrace的普及,现在大家在进行性能与功耗分析时候,经常会用到systrace跟pefetto.而systrace就是基于内核的eventtracing来实...
- JAVA历史版本(java各版本)
-
JAVA发展1.1996年1月23日JDK1.0Java虚拟机SunClassicVM,Applet,AWT2.1997年2月19日JDK1.1JAR文件格式,JDBC,JavaBea...
- java 进化史1(java的进阶之路)
-
java从1996年1月第一个版本诞生,到2022年3月最新的java18,已经经历了27年,整整18个大的版本。很久之前有人就说java要被淘汰,但是java活到现在依然坚挺,不知道java还能活...
- 学习java第二天(java学完后能做什么)
-
#java知识#...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 《保卫萝卜2》安卓版大更新 壕礼助阵世界杯
- 儿童手工折纸:胡萝卜,和孩子一起边玩边学carrot
- 《饥荒》食物代码有哪些(饥荒最新版代码总汇食物篇)
- Skyscanner:帮你找到最便宜机票 订票不求人
- 小猪佩奇第二季50(小猪佩奇第二季英文版免费观看)
- 我在民政局工作的那些事儿(二)(我在民政局上班)
- 夏天来了就你还没瘦?教你不节食13天瘦10斤的哥本哈根减肥法……
- Pursuing global modernization for peaceful development, mutually beneficial cooperation, prosperity for all
- Centuries-old tea road regains glory as Belt and Road cooperation deepens
- 15 THE NUTCRACKERS OF NUTCRACKER LODGE (CONTINUED)胡桃夹子小屋里的胡桃夹子(续篇)
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)