
简介这份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, jsonpayload) 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字段就是模型输出。参数方面streamFalse适合一次性拿完整结果streamTrue适合做打字机效果的前端展示。如果你需要控制生成长度可以加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.5GB7B 版本需要约 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参数在检测到 后停止思考段。交互式使用时直接等它输出完就行或者按 CtrlC 中断。我一般会在 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 把系统提示和参数固定下来再跑一轮验证问题。这样换机器或者换模型版本时行为一致性有保障不用靠记忆去复现配置。希望帮到你。本文还有配套的精品资源点击获取