本地部署DeepSeek-R1:ollama三步部署与训练流程解析

简介:这份PDF图解资料面向对大模型感兴趣的技术爱好者与研发人员,聚焦DeepSeek本地部署与强化学习训练原理,帮助读者在低成本条件下完成本地运行并理解推理模型R1的构建逻辑。资源包共1个PDF文件,大小约2.64MB,以图文并茂的形式呈现,便于对照操作界面逐步学习。内容覆盖本地部署的三个实操步骤与运行演示,并系统梳理LLM基础概念、Transformer架构、预训练、监督微调与强化学习等训练方法,重点拆解DeepSeek-R1完整训练流程,包括含R1-Zero的中间推理模型与通用强化学习两项核心创新。已有2199人学习,适合零基础读者快速上手,也为研究者提供前沿技术参考,兼顾实操性与理论深度。

1. 从一张 10 页图解说起:为什么我把 DeepSeek-R1 塞进了本地笔记本

上周有个做企业知识库的朋友找我,说他们内部文档涉密,不敢往云端大模型接口上送,问我有没有办法在本地跑一个推理能力够用的模型。我第一反应就是 DeepSeek-R1 的蒸馏小参数版本——1.5B 这个量级,普通笔记本 8GB 内存就能跑起来,而且它带思维链(CoT)输出,做逻辑推理类任务比同尺寸的通用模型强不少。这份 10 页的图解 PDF 正好把两件事串起来了:前半部分讲怎么用 ollama 三步把 DeepSeek 拉到本地跑通,后半部分拆解了 R1 的训练流程,包括 R1-Zero 怎么跳过 SFT 直接上强化学习、通用强化学习又怎么补上多任务能力。适合两类人:一是想低成本验证本地大模型可行性的开发者,二是对 LLM 训练流程尤其是强化学习环节感兴趣、但不想啃论文的从业者。下面我按自己复现的路径,把部署、原理、训练流程和踩坑点拆开讲。

2. 用 ollama 把 DeepSeek-R1 拉进本地:三步命令与参数选择

2.1 为什么选 ollama 而不是自己搭推理框架

本地跑大模型的路子有好几条:自己用 transformers 加载权重、用 llama.cpp 编译量化版本、或者用 ollama 这类封装好的管理工具。我一般会先问对方两个问题:你愿不愿意折腾环境依赖?你需不需要频繁切换不同模型?如果答案分别是“不太想”和“需要”,那 ollama 基本是最省事的选择。

它的核心价值在于把模型下载、量化格式转换、推理服务启动这三件事打包成了一条命令。你不需要单独装 CUDA、不需要手动下载 GGUF 文件、不需要配推理后端。安装完 ollama 之后,它自带一个模型仓库的拉取机制,ollama pull后面跟模型名就行。对于 DeepSeek-R1 这种有多个参数版本(1.5B、7B、8B、14B、32B 等)的模型,ollama 的 tag 机制让你可以按硬件条件灵活选。

另一个实际考虑是离线场景。ollama 拉下来的模型存在本地~/.ollama/models目录下,之后断网也能ollama run。这对内网环境或者网络受限的机器很关键——你只需要在能联网的机器上拉一次,把模型目录拷过去就行。

2.2 三步部署的完整命令与参数说明

第一步,安装 ollama。Windows 和 macOS 都有安装包,Linux 用一条脚本。安装完成后在终端输入ollama,能看到它支持的子命令列表,常用的就几个:pull、run、list、rm、serve。

# 安装完成后验证 ollama 是否可用 ollama --version # 查看当前已拉取的模型列表 ollama list

第二步,拉取 DeepSeek-R1 的 1.5B 版本。这个版本是蒸馏后的轻量模型,参数量约 15 亿,量化后文件大小在 1GB 出头,普通笔记本跑起来没什么压力。

# 拉取 deepseek-r1 的 1.5b 参数版本 # 如果你内存 16GB 以上,可以换成 7b 或 8b 版本 ollama pull deepseek-r1:1.5b

这里有个参数选择的关键点:1.5b里的b是 billion,即十亿参数。1.5B 就是约 15 亿个权重参数加偏置参数的总量。参数越少,模型体积越小、推理越快,但知识广度和推理深度会打折扣。我实测下来,1.5B 版本做简单的代码解释、文本摘要、基础逻辑推理够用,但涉及多步数学推导或者需要大量世界知识的任务,还是建议上 7B 以上。

第三步,启动对话。

# 运行模型并进入交互式对话界面 ollama run deepseek-r1:1.5b

执行后会进入一个提示符,直接输入问题就行。DeepSeek-R1 的输出有个特点:它会先输出一段被thinking标签包裹的内容,这是模型的思考过程,然后才是正式回答。如果你用 API 方式调用,可以通过解析这个标签来区分思考段和回答段。

2.3 用 API 方式调用本地模型

除了交互式对话,ollama 默认在11434端口起了一个 HTTP 服务,可以用 curl 或者 Python 脚本调用。这对集成到自己的应用里很有用。

import requests import json # ollama 默认服务地址 url = "http://localhost:11434/api/generate" payload = { "model": "deepseek-r1:1.5b", "prompt": "用 Python 写一个快速排序,并解释时间复杂度", "stream": False # 设为 True 可以流式获取输出 } response = requests.post(url, json=payload) result = response.json() # 输出完整回复 print(result["response"]) # 如果需要分离思考过程和正式回答,可以按 thinking 标签切分 full_text = result["response"] if " thinking" in full_text: think_part = full_text.split("")[0].replace(" thinking", "") answer_part = full_text.split("")[-1] print("=== 思考过程 ===") print(think_part.strip()) print("=== 正式回答 ===") print(answer_part.strip())

这段代码的逻辑是:向本地 ollama 服务发一个 POST 请求,model字段指定用哪个模型,prompt是输入,stream控制是否流式返回。返回的 JSON 里response字段就是模型输出。参数方面,stream=False适合一次性拿完整结果,stream=True适合做打字机效果的前端展示。如果你需要控制生成长度,可以加options字段,里面设num_predict来限制最大 token 数。

3. 看懂 DeepSeek-R1 的训练流程:从 R1-Zero 到通用强化学习

3.1 预训练、SFT、RL 三段式在 R1 里怎么变的

常规 LLM 的训练流程是预训练 → 监督微调 → 人类反馈强化学习。预训练阶段用海量无标注文本让模型学会预测下一个词,SFT 阶段用人工标注的问答对教模型怎么回答问题,RLHF 阶段用人类偏好数据训练奖励模型再优化生成策略。

DeepSeek-R1 的特别之处在于它把中间那段改了。它的起点是 DeepSeek-V3 的基础版本,然后走了一条不寻常的路:先做一个叫 R1-Zero 的中间模型,这个模型完全跳过了 SFT 阶段,直接拿强化学习去训。训出来的结果推理能力很强,但有两个毛病——回复时中英文混杂,非推理类任务表现差。于是第二步在 R1-Zero 的基础上做通用强化学习,引入帮助性和安全性奖励模型,把多任务能力补回来,最终得到 R1。

这个流程的核心创新点在于验证了一件事:纯强化学习也能大幅提升推理能力,不一定非要先做 SFT。R1-Zero 生成的思维链数据反过来又可以用来做 SFT 的训练材料,形成一种自举。

3.2 R1-Zero 的纯强化学习训练:奖励信号从哪来

R1-Zero 跳过 SFT 直接上 RL,那它的奖励信号怎么设计?这是整个流程里最值得琢磨的地方。常见做法是设计两类奖励:一类是准确性奖励,比如数学题有标准答案,模型输出和标准答案一致就给正奖励;另一类是格式奖励,要求模型把思考过程放在指定标签里,格式对了才给分。

这种设计的好处是不依赖人工标注的偏好数据,只需要题目和答案对就行。对于数学、代码这类有明确对错的任务,奖励信号很干净。但问题也出在这里:模型会为了拿奖励而过度优化推理能力,忽略了语言一致性和通用对话能力,所以才会出现中英文混杂的情况。

我自己的理解是,R1-Zero 相当于一个“偏科生”,在推理这个科目上考了高分,但其他科目不及格。通用强化学习阶段就是给它补课。

3.3 通用强化学习的奖励模型设计

通用强化学习阶段在 R1-Zero 的基础上做了两件事:一是用 R1-Zero 生成的推理数据做 SFT,让模型学会用规范的格式输出;二是在 RL 阶段引入帮助性和安全性两个奖励模型。

帮助性奖励模型判断回答是否对用户有帮助,安全性奖励模型判断回答是否包含有害内容。这两个奖励模型的训练数据来自人工标注,和 RLHF 里的做法类似。最终 R1 在推理任务和非推理任务上都有不错的表现,而不是只擅长做题。

从工程角度看,这个两阶段设计的好处是分工明确:第一阶段专注把推理能力拉满,第二阶段专注把通用性和安全性补上。如果一上来就同时优化所有目标,奖励信号会互相干扰,训练难度大很多。

4. 本地部署的避坑与排查:显存、量化、输出格式那些事

4.1 拉取模型时卡住或报错

现象:执行ollama pull deepseek-r1:1.5b后进度条长时间不动,或者报网络超时。

原因:ollama 的模型仓库服务器在境外,国内网络环境下拉取大文件容易断连。另外磁盘空间不足也会导致拉取失败。

解决:先检查磁盘剩余空间,1.5B 版本需要约 1.5GB,7B 版本需要约 5GB。网络问题可以尝试更换 DNS 或者用代理(注意:这里指的是 HTTP 代理,用于软件包下载,不是其他用途)。如果实在拉不下来,可以在能正常拉取的机器上执行ollama pull,然后把~/.ollama/models目录整体拷贝到目标机器。

4.2 运行时报内存不足

现象:ollama run之后模型加载到一半报错退出,提示 out of memory。

原因:模型加载需要的内存大约是文件大小的 1.2 到 1.5 倍。1.5B 量化版本文件约 1GB,运行需要 2GB 左右内存。如果你选的是 7B 版本,文件约 4.5GB,运行需要 6GB 以上内存。

解决:先确认自己机器的可用内存。Windows 上看任务管理器,Linux 用free -h。如果内存不够,换更小参数的版本,比如从 7B 降到 1.5B。另外关闭其他占内存的程序,浏览器开几十个标签页的情况很常见。

4.3 输出里思考过程太长影响阅读

现象:模型回复时thinking标签里的内容特别长,正式回答被推到很后面。

原因:DeepSeek-R1 的推理模型特性决定了它会先生成较长的思维链。1.5B 版本因为参数少,有时会陷入重复思考的循环。

解决:如果通过 API 调用,可以在options里设num_predict限制总生成长度,或者用stop参数在检测到 `` 后停止思考段。交互式使用时,直接等它输出完就行,或者按 Ctrl+C 中断。我一般会在 prompt 里加一句“请直接给出答案,不需要展示思考过程”,但效果不稳定,模型有时还是会先想再答。

4.4 中文回答里夹杂英文

现象:模型用中文提问,但回答里混了不少英文单词或整句英文。

原因:这是 R1-Zero 阶段遗留的问题,纯强化学习训练时没有专门做语言一致性约束。1.5B 小模型比大模型更容易出现这个情况。

解决:在 prompt 里明确要求“请用中文回答”,或者在系统提示里设定语言。如果还是不行,换 7B 以上版本,大模型的语言一致性明显更好。另外可以在 API 调用时加system字段设定角色和语言要求。

5. 进阶用法:用 Modelfile 定制本地模型行为

ollama 支持通过 Modelfile 自定义模型的系统提示、参数和模板。这个功能对本地部署来说很实用,你可以把常用的系统提示固化进去,不用每次都在 prompt 里重复写。

# 创建一个自定义 Modelfile cat > Modelfile << 'EOF' FROM deepseek-r1:1.5b # 设定系统提示,要求中文回答且简洁 SYSTEM "你是一个中文技术助手,回答请用中文,尽量简洁,代码要有注释。" # 调整生成参数 PARAMETER temperature 0.6 PARAMETER top_p 0.9 PARAMETER num_predict 2048 EOF # 基于 Modelfile 创建新模型 ollama create my-deepseek -f Modelfile # 运行自定义模型 ollama run my-deepseek

这段 Modelfile 里,FROM指定基础模型,SYSTEM设定系统提示,PARAMETER调整生成参数。temperature控制随机性,0.6 比默认值略低,适合技术问答场景,输出更稳定。top_p是核采样阈值,0.9 表示只从累积概率前 90% 的词里采样。num_predict限制最大生成 token 数,防止输出过长。

创建完之后用ollama list能看到my-deepseek出现在列表里,和普通模型一样用。如果改坏了,ollama rm my-deepseek删掉重建就行。

验证自定义模型是否生效,可以问一个需要中文回答的问题,观察输出语言和长度是否符合预期。我一般会连续问三个问题:一个代码题、一个概念解释题、一个需要多步推理的题,看模型在不同任务类型上的表现是否稳定。

从那以后我每次部署新模型,都会先写一个 Modelfile 把系统提示和参数固定下来,再跑一轮验证问题。这样换机器或者换模型版本时,行为一致性有保障,不用靠记忆去复现配置。希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

artcraft:艺术直觉与工程实践融合的创作新范式

artcraft:艺术直觉与工程实践融合的创作新范式

1. “Artcraft”不是新词&#xff0c;而是被低估的创作底层逻辑最近在几个设计类社区和开源项目讨论区里&#xff0c;反复看到“artcraft”这个词被零散提及——不是作为品牌名、不是某个工具的代号&#xff0c;而是一种正在悄然成型的实践共识。它不挂在App Store首页&#xf…

2026/10/20 15:55:04 阅读更多 →
AI基础设施全景学习笔记:从算力调度到MLOps实践

AI基础设施全景学习笔记:从算力调度到MLOps实践

AI Infra&#xff0c;全称 AI Infrastructure&#xff0c;也就是AI基础设施。这几年但凡是做大模型训练、或者做AI业务落地的团队&#xff0c;几乎都被这个词反复轰炸过。我个人的理解&#xff0c;AI Infra 是一整套把"算法想法"变成"线上可用服务"的支撑系…

2026/10/20 15:55:04 阅读更多 →
用AI编程为孩子打造专属英语学习工具:从架构到实现的完整指南

用AI编程为孩子打造专属英语学习工具:从架构到实现的完整指南

1. 一个家长的技术自救&#xff1a;为什么要自己动手做AI英语工具我家孩子上小学三年级&#xff0c;英语成绩一直在班里中游晃荡。不是他不聪明&#xff0c;而是传统的英语学习方式对他完全不起作用——背单词像嚼蜡&#xff0c;读课文像念经&#xff0c;每次辅导作业都是一场亲…

2026/10/20 15:55:04 阅读更多 →

最新新闻

PyTorch实战指南:LSTM、CNN、分布式训练与图网络高频问题全解

PyTorch实战指南:LSTM、CNN、分布式训练与图网络高频问题全解

1. 这个系列到底在整理什么这个"PyTorch 秘籍"系列整理到现在&#xff0c;已经不像一份教程了&#xff0c;更像是我平时在项目里翻工具箱时的随手笔记。RNNs 和 CNNs 是深度学习里最常碰的两个结构&#xff0c;Python 工具决定了我能不能一天跑完一组对照实验&#x…

2026/10/20 16:41:43 阅读更多 →
榜单揭示AI视频生成赛道分化:通用模型与影视垂直模型较量

榜单揭示AI视频生成赛道分化:通用模型与影视垂直模型较量

凌晨一点刷完榜单数据&#xff0c;我第一反应是这榜单是不是出 bug 了——榜单前三的位置里&#xff0c;赫然挂着一家影视公司的名字&#xff0c;而大厂的通用视频生成模型 Seedance 被压到了第四名。评论区已经吵成一团&#xff0c;有人喊“完蛋了&#xff0c;大厂被弯道超车”…

2026/10/20 16:41:43 阅读更多 →
pyKT知识追踪框架:标准复现与统一评估实践指南

pyKT知识追踪框架:标准复现与统一评估实践指南

1. 从零散脚本到统一基准&#xff1a;为什么需要pyKT这样的知识追踪框架做知识追踪&#xff08;Knowledge Tracing&#xff09;方向的朋友&#xff0c;大概都有过这样的经历&#xff1a;想复现一篇论文的结果&#xff0c;翻遍作者放出来的代码&#xff0c;发现数据预处理各写各…

2026/10/20 16:41:43 阅读更多 →
大模型高效使用指南:提示词、思维链与实战技巧全解析

大模型高效使用指南:提示词、思维链与实战技巧全解析

最近两年&#xff0c;AI大模型的热度可以说是一路狂飙。刷短视频、看新闻、同事群里聊天&#xff0c;几乎到处都能看到用大模型写周报、做PPT、改Bug的真实案例。但我也发现一个很有意思的现象&#xff1a;不少人注册了账号、打开对话框&#xff0c;问了几天之后得出结论——&q…

2026/10/20 16:41:43 阅读更多 →
XSS跨站脚本攻击:原理、类型与防护实践

XSS跨站脚本攻击:原理、类型与防护实践

1. 项目概述1.1 从一次弹窗开始认识XSS你可能见过这种场面&#xff1a;某天打开一个博客&#xff0c;看到一个页面弹窗&#xff0c;上面写着“你的Cookie已泄露”。很多同学第一反应觉得是恶作剧&#xff0c;但实际上这就是跨站脚本攻击的经典演示。XSS的全称是Cross-Site Scri…

2026/10/20 16:41:43 阅读更多 →
722篇数学成果目录深度拆解:分类逻辑、筛选标准与追踪方法

722篇数学成果目录深度拆解:分类逻辑、筛选标准与追踪方法

1. 这份722篇数学成果目录到底意味着什么 第一次看到“722篇数学成果目录”这个说法&#xff0c;我的直觉是&#xff1a;这不是一份普通的论文列表&#xff0c;而更像是一次集中式的成果归档。722这个数字本身就很有意思——它既不是几十篇那种小规模的技术报告&#xff0c;也不…

2026/10/20 16:40:33 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型&#xff08;GMM&#xff09;的语音识别系统&#xff0c;很多人第一反应就是一堆数学公式&#xff0c;觉得门槛很高。但如果你真的在MATLAB里把它落地跑通&#xff0c;会发现核心其实就是三件事&#xff1a;把声音变成特征向量&#xff0c;用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人&#xff0c;但落到具体操作上&#xff0c;无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程&#xff1a;对图像做反白、改调色板、彩色转灰度&#xff0c;最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词&#xff0c;你会发现一个很有意思的现象&#xff1a;每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型&#xff0c;有人指的是运动控制系统&#xff0c;还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →