简介这份资源是一份面向AI推理部署与深度学习开发者的DeepSeek模型本地化部署指南适合具备一定软硬件基础、希望降低云服务成本并深入理解大语言模型底层机制的研究人员与工程师。内容围绕Ollama安装、按显存规模选择DeepSeek-R1参数量版本、Docker容器化与Open WebUI图形界面接入等环节展开覆盖从命令行加载到浏览器登录验证的完整链路。资源包共1个docx文档约15KB以图文步骤与命令说明为主便于按章节查阅和对照操作。目前已有5229人学习下载说明该方案在本地LLM部署场景中具有较高参考价值。读者可借此掌握一套通用的大模型本地部署思路理解不同硬件条件下的模型选型逻辑并借助Docker与Open WebUI扩展服务形态为后续科研或项目落地提供可复用的实践基础。1. 本地跑大模型这件事卡在哪一步的人最多DeepSeek 模型本地部署教程里搜索量最高的组合词是「Ollama 安装」和「模型运行」。这两个词放在一起其实暴露了一个很具体的困境大多数人不是不想在本地跑模型而是卡在从「下载完安装包」到「终端里真的吐出第一段文字」之间那段没人讲清楚的路。Ollama 这个工具的价值就在于把这段路压到最短——它把模型权重、推理引擎、API 服务打包成一个命令行程序你不需要配 CUDA、不需要写 Python 加载脚本、不需要理解量化格式装完就能ollama run。但「最短」不等于「没有坑」显存不够、模型拉取中断、量化版本选错、上下文长度设太大导致 OOM这些翻车现场在本地部署里一个都不会少。这篇笔记面向的是手上有台机器、想在自己环境里把 DeepSeek 跑起来的人不管你是做私有化推理验证还是单纯想有个不依赖网络的本地对话入口下面的步骤和参数都能直接抄。2. Ollama 安装与 DeepSeek 模型拉取从零到第一次对话2.1 安装前先确认三件事不然装了也跑不动Ollama 本身对系统要求不高但它要跑的模型对硬件有硬门槛。安装之前先花两分钟确认这三项能省掉后面大量无效折腾。第一是内存和显存。DeepSeek 系列里适合本地跑的主要是蒸馏版和轻量版参数量从 1.5B 到 70B 不等。1.5B 和 7B 级别在 16GB 内存的机器上纯 CPU 也能跑只是速度慢14B 以上建议至少有 12GB 显存的独立显卡否则推理速度会掉到每秒几个 token体验很差。第二是磁盘空间模型文件动辄几个 GB 到几十 GB拉取前确认目标盘剩余空间是模型体积的两倍以上因为拉取过程中会有临时文件。第三是系统版本Linux 内核建议 5.15 以上macOS 建议 13 以上Windows 需要 WSL2 或者原生安装包老版本系统上 Ollama 的服务注册会失败。确认完这三项再往下走。如果你不确定自己的显卡能不能跑某个尺寸一个粗略的估算方法是FP16 精度下每 10 亿参数约需 2GB 显存4-bit 量化后约需 0.7GB。按这个比例反推就能知道自己的卡适合哪个量级。2.2 Linux 和 macOS 上的安装命令与验证Linux 和 macOS 的安装方式基本一致官方提供了一键脚本。下面这条命令会下载安装脚本并执行安装完成后 Ollama 会注册为系统服务开机自启。# 下载并执行官方安装脚本 curl -fsSL https://ollama.com/install.sh | sh # 验证服务是否正常运行 ollama --version # 查看服务状态Linux systemd 环境 systemctl status ollama安装脚本做的事情包括检测系统架构、下载对应二进制、创建 ollama 用户、注册 systemd 服务Linux或 launchd 服务macOS。执行完ollama --version能看到版本号说明二进制已经就位。如果systemctl status ollama显示 active (running)说明后台服务已经起来后续ollama run会直接和这个服务通信。macOS 上如果不想用脚本也可以直接下载 dmg 安装包拖进 Applications首次打开会提示安装命令行工具点确认即可。安装完成后同样用ollama --version验证。注意安装脚本需要 sudo 权限来创建系统用户和注册服务如果当前用户没有 sudo 权限脚本会报错退出。这种情况下可以手动下载二进制放到用户目录但服务管理需要自己处理不推荐新手走这条路。2.3 Windows 上的安装与 WSL2 环境准备Windows 用户有两条路原生安装包和 WSL2。原生安装包最简单下载 exe 双击安装装完在 PowerShell 里就能用ollama命令。但原生版本对显卡驱动的兼容性偶尔出问题尤其是较新的显卡。如果你遇到ollama run报错说找不到 GPU可以换 WSL2 方案。WSL2 方案的前提是已经装好 WSL2 和一个 Linux 发行版Ubuntu 最常见。进入 WSL2 终端后按照上一节的 Linux 安装命令操作即可。WSL2 的优势是 GPU 直通支持比较成熟NVIDIA 显卡在 WSL2 里能被 Ollama 正常识别。# 在 WSL2 的 Ubuntu 终端里执行 curl -fsSL https://ollama.com/install.sh | sh # 确认 GPU 是否被识别 ollama run deepseek-r1:7b --verbose--verbose参数会在对话结束后打印推理速度等统计信息如果看到 GPU 相关的显存占用数据说明显卡已经被调用。如果只看到 CPU 信息需要检查 WSL2 的 GPU 直通配置和显卡驱动版本。2.4 拉取 DeepSeek 模型标签怎么选拉取中断怎么办Ollama 的模型库用「模型名:标签」的格式区分不同版本。DeepSeek 相关的常用标签有几种选错了要么跑不动要么效果打折扣。# 拉取 7B 蒸馏版适合 8GB 显存左右的机器 ollama pull deepseek-r1:7b # 拉取 1.5B 轻量版适合纯 CPU 或低显存环境 ollama pull deepseek-r1:1.5b # 拉取 14B 版本需要 12GB 以上显存 ollama pull deepseek-r1:14b # 查看本地已拉取的模型列表 ollama list标签里的数字代表参数量b 是 billion 的缩写。参数量越大模型能力越强但对硬件要求越高。7B 是一个比较平衡的起点大多数消费级显卡能跑。1.5B 适合验证流程效果一般但速度快。14B 以上适合有明确推理质量要求的场景。拉取过程中如果网络中断Ollama 支持断点续传重新执行ollama pull会从断点继续不会从头下载。但如果中断次数太多导致临时文件损坏需要先ollama rm 模型名删掉残留再重新拉。判断是否损坏的方法是看ollama list里模型大小是否明显小于预期。提示拉取大模型时建议在稳定的网络环境下进行并且不要同时拉多个模型并发拉取会争抢带宽反而更慢。2.5 第一次运行run 命令的参数与交互方式模型拉取完成后用ollama run启动对话。# 启动交互式对话 ollama run deepseek-r1:7b # 单次提问不进入交互模式 ollama run deepseek-r1:7b 用一句话解释什么是量化 # 指定上下文窗口大小默认 2048可调大到 8192 ollama run deepseek-r1:7b --context-size 8192进入交互模式后直接输入问题回车即可。退出用/bye或者 CtrlD。--context-size控制模型能记住的上下文长度调大能处理更长的对话但会占用更多显存。7B 模型在 8GB 显存下上下文开到 4096 比较稳妥8192 可能会 OOM。单次提问模式适合脚本调用输出完就退出不占资源。如果你要把 Ollama 集成到自己的程序里更推荐用它的 HTTP API默认监听 11434 端口/api/generate和/api/chat两个端点覆盖了大部分需求。3. 模型选型与量化为什么同一个 DeepSeek 跑出来效果差很多3.1 参数量、量化精度和显存的三角关系同一个 DeepSeek 模型不同人跑出来的效果和速度可能差好几倍核心变量是量化精度。量化是把模型权重从高精度浮点数压缩成低精度表示的过程精度越低模型体积越小、推理越快但输出质量会下降。Ollama 默认拉取的模型通常是 4-bit 量化版本Q4_K_M 或类似这是在体积和质量之间比较平衡的选择。如果你手动指定其他标签可能会拉到 8-bit 甚至 FP16 版本体积翻倍但质量提升有限。对于大多数本地部署场景4-bit 量化是性价比最高的选择。下面这张表可以帮助你快速判断自己的硬件适合哪个量级参数量4-bit 量化后体积最低显存建议纯 CPU 可行性1.5B约 1.2GB2GB流畅7B约 4.5GB6GB可用但慢14B约 9GB12GB不推荐32B约 20GB24GB不可行体积和显存建议是估算值实际会因量化方法和上下文长度浮动。选型的原则是先确定你能接受的推理速度下限再反推能跑的最大参数量最后在这个参数量下选 4-bit 量化。3.2 用 ollama show 查看模型细节避免拉错版本拉完模型后建议用ollama show确认一下实际拉到的版本信息。# 查看模型详细信息 ollama show deepseek-r1:7b # 输出包含模型架构、参数量、量化方式、上下文长度等输出里会列出quantization字段显示实际量化精度。如果显示 Q4_K_M说明是 4-bit 量化如果显示 F16说明是完整精度体积会大很多。parameters字段显示参数量context length显示模型支持的最大上下文。这个命令的实用价值在于当你从不同来源拉取同名模型时实际内容可能不同。确认量化方式和参数量能避免「以为拉的是轻量版结果跑不动」的情况。3.3 自定义 Modelfile把系统提示词和参数固化下来Ollama 支持用 Modelfile 自定义模型行为把系统提示词、温度、上下文长度等参数固化成一个新模型。这样每次运行不用重复传参也方便分享给其他人。# 创建一个 Modelfile cat Modelfile EOF FROM deepseek-r1:7b # 设置系统提示词 SYSTEM 你是一个简洁的技术助手回答控制在三句话以内。 # 设置温度参数越低越确定越高越有创造性 PARAMETER temperature 0.3 # 设置上下文窗口 PARAMETER num_ctx 4096 # 设置重复惩罚 PARAMETER repeat_penalty 1.1 EOF # 基于 Modelfile 创建新模型 ollama create my-deepseek -f Modelfile # 运行自定义模型 ollama run my-deepseekFROM指定基础模型必须是本地已拉取的。SYSTEM是系统提示词会在每次对话前注入。PARAMETER后面跟推理参数temperature 控制随机性num_ctx 控制上下文长度repeat_penalty 控制重复内容的惩罚力度。这个做法的好处是把配置代码化换机器时只要带上 Modelfile 就能复现同样的行为。对于需要固定输出风格的场景比如客服问答、代码补全把提示词固化进模型比每次手动输入可靠得多。4. 避坑与排查本地部署 DeepSeek 最常见的五个翻车现场4.1 拉取到一半报错模型列表里出现半成品现象是ollama pull执行到某个百分比后报错退出ollama list里能看到模型名但大小不对运行时报「模型文件损坏」。原因通常是网络中断导致临时文件不完整或者磁盘空间不足导致写入失败。Ollama 的断点续传在大多数情况下有效但如果临时文件本身损坏续传会一直失败。解决方法是先删除残留再重新拉取。ollama rm 模型名会清理掉不完整的文件然后重新执行ollama pull。如果反复失败检查磁盘剩余空间并尝试在网络更稳定的时段操作。4.2 运行时报显存不足但显卡明明还有余量现象是ollama run启动后报 CUDA out of memory但用nvidia-smi看显存占用并不高。原因是 Ollama 默认会尝试把整个模型加载到显存如果模型体积加上上下文缓存超过显存上限就会直接报错而不是自动降级到 CPU。另外如果之前有残留的 Ollama 进程没退出也会占着显存不放。解决方法是先确认没有残留进程pkill ollama后重新启动服务。然后降低上下文长度用--context-size 2048启动。如果还是不够换更小参数量的模型或者接受 CPU 推理的慢速度。4.3 输出速度极慢每秒不到一个 token现象是模型能跑起来但生成速度慢到无法接受一句话要等几十秒。原因可能是模型跑在 CPU 上而不是 GPU 上也可能是显存不够导致部分层被卸载到内存。另外如果机器同时跑着其他占显存的任务也会拖慢推理。解决方法是先用ollama run --verbose看推理时的设备信息确认是否调用了 GPU。如果显示 CPU检查显卡驱动和 Ollama 版本是否匹配。如果确认是 GPU 但速度仍然慢降低模型参数量或量化精度减少显存压力。4.4 中文输出夹杂乱码或异常符号现象是模型回答中文问题时偶尔出现乱码、重复字符或者不完整的句子。原因通常是量化精度太低导致模型输出分布偏移或者上下文长度设置不当导致截断。某些低精度量化版本在中文任务上表现明显差于英文。解决方法是换用更高精度的量化版本比如从 Q4 换到 Q5 或 Q8。如果显存不允许换更小参数量的高精度版本比如 7B 的 Q8 代替 14B 的 Q4。另外检查num_ctx是否设得太小导致对话历史被截断后模型失去上下文。4.5 服务启动失败端口被占用现象是systemctl status ollama显示 failed日志里报「address already in use」。原因是 11434 端口被其他程序占用可能是之前手动启动的 Ollama 进程没退出或者其他服务碰巧用了这个端口。解决方法是先找到占用端口的进程lsof -i :11434查看 PID确认是残留的 Ollama 进程后 kill 掉。如果是其他程序占用可以修改 Ollama 的监听端口通过环境变量OLLAMA_HOST0.0.0.0:11435指定新端口然后重启服务。5. 把 Ollama 接进自己的工作流API 调用与批量推理5.1 用 HTTP API 替代命令行方便集成Ollama 默认在 11434 端口提供 HTTP API这是把它接进自己程序最直接的方式。下面是一个 Python 调用示例用 requests 库发送请求。import requests import json # Ollama 的生成接口 url http://localhost:11434/api/generate payload { model: deepseek-r1:7b, prompt: 用 Python 写一个快速排序函数, stream: False, # 关闭流式输出一次性返回 options: { temperature: 0.2, num_ctx: 4096 } } response requests.post(url, jsonpayload) result response.json() print(result[response])stream设为 False 时接口会等模型生成完毕后一次性返回完整结果适合脚本处理。设为 True 时返回的是逐块输出的流适合做打字机效果的前端。options里的参数和 Modelfile 里的 PARAMETER 对应可以在这里覆盖默认值。5.2 批量推理用 chat 接口处理多轮对话如果需要处理多轮对话用/api/chat接口更合适它接受消息列表格式。import requests url http://localhost:11434/api/chat messages [ {role: system, content: 你是一个技术助手。}, {role: user, content: 什么是量化}, {role: assistant, content: 量化是把模型权重从高精度压缩到低精度的过程。}, {role: user, content: 那 4-bit 量化会损失多少精度} ] payload { model: deepseek-r1:7b, messages: messages, stream: False } response requests.post(url, jsonpayload) print(response.json()[message][content])messages 列表按角色区分system 是系统提示user 是用户输入assistant 是模型之前的回复。把历史消息按顺序传入模型就能基于完整上下文回答。这个接口适合做多轮问答的批处理比如把一批客服对话记录逐条送入模型做意图分类。5.3 一个容易忽略的细节模型加载与卸载的时机Ollama 在第一次收到请求时会加载模型到显存之后一段时间内保持加载状态以加速后续请求。默认的保持时间是 5 分钟超过后自动卸载释放显存。这个机制在交互式使用时没问题但在批量脚本里可能造成困扰如果两条请求间隔超过 5 分钟第二条请求会触发重新加载增加延迟。可以通过环境变量OLLAMA_KEEP_ALIVE调整保持时间设为-1表示永不卸载设为0表示请求完立即卸载。# 设置模型保持加载 30 分钟 export OLLAMA_KEEP_ALIVE30m # 或者在 API 请求里指定 payload { model: deepseek-r1:7b, prompt: 你好, keep_alive: 30m }对于需要频繁调用的场景把 keep_alive 设长一点能减少加载开销。对于显存紧张、需要和其他任务共享显卡的场景设短一点或者用0让模型用完即走。5.4 验证部署是否成功的三个检查点部署完成后用这三个检查点确认一切正常。第一ollama list能看到目标模型且大小合理。第二ollama run 模型名 测试能在合理时间内返回有意义的回答。第三用 curl 直接调 API 能拿到 JSON 响应。# 检查点三直接调 API curl http://localhost:11434/api/generate -d { model: deepseek-r1:7b, prompt: 回复 OK, stream: false }如果这三个检查点都通过说明本地部署已经可用。后续无论是接前端、写脚本还是做批量任务都可以在这个基础上展开。我自己的习惯是每次换机器或升级 Ollama 版本后先把这三个检查点跑一遍确认基础链路没问题再动上层逻辑这样出问题时排查范围能小很多。希望帮到你。本文还有配套的精品资源点击获取