简介:这是一份围绕 Windows 11 使用 Ollama 本地部署 DeepSeek-R1 的操作指南,定位清晰,适合希望摆脱云端依赖、增强数据隐私并降低响应延迟的开发者、运维人员及 AI 应用爱好者。文档从硬件选型与软件准备讲起,明确给出多核 CPU、NVIDIA CUDA 显卡、16GB 以上内存及 20GB 磁盘等建议,随后逐步演示 Ollama 服务启动、deepseek-r1 模型拉取与验证、命令行交互运行,并延伸介绍 REST API 调用方法、Modelfile 自定义参数和常见故障排查思路,如网络失败、运行缓慢、端口占用等,让不同水平的读者都能按步骤完成部署并处理典型问题。资源包共 1 个 PDF 文件,压缩后大小仅 264KB,内容精炼、结构清晰,适合作为本地大模型部署的随身参考资料。目前已有 4341 人学习浏览,对希望快速体验 DeepSeek-R1 的初学者和需要本地化部署的进阶用户均有直接价值。
1. 先在 Win11 上把 Ollama 和 DeepSeek-R1 的关系理清
把 DeepSeek-R1 跑在本地这件事,听起来就是“装个软件、拉个模型”,可真在 Windows 11 上操作过的开发者都知道,翻车点从来不在双击安装包那一下,而在后面的网络拉取、端口占用、显存不生效这些环节。Ollama 的价值在于把模型管理、服务托管和 API 交互打包成了一个本地工具,DeepSeek-R1 则是跑在它上面的模型本体,两者配合起来,你不需要手工搭建 Python 推理环境,也不用理解量化权重这些底层细节。
我帮某位同事装过一套,他的机器是 16GB 内存、无独立显卡的笔记本,结果卡在“ollama run 之后风扇狂转十几分钟才蹦出第一个字”这一步。后来换了台带 NVIDIA GPU 的机器,同一套命令几十秒就有响应。这个对比说明一个问题:Ollama 部署本身不难,难在装之前没想清楚硬件能不能扛住。本文就是按照我现在装机的顺序写的,从硬件评估、安装配置、拉取模型到排错验证,每一步都是踩过坑之后留下的可复现做法,适合准备在 Win11 上跑本地大模型的开发者照着走一遍。
2. 部署前的硬件评估:先弄清楚 16GB 内存和 SSD 到底有多关键
2.1 硬件门槛:CPU、GPU、内存、存储逐项核对
Ollama 在 Windows 上跑 DeepSeek-R1,本质是把模型权重加载进内存,然后通过 CPU 或 GPU 做推理。模型一次推理需要把整个权重矩阵读一遍,所以内存容量和带宽直接决定了能不能跑、跑多快。我一般这样核对硬件:CPU 尽量多核,4 核以下的机器跑大模型会明显吃力,原文建议的酷睿 i7 或锐龙 7 是舒适区间;GPU 方面,有 NVIDIA 显卡且支持 CUDA 是最好的加速手段,RTX 30 系及以上在 Ollama 里能直接被识别为推理设备;内存 16GB 是底线,32GB 才能让模型和系统其他程序共存时不至于疯狂换页;存储至少预留 20GB,模型文件本身不小,SSD 的随机读取速度直接影响模型加载进内存的时间。
| 硬件项 | 基本要求 | 我的实际建议 |
|---|---|---|
| CPU | 多核处理器,i7 / 锐龙7 级别 | 核心数比主频更重要,Ollama 在 CPU 推理时吃多核并行 |
| GPU | NVIDIA + CUDA,RTX 30 系或更高 | 没有独显也能跑,但速度会差一个量级 |
| 内存 | 16GB 起 | 32GB 体验明显更好,模型常驻内存 |
| 存储 | 20GB 可用空间 | 优先 SSD,机械硬盘加载模型会慢很多 |
2.2 安装前先做一次硬件背景调查
很多人装完 Ollama 才打开任务管理器看配置,其实在三分钟就能把该确认的全确认完。我习惯在装任何东西之前先跑一组 PowerShell 命令,把 GPU、内存和磁盘类型摸清楚:
nvidia-smi Get-CimInstance Win32_ComputerSystem | Select-Object Manufacturer, TotalPhysicalMemory Get-PhysicalDisk | Select-Object FriendlyName, MediaType第一条nvidia-smi如果没有输出,说明当前机器没有可用的 NVIDIA 驱动或显卡,后续 Ollama 会退回 CPU 模式;第二条看内存总量,单位是字节,除以 1024 三次才是 GB;第三条看磁盘是不是 SSD。这样做的意义在于提前知道瓶颈在哪,而不是等ollama run卡住再回头查配置。
2.3 软件环境:Win11 更新和 Ollama 安装包
软件侧的要求很轻,Win11 保持系统更新到最新,主要是避免新版本 Ollama 依赖的系统组件缺失。Ollama 本身是跨平台工具,Windows 版是一个安装包,双击按向导安装即可。需要注意的一点是:Ollama 的 Windows 版会在用户目录下创建模型存储目录,如果 C 盘空间紧张,安装完成后最好把模型目录迁到其他盘,这个我在第 3 章会单独说。软件层面不需要额外安装 Python 或 CUDA 工具包,Ollama 自带运行时,这一点比裸跑大模型省心很多。
3. 安装 Ollama 并启动服务:从下载到让 11434 端口常驻
3.1 下载安装包与首次启动
从 Ollama 官网下载 Windows 安装包,双击执行,一路下一步。安装完成后桌面和开始菜单会出现 Ollama 图标,第一次打开时系统托盘会多出一个小图标,这就是 Ollama 的后台服务管理入口。Windows 版和 Linux 版不一样的地方在于:Linux 上你要自己跑ollama serve,Windows 上安装包已经把服务托管给了后台程序,不需要每次开机手动启动。
验证安装是否成功,打开 PowerShell 执行:
ollama -v正常会输出 Ollama 的版本号。如果提示“无法识别命令”,多半是安装时没有把 Ollama 写入系统 PATH,注销重登或重启系统后再试。确认命令可用后,再验证服务端口是否已经在监听:
curl.exe http://localhost:11434/api/version返回一段 JSON,比如{"version":"..."},说明服务已经正常启动。这里特意用curl.exe而不是curl,是因为 PowerShell 里curl是Invoke-WebRequest的别名,参数格式完全不同,用curl.exe才能调用 Windows 自带的原生 curl 工具。
3.2 不要手动重复执行 ollama serve
我第一次在 Windows 上装 Ollama 时犯过一个错误:照着文档敲了ollama serve,结果终端直接报错,提示 11434 端口被占用。后来才发现 Windows 版的后台服务已经占用了这个端口,再手动启一个自然冲突。正确做法是确认托盘里的 Ollama 图标存在即可,把它当成一个常驻服务,不再手动执行ollama serve。
如果确实需要手动控制服务生命周期,通过托盘图标退出和重启就好。注意模型在首次请求时会加载进内存,之后一直驻留直到空闲超时,所以即使你不开任何客户端,托盘服务也会占一定的内存,这属于正常现象。
3.3 模型存储路径:用 OLLAMA_MODELS 换盘
Ollama 默认把模型文件放在用户目录.ollama\models下,C 盘空间紧的机器很快会被模型体积追平。调整存储位置的方案是设置用户环境变量OLLAMA_MODELS,指向你希望存放模型的目录。步骤是:在 Windows 搜索框输入“编辑系统环境变量”打开设置 → 用户变量里新建一个变量 → 变量名填OLLAMA_MODELS,变量值填目标路径比如D:\ollama\models→ 确认后重启 Ollama 托盘程序。
改完之后重新拉取的模型会落在新目录,原有模型不会被自动迁移。如果你已经拉过模型,需要手动把旧目录里的内容复制到新路径,或者干脆删掉重新拉。Windows 环境变量修改后需要重开终端才会生效,这个点我踩过,写在这里提醒一句。
4. 拉取并运行 DeepSeek-R1:命令行交互和 REST API 双通道
4.1 拉取模型:ollama pull 的进度观察
服务就绪后,第一步是把 DeepSeek-R1 的模型权重拉到本地。在普通终端窗口执行:
ollama pull deepseek-r1执行后你会看到进度条和下载速度,模型体积取决于你拉取的默认档位,耗时由网络带宽决定。Ollama 支持断点续传,如果中途网络断了,重新执行同一命令会从断点继续,不会从头下载。如果进度条长时间停留在 0%,且终端没有任何报错,大概率是网络到模型仓库的连接不稳定,这时候我会先让终端多等一会儿,再不行就检查网络或换个 DNS 重试。
拉取完成后用ollama list确认模型已存在:
ollama list输出列表里出现deepseek-r1及其体积信息,说明模型文件已经落到本地。想了解模型的更多细节,可以执行ollama show deepseek-r1查看参数规模、上下文长度等元信息。
4.2 用 ollama run 跑通第一次问答
ollama run是进入交互对话的入口,有两种用法。第一种是直接携带提示词,执行完退出:
ollama run deepseek-r1 "写一个 Python 快速排序函数"第二种是不带提示词直接进入对话模式,适合连续多轮提问:
ollama run deepseek-r1进入对话后终端会出现提示符,直接输入问题回车即可。多轮对话过程中,Ollama 会保留上下文窗口内之前的对话内容。输入/bye退出对话。如果想让模型停止当前生成但不退出对话,按Ctrl+C即可。
4.3 通过 REST API 对接:Python 调用示例
命令行适合快速体验,但真正要把模型集成到应用里,走 REST API 才是正路。Ollama 服务默认监听 11434 端口,提供生成和对话两类接口。我常用的调用方式是通过 Python 的 requests 库写脚本:
import requests data = { "model": "deepseek-r1", "prompt": "用 50 个字解释什么是递归", "stream": False } response = requests.post( "http://localhost:11434/api/generate", json=data, timeout=120 ) print(response.json()["response"])代码里有几个关键点值得说。model字段对应你ollama list里看到的模型名;stream默认是真,会把响应切成一段段流式返回,调用方直接用response.json()解析会报 JSON 解析错误,所以显式设成False;timeout=120是防止模型冷启动时首字延迟过长导致请求被挂断。如果你更习惯命令行验证,也可以用 Windows 自带的 curl:
curl.exe -X POST http://localhost:11434/api/generate -d "{\"model\": \"deepseek-r1\", \"prompt\": \"你好\", \"stream\": false}"Ollama 还提供了/api/chat接口,请求体里用messages数组传对话历史,适合接聊天机器人这一类场景。这两个接口的本质区别在于一个是单轮补全,一个是多轮对话格式,按你的客户端需求选一个就行。
4.4 用 Modelfile 自定义模型参数
Ollama 允许通过 Modelfile 文件派生自定义模型配置。我的做法是新建一个文本文件,写入以下内容:
FROM deepseek-r1 PARAMETER temperature 0.7 PARAMETER top_p 0.8FROM指定基础模型,PARAMETER覆盖默认生成参数。temperature控制输出的随机性,值越大结果越发散,0.7 是通用场景下比较稳的值;top_p控制候选词的累积概率范围,0.8 意味着只从概率累计到 80% 的词里采样。文件保存后,在命令行里执行:
ollama create my-deepseek-r1-custom -f Modelfile-f指向 Modelfile 文件路径。构建完成后,用ollama list会看到多了一个名为my-deepseek-r1-custom的模型,运行方式跟基础模型一致:
ollama run my-deepseek-r1-custom如果你想验证参数是否真的生效,执行ollama show my-deepseek-r1-custom,输出里能看到该模型特定的参数字段。这里有个习惯我建议养成:自定义模型名不要用中文字符,Windows 终端下偶发编码问题,纯英文名最省事。
5. 避坑指南:拉取失败、端口占用与 API 返回异常的三类排错
5.1 模型拉不动:0% 卡住和网络波动
现象是执行ollama pull deepseek-r1后进度条长时间停在 0%,终端不报错但也不动,过几分钟后直接失败退出。这种情况我遇到过不止一次,原因基本是本地网络到模型仓库的连接不稳定,或者 DNS 解析不到正确的下载节点。
解决的路径是:先保持终端窗口挂着,Ollama 的拉取命令内置了重试机制,有时等一两分钟会自己恢复;确认真的失败后再排查网络,试试切换到手机热点这种不同的网络环境;如果网络本身正常,可以改一下 DNS 配置再重试。拉取支持断点续传,重复执行不会丢掉已下载的部分,这一点可以放心。
5.2 端口 11434 被占用:重复启动和进程冲突
现象是执行ollama serve时报错,提示监听端口失败,或某个服务无法访问 API。这个问题有两大来源:一是 Windows 版 Ollama 托盘程序已经启动服务,你又手动执行了一遍ollama serve导致端口冲突;二是 11434 被其他程序占用。排查命令是:
netstat -ano | findstr :11434输出最后一列是占用端口的进程 PID,在任务管理器里按 PID 找到对应进程,确认是不是 Ollama 的后台进程。如果是自己重复启动造成的,直接关掉手动执行的那次,保留托盘服务即可;如果是其他程序占用,可以结束该进程,或者通过设置环境变量OLLAMA_HOST改监听地址。需要注意环境变量改动后要重启 Ollama 才生效。
5.3 生成慢和 API 报错:GPU 未生效与 stream 参数
现象一是有 NVIDIA 显卡但生成速度依然很慢,任务管理器里 GPU 利用率接近 0%,CPU 却跑满。原因基本是显卡驱动版本过旧,Ollama 无法通过 CUDA 调用 GPU。解决步骤是跑nvidia-smi看驱动版本和 CUDA 版本,到显卡官网更新驱动后,完全退出 Ollama 托盘程序再重启。更新驱动这一步不需要重装 Ollama,服务重新拉起时会自动重新检测硬件。
现象二是 Python 调用/api/generate时,response.json()抛出 JSON 解析错误。原因是请求体没有设置stream: false,接口默认返回的是流式分块数据,每一块是独立的 JSON 片段,整体不是合法的 JSON 文档。解决方式在前面已经提到:请求体里显式加上"stream": false。如果确实需要流式响应,那就不要用response.json(),改成按行读取响应体并解析每行携带data:前缀的 JSON。还有一种常见情况是首次调用模型需要把权重加载进内存,响应延迟可能在几十秒级别,请求超时时间要放宽,timeout 设 30 秒以上比较稳。
6. 部署完成的验证路径:先测服务、再测 API、最后测交互
安装完不是结束,跑通一次完整链路才算部署完成。我每次装完 Ollama 都会固定走三条验证命令。第一条确认服务健康:
curl.exe http://localhost:11434/api/version有 JSON 返回说明服务在监听。第二条确认模型本体和加载状态:
ollama list ollama psollama list看模型是否在本地,ollama ps看模型是否已经加载进内存。刚拉完的模型不会常驻,ollama ps可能为空,属正常,跑一次提问后它就会出现在列表里。
第三条是完整交互验证,执行ollama run deepseek-r1或 API 调用,记录第一次生成响应的耗时。我在实际部署验收时会用这个判断基准做参考:
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| 服务健康 | curl.exe http://localhost:11434/api/version | 返回 JSON 版本信息 |
| 模型存在 | ollama list | 列表含 deepseek-r1 |
| 模型加载 | ollama ps | 提问后出现 deepseek-r1 |
| 生成闭环 | ollama run deepseek-r1 "你好" | 有限时间内返回文本 |
验证通过后,我会顺手做一件事:打开任务管理器,看重负载下内存占用和 GPU 利用率。如果 GPU 利用率在生成期间有明显波动,说明加速生效;如果一直是 0%,回头查驱动。从那以后我每次在一台新机器上装完 Ollama,都会先把ollama ps的结果确认一遍再谈后续的客户端对接。希望帮到你。
本文还有配套的精品资源,点击获取