DeepSeek本地部署:Ollama选型、显存调参与验收排错 简介这份PDF面向希望把DeepSeek模型落地到本地环境的开发者、初学者及具备一定硬件基础的专业人士围绕低、中、高三档硬件配置给出选型建议并讲解Ollama、Python、CUDA等工具的获取、安装与验证方法帮助读者解决本地部署中的环境准备、模型选择、运行测试和故障排查问题。压缩包内共1个PDF文件大小约559KB以图文操作指南和命令行示例呈现便于按流程查阅。已有1153人学习下载。内容覆盖DeepSeek-R1-1.5B、7B、32B三款模型的功能特点与适用场景说明模型下载时的磁盘空间预留和网络连接注意事项并引导完成交互界面对话测试介绍Chatbox AI、LM Studio等个性化界面的选择与使用最后汇总常见问题与排障技巧可作为从硬件评估到应用拓展的实操参考。1. 从一台 8GB 内存的办公本说起DeepSeek 本地部署先别急着敲 run上周有台办公本8GB 内存、核显、C 盘还剩 40GB开机第一件事就是ollama run deepseek-r1:32b。风扇转了一刻钟终端光标闪了半天没吐出一个字最后抛出一句内存不足。DeepSeek 本地部署和模型安装这件事卡人的从来不是敲哪条命令而是装之前的三个判断这台机器该拉哪个版本、模型文件会落到哪个盘、跑起来到底是 GPU 在算还是 CPU 在硬扛。本地跑大模型在自然语言处理和代码生成上的吸引力很直接——对话内容、项目源码、内部文档都不出本机。但换个版本号体验就是天壤之别同一个模型1.5B 在核显本上能流畅问答32B 在 16GB 内存的机器上连加载都过不去。这篇记录按「量硬件 → 装 Ollama → 拉模型调参 → 接界面 → 排错 → 验收」的顺序走一遍硬件中等、想在自己机器上把 AI 模型部署跑通的开发者照着抄就行。2. 装前量硬件1.5B / 7B / 32B 三档版本与显存账单2.1 三个版本各自吃什么资源同一个 DeepSeek-R1 系列参数量差一个数量级硬件门槛差的不止一个数量级。下面这张表是我自己装机时对着填的磁盘占用按量化后的文件大小估显存按「整份权重能全放进显存」算放不进去就会有一部分卸载到内存里跑速度会掉一个档。模型版本磁盘占用约全 GPU 运行建议显存建议内存能干什么deepseek-r1:1.5b12GB核显可跑独显 2GB 起8GB日常问答、短文本摘要、简单改写deepseek-r1:7b5GB 上下68GB16GB文章润色、中等长度代码生成、多轮对话deepseek-r1:32b20GB 以上16GB 以上或接受部分卸载32GB长文深度分析、复杂代码调试显存这一栏不是拍脑袋定的。模型权重之外还要留出 KV Cache上下文长度num_ctx开得越大这部分吃得越多。7B 的量化文件 5GBnum_ctx给到 8192实际占用会摸到 6GB 往上同一张 6GB 显存的卡num_ctx设 2048 能跑满 GPU设 16384 就会被迫往内存里丢层出字速度肉眼可见地掉。所以选版本的正确顺序是反的先看显存和内存能给多少再倒推能拉到多大的模型。手里是 8GB 内存的老笔记本别犹豫1.5B 就是对的选择16GB 内存加一张 8GB 显存的卡7B 是甜点只有 32GB 内存起步、显存 16GB 以上32B 才值得折腾。提示显存刚好卡在门槛上时优先降num_ctx而不是降模型版本。上下文从 8192 降到 4096省下来的显存往往够让整份权重留在 GPU 里比换小模型划算。2.2 三分钟摸清自己机器的底牌装之前先花三分钟把家底摸清比装完再返工省事得多。Windows 上最省事的办法是直接看任务管理器「性能 → GPU」那里显示的「专用 GPU 内存」就是显存不要信 PowerShell 里Win32_VideoController的AdapterRAM那个字段是 32 位整数4GB 以上的卡会溢出一个离谱的数字。有独显的机器一条命令看全# Windows / Linux 通用前提是装了显卡驱动 nvidia-smi这条命令输出三样关键信息显存总量MiB那一列、当前驱动版本、以及右上角CUDA Version显示的驱动支持上限。这个上限不是让你照着去装 CUDA Toolkit后面第 4 章会讲清楚为什么。macOS 和 Linux 各有各的看法# macOS看显卡型号与显存 system_profiler SPDisplaysDataType | grep -i -E chipset|vram # Linux看显卡、内存、磁盘剩余 lspci | grep -i vga free -h df -hfree -h看的是物理内存注意别把 swap 算进去模型加载时吃的是实打实的内存。df -h看的是挂载点剩余空间这一步经常被跳过结果拉到 60% 提示磁盘不足。2.3 磁盘预留与默认模型目录的位置Ollama 默认把模型放在用户目录下三个系统各不一样Windows%USERPROFILE%\.ollama\modelsmacOS~/.ollama/modelsLinux/usr/share/ollama/.ollama/models这意味着一台 256GB 固态、C 盘只剩 30GB 的笔记本拉 32B 一定会失败。我的习惯是装完 Ollama 第一件事就改模型目录改到 D 盘或者一块独立的数据盘预留空间按「当前要拉的模型 以后可能再拉两个」算32B 起步就留 60GB。这个目录里装的是两类文件blobs放模型权重分片manifests放版本索引。迁移已有模型的时候两个目录都要拷只拷blobs会出现ollama list里有名字、run的时候报找不到层的情况。3. 安装 OllamaWindows、macOS、Linux 三条路径与目录迁移3.1 Windows 与 macOS 的图形化安装Ollama 在 Windows 上的安装包是个常规 exe双击、下一步、可选安装路径全程不需要管理员权限因为它默认装在当前用户目录下。装完托盘区会出现一个羊驼图标这就是服务在后台跑起来的标志。macOS 拿到的是 dmg打开后把图标拖进「应用程序」文件夹。首次启动系统会弹一次「是否允许打开」允许之后托盘出现图标即算装好。两个系统都有一个共同的坑装完之后不要在有图标的终端里直接敲命令。Windows 上装完会新开一个终端窗口如果是在装之前就开着的 PowerShell 里敲ollama -v很可能提示「不是内部或外部命令」因为那个进程的 PATH 还是旧的。解决办法简单关掉重开一个窗口。3.2 Linux 脚本安装与 systemd 服务管理Linux 上官方给的是一条脚本# 下载并执行安装脚本脚本内部会完成用户创建、二进制放置、服务注册 curl -fsSL https://ollama.com/install.sh | sh这条脚本做的事比看上去多创建ollama系统用户、把二进制放到/usr/local/bin、注册一个 systemd 服务并立即启动、顺带检测显卡并装上对应的运行库。所以装完之后不需要手动ollama serve服务已经在后台跑了。想确认服务状态# 查看服务是否 active (running) systemctl status ollama # 查看服务日志排查启动失败时最有用 journalctl -u ollama -n 50 --no-pagerjournalctl这条在排查「装完了但端口没起来」的时候特别有用日志里通常会直接写明是权限问题还是显存初始化失败。注意Linux 下用脚本安装的 Ollama 是系统服务用sudo手动跑ollama serve会和已有服务抢 11434 端口报address already in use。要么停服务要么别手动起。3.3 装完必须过的三道验证安装完成的判定标准有三层一层层过# 第一层命令能调起来能看到版本号 ollama -v # 第二层HTTP 服务在监听返回 Ollama is running curl http://localhost:11434 # 第三层确认端口确实被占用Windows netstat -ano | findstr 11434 # 第三层Linux / macOS ss -lntp | grep 11434第一层过不了说明 PATH 没生效回去看安装路径有没有进环境变量。第二层过不了但第一层过了说明后台服务没起来Windows 上看托盘图标Linux 上看systemctl status ollama。第三层能看到监听地址默认应该是127.0.0.1:11434如果是0.0.0.0:11434说明有人改过OLLAMA_HOST这时候同网段的其他机器也能访问到公网机器上要留意这一点。3.4 把模型目录从系统盘挪走这一步放在拉模型之前做顺序反了就得把几十 GB 的文件再搬一次。Windows 的做法是加系统环境变量Win R输入sysdm.cpl→ 高级 → 环境变量 → 新建用户变量OLLAMA_MODELS值填D:\ollama\models。建完必须做一件事——在托盘图标上右键退出 Ollama再重新打开。只关窗口不退出进程新变量不会生效ollama list里还是旧目录的内容。Linux 用 systemd 的 override 机制不要直接改/etc/systemd/system/ollama.service升级的时候会被覆盖# 生成 override 文件编辑器里填内容 sudo systemctl edit ollama.service在弹出的编辑器里写入[Service] # 模型存储目录换成你自己的数据盘路径 EnvironmentOLLAMA_MODELS/data/ollama/models # 只监听本机避免同网段其他机器直连 EnvironmentOLLAMA_HOST127.0.0.1:11434 # 模型在显存里驻留时长默认 5 分钟调大可以减少反复加载 EnvironmentOLLAMA_KEEP_ALIVE30m保存后重载并重启# 重载 unit 配置并重启服务 sudo systemctl daemon-reload sudo systemctl restart ollama # 确认环境变量已注入进程 sudo systemctl show ollama | grep -i environmentmacOS 稍微绕一点图形界面启动的 App 读不到 shell 里的环境变量常见做法是用launchctl# 设置当前登录会话的环境变量之后从启动台打开 Ollama 才会生效 launchctl setenv OLLAMA_MODELS /Users/yourname/ollama-models # 确认写入成功 launchctl getenv OLLAMA_MODELS这条命令的局限是重启电脑后失效。要长期生效得写一个 LaunchAgent 的 plist或者干脆把模型目录做成软链接指向数据盘上的实际位置。4. 拉模型与调参ollama run 之后的 Modelfile 与接口4.1 pull、run、list、ps 四个命令的分工很多人第一次装完只知道ollama run其实四个命令各有各的位置# 只下载不启动适合提前把模型备好 ollama pull deepseek-r1:7b # 下载并进入交互式对话没下过会自动先下 ollama run deepseek-r1:7b # 列出本地已有的模型及大小 ollama list # 查看当前加载在内存/显存里的模型以及卸载状态 ollama psollama list的输出里有个SIZE列这个数值和磁盘上实际占用对得上可以拿来核对磁盘预留够不够。ollama ps是最容易被忽略但最该常用的一个它会告诉你模型是不是还在显存里、什么时候会被卸载、以及最关键的那一列PROCESSORNAME ID SIZE PROCESSOR UNTIL deepseek-r1:7b e3f9a1c2b7d4 5.2 GB 100% GPU 29 minutes from now100% GPU说明整份权重都在显卡上速度最快100% CPU说明完全靠 CPU 硬算出现35%/65% CPU/GPU这种百分比说明显存装不下卸载了一部分到内存。看到第三种先别急着换卡按 4.3 的思路调。提示模型默认在闲置 5 分钟后从显存卸载下一次提问又要重新加载7B 大约要十几秒。频繁用的话把OLLAMA_KEEP_ALIVE调到30m甚至-1常驻体验差别很明显。4.2 用 Modelfile 固化 temperature 与 top_p命令行里每次都要手动调参数很烦Modelfile 就是把这套配置固化成一个新模型标签的办法。它的语法和 Dockerfile 很像# 基于已下载的 7B 模型派生 FROM deepseek-r1:7b # 温度0.2 偏严谨适合问答和代码0.8 偏发散适合创意文本 PARAMETER temperature 0.3 # 核采样越小越保守越大越发散一般和 temperature 二选一重点调 PARAMETER top_p 0.9 # 上下文窗口越大越能装长文档但 KV Cache 吃显存 PARAMETER num_ctx 8192 # 重复惩罚大于 1 抑制复读写长文时给 1.1 比较稳 PARAMETER repeat_penalty 1.1 # 系统提示词固定角色和输出格式 SYSTEM 你是一名严谨的技术助理回答代码问题时先给可运行的最小示例再解释关键参数。写好后创建并运行# 在 Modelfile 所在目录执行-f 指向文件名 ollama create deepseek-r1-7b-dev -f ./Modelfile # 用新标签启动参数已固化 ollama run deepseek-r1-7b-devtemperature和top_p这两个参数的取舍我的经验是代码补全和日志分析这类要确定性的任务temperature给 0.20.3top_p给 0.9输出几乎不会跑偏写文案、想标题这类要发散的任务temperature提到 0.8top_p放宽到 0.95能出一些意想不到的表述。两个参数同时开很高会让输出变得难以控制一般只重点调其中一个。num_ctx是显存杀手也是最值得单独设的一项。7B 模型把num_ctx从 2048 提到 8192显存多占一到两个 GB但只要还装得下处理长文档的能力就差了一大截。判断依据还是ollama ps改完跑一次看PROCESSOR列有没有掉出100% GPU。4.3 GPU 到底吃上了没有这一步是本地部署里玄学最多的地方。先明确一个常见误解用 Ollama 跑模型不需要单独安装 CUDA Toolkit。Ollama 的安装包里已经带了推理所需的运行库只要显卡驱动正常、nvidia-smi能认到卡它就会自动走 GPU。装 CUDA Toolkit 是为了自己写 Python 脚本、跑 PyTorch 这类场景和 Ollama 本身是两回事。我见过有人为了跑 7B花两小时装了一个版本对不上的 Toolkit最后把驱动搞崩了。真有需要装 Toolkit 的情况比如要做二次开发版本对位关系看nvidia-smi右上角那个数字装的 Toolkit 版本不能高于它然后用nvcc -V验证# 查看已安装的 CUDA Toolkit 版本 nvcc -V # 查看驱动版本与驱动支持的最高 CUDA 版本 nvidia-smi如果ollama ps显示的全是 CPU按这个顺序排查nvidia-smi能不能正常输出驱动没装好输出会报错→ 显存是不是真不够看SIZE列和显存总量的对比→ 是不是装过多个版本的 Ollama 冲突。前两条占九成。还有一种情况是笔记本双显卡独显被系统电源策略挂起了。插上电源、在系统设置里把 Ollama 指定为「高性能 GPU」运行很多时候问题就没了。4.4 把模型挂成 HTTP 接口Ollama 起来之后本身就是个 HTTP 服务11434端口上暴露了几个接口把本地模型当 API 用是最实用的拓展方式。# 单轮生成prompt 进response 出 curl http://127.0.0.1:11434/api/generate -d { model: deepseek-r1:7b, prompt: 用一句话解释什么是 KV Cache, stream: false } # 多轮对话messages 数组带角色 curl http://127.0.0.1:11434/api/chat -d { model: deepseek-r1:7b, messages: [ {role: system, content: 你是一名运维工程师}, {role: user, content: 给出查看 11434 端口占用的命令} ], stream: false } # 列出本地模型等价于 ollama list curl http://127.0.0.1:11434/api/tags三个接口的差别在入参结构/api/generate只接受单个prompt适合一次性任务/api/chat接受消息数组能保留上下文是接界面和写脚本时用得最多的/api/tags用来做健康检查。stream设成false会等生成完一次性返回脚本里好处理设成true是逐 token 流式返回界面上的打字机效果靠它。Python 里调用import requests # 本地服务不需要鉴权地址固定为 127.0.0.1:11434 URL http://127.0.0.1:11434/api/chat payload { model: deepseek-r1-7b-dev, messages: [ {role: user, content: 把这段循环改成列表推导式result []\nfor i in data:\n result.append(i * 2)} ], stream: False, # options 里的参数会覆盖 Modelfile 中的同名设置 options: {temperature: 0.2, num_ctx: 4096} } # 7B 首次加载要几十秒超时别设太小否则连接断在模型加载阶段 resp requests.post(URL, jsonpayload, timeout180) resp.raise_for_status() print(resp.json()[message][content])options字段的优先级高于 Modelfile调试参数时不用反复ollama create直接在请求里改更快。定位到合适的值之后再写回 Modelfile 固化。4.5 接上 Chatbox 与 LM Studio 两类界面命令行交互适合测试日常用还是图形界面顺手。Chatbox 的配置只有三项关键项打开「设置」→ 切到「模型」选项卡 → 「AI 模型提供方」下拉里选Ollama→ 「API 域名」填http://localhost:11434→ 「模型」下拉里会出现ollama list里的所有模型选中deepseek-r1-7b-dev→ 保存。保存之后新建对话就能用。三个地方容易配错一是API 域名后面多加了/api或者结尾斜杠正确写法就是http://localhost:11434不带任何路径二是localhost在某些系统上解析到 IPv6 的::1而 Ollama 只监听了127.0.0.1改成http://127.0.0.1:11434就通了三是配置完没点保存直接关窗口。LM Studio 走的是另一条路它本身也能直接加载模型文件适合完全离线、不想让服务常驻后台的场景。它的界面里同样可以挂到本地的 OpenAI 兼容端点把地址填成本机的11434模型名填ollama list里的标签即可。编辑器里也能接。VS Code 扩展市场里支持 Ollama 的插件不止一个常见做法是装 Continue 这类助手插件在配置文件里把 provider 指到 ollama模型名填本地标签# Continue 的 config.yaml 片段 models: - name: deepseek-r1-7b-dev provider: ollama # 指向本地服务不要带 /api 后缀 apiBase: http://127.0.0.1:11434 model: deepseek-r1-7b-dev roles: [chat, edit]写代码时选中片段右键问模型或者在侧边栏提问回答都来自本机源码不出内网。这是本地部署相比云端服务最实在的价值。5. 排查与避坑本地跑 DeepSeek 最常见的五种翻车5.1 装完命令找不到、端口连不上现象新开的终端里敲ollama -v提示「不是内部或外部命令」或者command not found或者命令能用但curl http://localhost:11434返回连接被拒绝。原因前一种情况是 PATH 没刷新——安装程序改了系统环境变量但已经开着的终端进程读的还是旧值。后一种情况是后台服务没起来Windows 上是托盘进程没运行Linux 上是 systemd 服务启动失败。解决命令找不到就先关掉所有终端窗口重开还不行就去安装目录手动确认——Windows 装在%LOCALAPPDATA%\Programs\OllamamacOS 装在/Applications/Ollama.appLinux 是/usr/local/bin/ollama把所在目录手动加进 PATH。端口连不上就分系统看Windows 点托盘图标重启Linux 用systemctl status ollama加journalctl -u ollama -n 50看失败原因日志里最常见的两条是显存初始化失败和模型目录权限不足服务以ollama用户跑自定义目录要chown -R ollama:ollama。5.2 模型跑起来了但慢得不像话现象模型能回答问题但每个字都像挤出来的任务管理器里 CPU 跑满、GPU 闲着ollama ps的PROCESSOR列显示百分比混合比如35%/65% CPU/GPU。原因显存装不下整份权重加 KV CacheOllama 自动把一部分层卸载到内存里每生成一个 token 都要在内存和显存之间搬数据速度会掉到原来的几分之一。常见的触发条件是num_ctx设得太大或者后台还开着浏览器、剪辑软件这类吃显存的程序。解决先降num_ctx从 8192 降到 4096 甚至 2048再跑ollama ps看有没有回到100% GPU。降完还是不行就换更小的量化版本或者更小的参数量。另外确认笔记本是不是在用电池——很多机器的电源策略会在拔掉电源后限制独显功耗插上电再测。5.3 模型拉一半断了、盘写满了现象ollama pull跑到某个百分比卡住不动或者直接报磁盘空间不足重跑一次看着像从头开始。原因模型文件按层分片下载网络波动会让某一层超时磁盘空间不足则是在写 blob 的时候写失败。这两个问题经常一起出现因为很多人根本没检查过目标盘还剩多少空间。解决先df -h或用资源管理器确认OLLAMA_MODELS指向的盘剩余空间32B 起步留 60GB。空间没问题就重跑同一条ollama pull已经下完的分片会被复用不会从零开始。网络一直不稳的话换个时间段再试或者分批拉——先把 7B 拉下来用着等有整块时间再拉 32B。5.4 目录一改模型列表空了现象设了OLLAMA_MODELS指向新盘之后ollama list输出为空但旧目录里明明有模型文件。原因三种可能。一是环境变量只对当前终端会话生效服务进程读不到二是改完之后没重启服务三是迁移的时候只拷了blobs没拷manifests文件在但索引没了。解决Windows 上必须用系统环境变量面板设置设完在托盘图标上右键退出再重开光关窗口不够。Linux 上必须用systemctl edit写 override然后daemon-reload加restart直接export在当前 shell 里是没用的。迁移已有模型时blobs和manifests两个目录要一起拷拷完权限也要跟着改Linux 下漏了chown会表现为服务起来了但加载模型报权限错误。5.5 第三方界面接不上 11434现象Chatbox 或网页版界面里填了http://localhost:11434点保存后提示连接失败或者对话时报跨域错误。原因localhost在部分系统上优先解析成 IPv6 地址而 Ollama 默认只监听 IPv4 的127.0.0.1网页版界面还会受浏览器同源策略限制需要服务端明确允许来源。解决地址栏里的localhost一律换成127.0.0.1再试这一条能解决大部分连接失败。网页端接入的话要给 Ollama 加OLLAMA_ORIGIN环境变量值填界面的来源地址改完同样要重启服务。这里有个安全提醒不要为了图省事把OLLAMA_HOST改成0.0.0.0又不做任何访问控制那等于把本机的模型能力开放给整个网段公网机器上尤其不能这么干。6. 装完怎么验证跑通一份五分钟验收清单装完不等于跑通跑通不等于好用。我习惯在交付给自己或别人的时候走一遍固定验收五分钟能过完能提前暴露八成问题。验收项执行方式期望结果服务在线curl http://127.0.0.1:11434返回Ollama is running模型就位ollama list目标标签在列SIZE与磁盘占用吻合算力落点提问后立即ollama psPROCESSOR显示100% GPU或可接受的混合比短问答问一句「11 等于几只回答数字」两秒内返回内容正确长上下文贴 3000 字文档让它总结不报错、不截断、不答非所问接口可用/api/chat的 curl 请求返回 JSONmessage.content非空界面连通Chatbox 里发一句话正常回显无连接错误短问答这一项别嫌简单它能一次性验证服务、模型、显存三条链路都通。长上下文那一项是专门用来打num_ctx的——如果贴进去的长文档被截断或者模型开始答非所问说明上下文窗口设小了回第 4 章改 Modelfile 里的num_ctx。最后再补一个我自己的习惯动作把这次装的版本、模型标签、关键环境变量记在一个deploy.md里跟模型目录放一起。# 一条命令把关键信息落到文件换机器时直接照着复现 { echo ## $(date %F) 部署快照 ollama -v ollama list systemctl show ollama | grep -i environment # Linux nvidia-smi --query-gpuname,memory.total,driver_version --formatcsv } deploy.md这几行输出记下来下次换机器或者系统重装照着抄一遍就能复现同样的环境不用再回忆当时到底设了哪些变量。从那以后我每次装完本地模型都强制走一遍这套验收流程哪怕只是换了个模型标签。因为「能启动」和「跑得对」之间隔着的坑往往要等到真正拿它干活那天才暴露出来那时候再回头查是最难受的。希望这套流程能帮到你。本文还有配套的精品资源点击获取