
简介面向希望将先进的人工智能模型用于个人项目或工作中的开发者这份资料系统讲解在本地环境部署DeepSeek开源模型的全流程。内容从部署工具的选择入手覆盖硬件最低与推荐配置、操作系统及Python、CUDA等软件环境要求重点针对Ollama、LM Studio与Jan三种主流部署方式分步骤说明如何安装对应工具、拉取指定版本模型、启动本地服务并给出每一步的具体命令行示例。文档同时提供部署成功后的测试方法以及通过Python调用本地模型接口的代码片段便于读者直接接入自己的应用还比较了三种工具各自的优缺点帮助用户结合硬件条件和使用场景做出最优选择。资源以docx文档呈现共1个文件压缩包仅20KB轻量便携。目前已有1433人学习适合具备一定技术基础、希望深入研究或自定义预训练语言模型并以低成本开展大模型实验与创新的研发人员。1. 为什么该在本地环境里装一个 DeepSeek 模型本地部署 DeepSeek 模型这件事最近从“跑着玩”变成了不少企业的硬需求。人工智能模型本身不难获得难的是每次调用都要把内部数据送到远端接口还要担心请求是否被记录、是否被拿去训练。在本地环境里部署 DeepSeek核心收益不是跑分更高而是数据不出内网、离线可用、采样参数可控。适合两类人开发者在开发机上做原型验证快速试错提示词另一类是私有化交付工程师客户现场没有外网必须把“ai大模型本地部署配置”这件事在断网环境里打通。这篇指南从模型选型讲起用 Ollama 拉起服务再用 OpenAI 兼容接口对接 Dify、Codex 这类应用最后补几个生产环境里的验证技巧。2. 参数量和量化决定部署形态DeepSeek 系列该怎么选2.1 模型命名与量化对照为什么只看官方名称不够DeepSeek 不是单个模型而是一整个模型家族。DeepSeek-V3 和 DeepSeek-R1 原版都是 671B 参数的 MoE 架构全精度权重接近 1.3TB即便用 INT4 量化也要四百 GB 以上内存个人电脑基本跑不动。所以本地部署谈的 DeepSeek绝大多数是 R1 的蒸馏版本Distill把大模型能力压缩到 1.5B、7B、8B、14B、32B、70B 这些常见尺寸。另外还有专职代码生成的 deepseek-coder 系列也常被当作补全模型拉下来用。选型时不要只盯着参数量量化格式同等重要。GGUF 是本地推理最常见的格式量化等级从 Q2 到 Q8数值越小文件越小、精度损失越大。Ollama 默认拉取的 Q4_K_M 是质量与体积的折中适合大多数机器。下面这个表格按实际部署体感整理方便你直接把内存需求和场景对应起来。模型标识Ollama参数量常见量化内存建议适合场景deepseek-r1:1.5b1.5BQ4_K_M2GB分类、实体抽取、短文本补全deepseek-r1:7b7BQ4_K_M8GB普通问答、接口联调deepseek-r1:8b8BQ4_K_M8~16GB多轮对话、基础 Agent 任务deepseek-r1:14b14BQ4_K_M/Q8_016GB文档摘要、代码生成deepseek-r1:32b32BQ4_K_M24~32GB接近生产可用deepseek-v3671BIQ2_XXS400GB分布式服务器个人不碰这里有个常见误区DeepSeek-R1 蒸馏出的 7b 和 8b参数量不同是因为基座模型不同7B 来自 Qwen8B 来自 Llama。两者词表大小、上下文模板都有差异Ollama 把它们做成两个独立标签实际部署效果也明显不同。判断机器能不能跑不能只看官方宣称的“最低显存”要把 KV Cache 也算进去。Q4_K_M 的文件体积大约是参数量的 0.6 倍但上下文长度增加后KV Cache 会额外占用几十到几百 MB所以我的建议是内存按模型文件体积的两倍估算才能保证服务稳定不换页。另一个容易忽略的点是上下文长度。Ollama 默认只开 4096 token 的上下文窗口但 DeepSeek 指令模型常用 8K 甚至 32K。如果你要处理长文档必须通过 Modelfile 把 num_ctx 调到 8192 或更大否则模型读到一半就把前置内容挤掉回答逻辑断裂。这也是为什么“同样是 14B 模型有人 8G 显卡能跑有人跑起来就报 OOM”的根本差异。2.2 部署前检查显存、内存、磁盘和 CUDA 环境选好模型之后先把机器底座摸清楚。不要看厂商宣传的“支持本地部署”直接跑以下几组命令# 查看 GPU 型号、驱动版本和显存占用 nvidia-smi # 查看物理内存总量和可用内存 free -h # 确认模型安装目录所在磁盘的剩余空间 df -h / # 检查 PyTorch 是否识别 GPU只跑 Ollama 可以不看这步 python3 -c import torch; print(torch.cuda.is_available(), torch.cuda.get_device_name(0) if torch.cuda.is_available() else CPU)这几条命令分别对应四个约束。nvidia-smi里看 Memory-Usage如果显存被其他进程占了模型加载时就会掉到 CPU 推理速度慢一个数量级。free -h看物理内存因为即使模型完全加载进显存推理时 CPU 侧也要处理 tokenizer 和上下文拼接内存不足会直接触发 OOM kill。df -h看磁盘余量GGUF 文件下载时会写临时分片磁盘满了会报blobs下载失败。torch.cuda.is_available()返回 False 时不一定是硬件坏了更多是驱动和 CUDA 版本不匹配。用 Ollama 部署可以绕开大部分 Python 依赖因为 Ollama 自带 CUDA runtime不需要手动装 PyTorch。但如果你后面打算换 vLLM 上生产系统驱动至少要支持 CUDA 12.x。Mac 用户不用管 nvidia-smi用sysctl hw.memsize查统一内存14B 模型在 M 系列芯片上能跑32B 就比较吃力建议直接选 M 系列 Pro 以上芯片。硬件查完后还要给存储路径定位。Ollama 默认把模型存在~/.ollama/models如果你的系统盘只剩 20GB而模型有 9GB迟早会把系统分区撑爆。我一般会设置环境变量OLLAMA_MODELS/data/ollama把模型库指到大容量磁盘上。Windows 用户建议优先用 WSL2 跑 OllamaWindows 原生版对 GPU 调度不如 WSL 顺后续接入运行在 Docker 里的 Dify 也会更方便。3. 用 Ollama 在本地跑通 DeepSeek 的最小命令与配置3.1 安装与拉取从 ollama run 到服务常驻把 Ollama 作为 DeepSeek 本地部署的第一选择不是因为它性能最高而是它把模型文件、GPU 调度、OpenAI 兼容 API 三层打包成了开箱即用的形态。你不需要手动克隆权重仓库、写量化脚本也不需要一个完整的 Python 虚拟环境。常见做法是先用 Ollama 跑通最小链路再把稳定的模型配置固化成 Modelfile。Linux 下的安装命令只需要一条curl -fsSL https://ollama.com/install.sh | sh安装完成后先启动服务再拉模型。这里以deepseek-r1:14b为例具体标签按照你机器内存来替换# 启动后台服务Debian 系安装包会自动注册 systemd systemctl start ollama # 拉取模型Q4_K_M 量化文件大约 9GB ollama pull deepseek-r1:14b # 进入交互对话框直接发消息 ollama run deepseek-r1:14b参数说明pull只负责下载不启动推理下载后的模型分片会放在~/.ollama/models/blobs/目录ollama list可以查看当前有哪些模型。如果部署环境是内网隔离无法访问公网模型库可以把另一台机器上的OLLAMA_MODELS目录整体拷贝过去再通过离线方式导入不需要重新下载。ollama run的交互模式适合快速测试但真正对外提供服务时用的是ollama serve。ollama run会临时拉起服务ollama serve则让服务长驻并监听127.0.0.1:11434。注意多个 Ollama 进程不能共用同一个模型目录否则日志里会出现 “another process is running”这时需要先杀掉多余进程再重启服务。拉取完成后先用一句中文请求验证生成链路ollama run deepseek-r1:14b 用三句话解释什么是 KV Cache看到完整回答后不要急着接入业务先测多轮对话确认上下文拼接正确。如果第二问完全忘记第一问内容大概率是 num_ctx 太小需要在 Modelfile 中调整上下文窗口。3.2 用 Modelfile 控制采样参数温度、top_p 和上下文长度直接ollama run时模型用的是默认采样参数temperature 0.8、top_p 0.9、上下文 4096。这个配置对 DeepSeek 指令模型来说太“发散”容易跑题或者思考链被截断。更可控的方式是写一个 Modelfile把参数固化下来再用ollama create创建自定义模型。先新建一个DeepSeek.ModelfileFROM deepseek-r1:14b PARAMETER temperature 0.6 PARAMETER top_p 0.7 PARAMETER stop |user| PARAMETER stop |assistant| PARAMETER num_ctx 8192 SYSTEM 你是本地部署的 DeepSeek 助手回答要简洁、准确不要输出多余客套话。然后执行ollama create my-deepseek -f ./DeepSeek.Modelfile ollama run my-deepseek参数说明temperature控制随机性代码生成建议调到 0.2创意写作可以调到 0.9top_p做核采样小于 1 时从累计概率达到阈值的 token 中采样能防止输出突然跑偏stop是输出截断标记当模型生成到这些 token 时自动停DeepSeek 系模型常见的提示词分隔符需要保留num_ctx是上下文长度从 4096 调到 8192 可处理的信息量翻倍但显存占用也会增加。还有一个经常被忽略的细节SYSTEM提示词会覆盖应用侧的系统提示。如果同一个模型要接 Dify又要在 Codex 里复用系统提示要写通用一些不要写死业务场景。改完参数后用以下命令确认自定义模型是否生效ollama show my-deepseek输出结果里会列出参数、模板和量化信息。很多教程只调 temperature 就完事实际上对 DeepSeek-R1 这类推理模型num_ctx和stop更关键。上下文太短会导致长回答到一半自己断掉stop 没设置好输出会带出|endoftext|这类原始 token下游解析时非常难处理。排查时不要只盯回答内容先执行ollama ps看当前加载模型的上下文长度是否与预期一致。4. 让本地 DeepSeek 变成标准服务OpenAI 兼容 API 与 Dify/Codex 接入4.1 先用 curl 验证 DeepSeek 的 API 是否通本地服务起来后应用层接入统一走 OpenAI 兼容接口。Ollama 提供/v1/chat/completions这意味着可以把本地 DeepSeek 当作一个假的 OpenAI 服务调用不用专门针对每个 SDK 写适配层。先确认ollama serve在跑然后发一个最小生成请求curl http://127.0.0.1:11434/v1/chat/completions \ -H Content-Type: application/json \ -d { model: deepseek-r1:14b, messages: [ {role: system, content: 你是一个运维助手}, {role: user, content: 分析 nvidia-smi 输出里显存不足时的排查步骤} ], temperature: 0.3, stream: false }响应体里的choices[0].message.content就是模型输出。请求里的model字段必须与ollama list显示的标签完全一致否则返回模型不存在。temperature在 OpenAI 规范和 Ollama 内部实现里含义相同覆盖范围是 0 到 1 左右0.3 以下适合结构化输出。stream设为 false 时模型生成完整回答才返回如果应用希望打字机效果改为 true响应会变成 SSE 格式C 端应用需要额外解析以data:开头的行。接口验证通过后再考虑跨机器访问。默认监听地址只有 127.0.0.1局域网内其他机器无法访问。修改监听地址有两种方式改 systemd 环境变量OLLAMA_HOST0.0.0.0:11434或者临时执行OLLAMA_HOST0.0.0.0:11434 ollama serve外部应用接入时Base URL 要写成http://内网IP:11434/v1末尾不要带斜杠否则常见的 OpenAI SDK 会拼出双斜杠路径导致 404。另外一个值得注意的点如果局域网内有多台机器建议单独拿出一台 GPU 服务器作为推理节点其他机器只做访问方不要每台机器都拉一份模型文件磁盘空间和显存都吃不消。4.2 Dify 本地部署教程里的模型提供方配置Dify 这类低代码平台接入本地 DeepSeek套路是选“OpenAI-API-compatible”而不是选某个专属模型供应商。进入 Dify 控制台后打开“设置—模型供应商—OpenAI-API-compatible”填入三项内容API Key 随便填一个占位符因为 Ollama 不校验密钥Base URL 填本机推理服务地址模型 ID 必须与ollama list里的名称完全一致例如deepseek-r1:14b。这个环节有三个常见坑。第一模型 ID 写成了deepseek-r1但本地拉的是deepseek-r1:14bDify 调用时报Model Not Exist改完整标签即可。第二Dify 用 Docker Compose 部署时容器内不能访问宿主机的localhost要写成host.docker.internal或者宿主机局域网 IP。第三Dify 会通过/v1/models探测模型能力如果模型不支持工具调用Agent 编排节点就会报错这里需要在模型配置里明确关闭“函数调用”能力避免编排链路卡在工具解析上。命令行工具接入也是同样的思路。以 OpenAI 兼容接口为基准Codex 接入 DeepSeek 时可以设置以下环境变量export OPENAI_API_KEYollama export OPENAI_BASE_URLhttp://127.0.0.1:11434/v1 export OPENAI_MODELdeepseek-r1:14b这段配置把 Ollama 临时伪装成远端 OpenAI 服务CLI 工具的所有请求都打到本机。OPENAI_API_KEY是占位符因为本地服务不校验OPENAI_MODEL仍然要严格匹配本地模型标签。有些工具启动时会先请求GET /v1/modelsOllama 返回的是本地模型列表所以必须保证目标模型已下载。如果客户端硬编码检测模型名中是否包含gpt字样就需要在 Ollama 前面加一层轻量反向代理把 model 字段改掉。接入第三方应用的真正价值是把本地 DeepSeek 的推理能力复用给多个系统。Dify 里的 Agent、RAG 工作流、自定义工具和评测 Harness本质上都只要求一个“OpenAI 兼容的模型服务端点”。以后看到新发布的 AI 工具默认对接远端 API第一反应是找它的BASE_URL环境变量而不是放弃本地模型。5. 生产化验证让本地 DeepSeek 服务长期稳定跑的几个技巧5.1 用 systemd 锁住 Ollama 的启动顺序和环境变量开发机上手工执行ollama serve没问题但生产环境里服务要开机自启、崩溃自动拉起。通过 systemd 管理 Ollama 时先用编辑器打开 override 配置sudo systemctl edit ollama在打开的配置段中写入[Service] EnvironmentOLLAMA_HOST0.0.0.0:11434 EnvironmentOLLAMA_KEEP_ALIVE5m EnvironmentOLLAMA_NUM_PARALLEL2 RestartalwaysOLLAMA_HOST决定监听地址生产环境建议显式写 0.0.0.0避免默认配置变化导致不可访问。OLLAMA_KEEP_ALIVE控制模型在显存中的保留时间5 分钟表示空闲超过 5 分钟就释放显存。OLLAMA_NUM_PARALLEL控制并行请求数要看显存余量来设置盲目调高会把显存打爆。保存后执行sudo systemctl daemon-reload sudo systemctl restart ollama。5.2 用 ollama ps 和日志做上线前验证服务重启后先跑一遍ollama psollama ps输出的PROCESSOR列应该同时包含GPU和CPU字样说明模型已加载进显存部分算子回落到 CPU。如果你看到100% CPU说明显存分配失败需要减小 num_ctx 或更换更小量化模型。再执行一次 4.1 里的 curl 请求确认 API 响应时间稳定。如果响应时间从几百毫秒突然跳到十几秒多半是模型被卸载又重新加载检查OLLAMA_KEEP_ALIVE是否设置过短。日志排查也是核心步骤。实时跟踪日志用journalctl -u ollama -f看到insufficient VRAM或CUDA error时先关掉并行请求再降低上下文长度。看到failed to load model且伴随磁盘空间告警清理~/.ollama/models里不再使用的旧模型。部署完成后把常用验证请求写成一个脚本每次变更配置后自动跑一遍确认模型 ID、Base URL、采样参数三项没有回归。这套流程走完本地 DeepSeek 服务才算真正具备可维护性。本文还有配套的精品资源点击获取