DeepSeek-R1论文阅读及本地调用
前言
DeepSeek已经火了一段时间了,对于这项“国运级”的技术成果,即便研究的不是这个方向,也不免好奇前来看看。本文将先解析一下DeepSeek-R1这篇论文,再对DeepSeek的本地部署使用进行研究配置。
论文标题:DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
论文地址:https://arxiv.org/abs/2501.12948
开源地址:https://github.com/deepseek-ai/DeepSeek-R1
1. 简介
DeepSeek出了很多模型,首先有必要对模型的命名做一个辨析,以便在后续阅读过程中混淆。本文涉及的核心模型主要有以下几个:
- DeepSeek-R1-Zero
这个是DeepSeek-R1的前身,并未在正式服务中对外暴露,主要目的还是为DeepSeek-R1及后续蒸馏的小模型生成推理数据。 - DeepSeek-R1
DeepSeek最先进的推理模型结果,在Deepseek官网使用时,选择深度思考即调用此模型,可以生成推理过程及最终回答。 - DeepSeek-V3
DeepSeek最先进的非推理模型。在本文中相当于提供一个基座,R1-Zero与R1均在此基座上进行调试实现,并在后续蒸馏小模型中,生成非推理数据。 - 蒸馏小模型
蒸馏小模型主体是其它开源模型,包含Qwen和Llama,本文共包含6个蒸馏小模型,参数量从1.5B到70B,从小到大依次为:
DeepSeek-R1-Distill-Qwen-1.5B
DeepSeek-R1-Distill-Qwen-7B
DeepSeek-R1-Distill-Llama-8B
DeepSeek-R1-Distill-Qwen-14B
DeepSeek-R1-Distill-Qwen-32B
DeepSeek-R1-Distill-Llama-70B
2. 主要贡献
这篇文章的主要贡献有以下两点:
-
后训练:在基础模型上进行大规模强化学习
本文探索了一种直接将强化学习应用基础模型中的方式,无需通过监督微调(SFT)。这种方式能够激励模型自己构建解决问题的思维链,即推理能力。 -
模型蒸馏:让小模型也可以变得更强大
本文借助大模型,对小模型进行蒸馏,使其性能能够取得明显提升。
3. 动机
以前的工作严重依赖大量的监督数据来提高模型性能。
在这项研究中,其证明,即使不使用监督微调 (SFT) 作为冷启动,也可以通过大规模强化学习 (RL) 显着提高推理能力。此外,通过包含少量冷启动数据,可以进一步提高性能。
4. DeepSeek-R1-Zero
DeepSeek-R1-Zero是以DeepSeek-V3作为基础模型,直接应用强化学习去生成思维链,不借助任何SFT数据。
4.1 强化学习算法
具体使用的强化学习算法是GRPO,是24年提出的一种算法。相关公式如下,具体不细究,看上去是和PPO类似的策略学习算法。

4.2 奖励设置
强化学习是需要通过奖励进行驱动,正奖励能够鼓励模型继续当前行为,负奖励则是对模型当前行为进行惩罚。
在R1-Zero中,设置了两种奖励:
- 精度奖励:准确性奖励模型评估响应是否正确。例如,标准的数学答案或者leetcode节点成功结果。
- 格式奖励:格式奖励强制该模型在“ ”和“ ”标签之间放置其思维过程。
4.3 训练模板
训练模板的作用是引入预先交代的提示词,将用户的prompt嵌入到模板以内,以确保模型会根据预先的指令正常输出思考过程。

模板这里要求,让模型将思考内容输出到<think></think>标签之中,这能解释为什么调用 DeepSeek-R1进行输出时,会输出<think>这种符号。
4.4 性能
这里文章拿DeepSeek-R1-Zero和OpenAI的O1模型在五个数据集上进行对比,结果如下:

正好我不了解这几个数据集,拿DeepSeek解释一下这几个数据集是什么,它的回答如下:
- AIME 2024:这是一个数学竞赛数据集,通常用于评估模型在解决复杂数学问题上的能力。对比这个数据集可以展示模型在数学推理和问题解决方面的表现。
- MATH-500:这也是一个数学相关的数据集,可能包含500个数学问题,用于测试模型在广泛数学领域的理解和解题能力。
- GPQA Diamond:这个数据集可能与一般问题回答或知识问答相关,用于评估模型在广泛知识领域的表现。
- LiveCode Bench:这个数据集可能与编程或代码生成相关,用于评估模型在编写和调试代码方面的能力。
- CodeForces:这是一个编程竞赛平台,数据集可能包含编程挑战,用于评估模型在解决算法和编程问题上的能力。
这里的评价指标有三个:
- pass@1:表示模型在第一次尝试中正确解决问题的概率。
- cons@64:表示模型在多次尝试(如64次)中一致解决问题的概率。
- rating:在该平台上的评分或排名,用于衡量模型在编程竞赛中的表现。
从指标结果来看,DeepSeek-R1-Zero和OpenAI-O1性能不相上下。
文章进一步展示了DeepSeek-R1-Zero的自我进化过程,下面这张图表示随着强化学习的时间步(Steps)推移,模型的回答内容越来越长,这说明模型越来越学会更深度的长思考。

文章中还提到一个“啊哈时刻”(aha moment),如下图所示,在某次回答中,模型出现了如下图中的标红的回答,这表明模型在输出的过程中,能够对前面的回答也能做到反思和更新,有点像真正的“类人思考”过程。

5. DeepSeek-R1
尽管DeepSeek-R1-Zero已经取得了不错的效果,但仍存在一定问题,比如回答容易出现语言混合,导致可读性差。
DeepSeek-R1为了解决该问题,使用了如下步骤进行重新训练。
5.1 冷启动
冷启动的标签数据由 DeepSeek-V3进行生成,数据规模在千级(文中未详细披露)。
冷启动数据采用如下规则模板,即在每个推理过程之后,跟上一段摘要(summary)用来总结推理过程。
|special_token|<reasoning_process>|special_token|<summary>
5.2 语言一致性奖励
语言一致性奖励,其计算方式是目标语言单词在 CoT 中的比例。尽管消融实验表明,这种对齐会导致模型的性能略有下降,但这种奖励与人类的偏好一致,使其更具可读性。最后,将推理任务的准确性和语言一致性的奖励结合起来,直接相加形成最终的奖励。
5.3 拒绝采样与监督数据微调
文章说,对已经做完前两步的模型进行拒绝采样,收集约60万条推理数据,并通过DeepSeek-V3生成约20万条非推理数据。推理数据指代模型的推理过程,思维链数据;非推理数据指代一些基本的事实问答等无需推理的数据。
这里引入一个“拒绝采样”的新术语,看到参考资料[1]的解释,应该是指代模型在推理的过程中生成多条思维链答案,最后只保留一条最合适的,“拒绝”其它较差的答案。
此步骤相当于借助R1的中间模型(半成品),与新的监督数据一起合成新的数据集,用于后续训练微调。
5.4 全场景强化学习
这一节就具体解释如何利用第三步生成的80万数据进行进一步微调。对于推理数据,使用和DeepSeek-R1-Zero 中一样的方法;对于一般数据,采用奖励模型来捕捉复杂和细微场景中的人类偏好。额外的奖励模型会考虑一些安全性因素,比如对一些有害性回答进行限制。
参考资料[1]中,绘制了一张图用来描述DeepSeek-R1完整训练流程,看上去比较清晰,附在此处。

DeepSeek-R1与其它主流LLM的性能对比如下表所示:

从表中可以看出,在英文、编码、数学等方面R1和其它主流模型性能差距不大,但在中文表现方面是显著有优势的。
6. 模型蒸馏
这篇文章最后研究,通过模型蒸馏,可以提升多少模型的性能。
值得注意的是,这里的模型蒸馏和传统的蒸馏方式有所区别。传统的蒸馏方式往往是通过大模型和小模型共同进行训练,构建一个师生网络,在训练过程中,通过大模型(老师)的结果指导小模型(学生)来进行学习,从而实现把大模型潜在的知识“蒸馏”到小模型中。
DeepSeek采用的蒸馏方式更简单,是直接将DeepSeek-R1二阶段训练产生的80w条数据,直接为微调目前开源的小模型。
具体蒸馏的模型为阿里的Qwen和Meta的Llama,性能表现如下表所示:

从表中数据可以看出,蒸馏之后的模型性能提升非常明细,对比Qwen-32B蒸馏前后的效果,在AIME之类的主流数据集上性能提升有10个点以上, 但CodeForces排名实际有所下降。从这个角度看,其实蒸馏数据对原有性能还是会产生一定影响,可能会让模型原本的编码能力下降。
7. 讨论
7.1 强化学习和模型蒸馏哪个更强?
值得注意的是,在上一节的模型蒸馏,所采用的是纯监督数据微调,并没有加入强化学习过程。这样自然会产生一个问题:如果小模型不进行蒸馏,直接进行强化学习,是否会取得比蒸馏更好的效果。
本文又对Qwen-32B进行实验,结果如下:

表中数值表明,对小模型来说,直接应用R1-Zero的那套强化学习模式,基本没什么效果,但通过蒸馏之后,效果提升很明显。
7.2 失败的尝试
文章最后披露了两种失败的强化学习方法:流程奖励模型(Process Reward Model, PRM)、蒙特卡洛树搜索(Monte Carlo Tree Search, MCTS),前者容易被黑客攻击、计算开销大;后者因复杂度过高导致强化学习陷入局部最优。
8. 总结
-
文章虽是论文,但写作风格偏技术报告,没有过多的学术包装,结构很清晰,读起来很畅快。论文作者多达100多位,是一篇群策群力的成果。一般高校实验条件及人员限制,很难做出类似工作。
-
文章中提到一个“aha moment”让人印象深刻,文章认为DeepSeek-R1产生了真正的推理能力,我对此仍持保留态度。
-
文章验证了通过大模型的“合成数据”,可以对小模型的性能有显著提升,这一点可能会对很多工作有启发作用。
9. 本地部署尝试
在DeepSeek爆火前,我一直在用它优化我的工作流。然而,这几天随着用户的爆炸式增长,官网的访问变得很不稳定,往往回答完一条,就遇到回答失败的报错。
于是考虑从两个角度解决该问题,一方面,它有很多蒸馏小模型,可以在本地部署小模型;另一方面,由于它是开源模型,其它厂商也有跟进,可以利用其它厂商搭建的API资源。
9.1 官网源码部署
DeepSeek-R1是基于DeepSeek-V3进行训练和构建的,其完整代码在DeepSeek-V3仓库中。
https://github.com/deepseek-ai/DeepSeek-V3
配完环境,发现跑不动,/inference/configs/配置文件,发现其只提供了16B、236B和671B三个大小的模型型号,一般电脑带不动。蒸馏模型的配置文件未在仓库中披露。
9.2 本地小模型部署
不少资料都推荐了ollama+UI工具的本地部署方法,这里来尝试一下。
- 下载ollama
首先下载ollama,在官方下载即可。
ollama官网:https://ollama.com/
下载好之后,打开该服务运行到托盘。
打开控制台,输入ollama run deepseek-r1:1.5b即可自动下载运行1.5b版本的蒸馏模型。

下载完成之后,就可以直接和它简单对话。
此外,除了最小的1.5b模型之外,还有其它大小的模型,以及满血版671b大小的deepseek-r1模型。

- UI界面安装
直接在命令行对话不利于日常使用,因此需要安装一套支持ollma的UI框架。目前看到的主流工具主要有chatbox、page assist、open-webui和Cherry Studio。
这里使用Cherry Studio,下载链接:https://cherry-ai.com/download
打开之后,在设置->ollama菜单中,添加模型,模型名称命名为 deepseek-r1:1.5b。

后台运行ollma的情况下,可以直接进行流畅对话。

9.3 本地API部署
由于本地硬件条件限制,无法直接在本地部署满血版的Deepseek,因此可以用其它厂商提供的api服务。目前看到的主流厂商主要有硅基智能和腾讯云。目前,腾讯云的API限时免费(截至2025年2月26日),白嫖很香。
API的使用方式文档写得很详细,主要获取自己的api_key即可。
API文档:https://cloud.tencent.com/document/product/1772/115969
获取到api_key之后,在Cherry Studio里面需要点击添加。

输入自己的API密钥,API地址输入https://api.lkeap.cloud.tencent.com/v1,点击下面的添加模型,模型名称可以选择deepseek-r1和deepseek-v3,添加完成之后,可以点击右上角,检查按钮。

配置完成后,点击上方切换模型,即可流畅进行对话。

参考资料
[1] DeepSeek R1论文阅读后产生的有趣想法、实验和吐槽 https://www.bilibili.com/opus/1031986525612539910
相关文章:
DeepSeek-R1论文阅读及本地调用
前言 DeepSeek已经火了一段时间了,对于这项“国运级”的技术成果,即便研究的不是这个方向,也不免好奇前来看看。本文将先解析一下DeepSeek-R1这篇论文,再对DeepSeek的本地部署使用进行研究配置。 论文标题:DeepSeek-…...
自然语言处理:第九十二章 chatBI 经验(转载)
本人项目地址大全:Victor94-king/NLP__ManVictor: CSDN of ManVictor 原文连接: 一文分享 ChatBI 实践经验 写在前面: 笔者更新不易,希望走过路过点个关注和赞,笔芯!!! 写在前面: 笔者更新不易,希望走过路过点个关注和赞&#x…...
体验用ai做了个python小游戏
体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见,欢迎页面和结束页面背景是视频,游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…...
sql server 从库创建的用户名登录后访问提示数据库无权限
在主副本库创建登录名并且用户映射赋权指定的数据库权限,副副本库也创建登录名,主副本有权限访问数据库的权限,但是副副本没有权限访问数据库。 解决方案: 检查数据库用户是否映射到登录名 如果数据库用户已存在,但…...
懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)
1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制):https://www.bilibili.com/video/BV1M6rdYEEog/ 备注: 1.本地离线卡密采用最安全的非对称加解密技术,设备id采用最安全多重混合加密不可逆技术生成&…...
Git LFS介绍(Large File Storage)大文件扩展,将大文件存储在外部存储,仓库中只记录文件的元数据(大文件的指针,类似一个小的占位符文件)
文章目录 LFS的功能?如何使用LFS?将大文件存储在外部系统是什么意思?具体是如何运作的?为什么要这样做? 对开发者的影响?1. **性能和效率**2. **协作体验**3. **版本管理差异**4. **额外的工具和配置** LFS…...
前后端项目部署服务器(传统部署和Docker部署)
内外网 开发环境连外网(8.140.26.187),测试/生产环境连内网(172.20.59.17) 内外网地址不同,但指定的库是同一个 内网IP地址范围包括: 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…...
python-leetcode 39.二叉树的直径
题目: 给定一棵二叉树的根节点,返回该树的直径。 二叉树的直径是指中间任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root 两节点之间路径的长度由他们之间的边数表示 方法一:深度优先搜索 一条路径的长度为该路…...
Webpack的持久化缓存机制具体是如何实现的?
Webpack 的持久化缓存机制是 Webpack 5 引入的一项重要特性,旨在提高构建速度和性能。通过将构建结果缓存到磁盘上,Webpack 可以在后续构建中重用先前的结果,减少不必要的重新计算。以下是持久化缓存机制的具体实现和工作原理。 一、持久化缓…...
开题报告——基于Spring Boot的垃圾分类预约回收系统
关于本科毕业设计(论文)开题报告的规定 为切实做好本科毕业设计(论文)的开题报告工作,保证论文质量,特作如下规定: 一、开题报告是本科毕业设计(论文)的必经过程,所有本科生在写作毕业设计(论文)之前都必须作开题报告。 二、开题报告主要检验学生对专业知识的驾驭能…...
【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进
文章目录 一. 什么是分布式事务?二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交(2PC)2. TCC(Try-Confirm-Cancel&…...
配置Api自动生成
我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API,并导入Postman,完成API单元测试 Swagger: 是一套API定义的规范,按照这套规范的要求去定义接口及接口相关信息,再通过可…...
适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究
文章目录 1. YOLOv8的性能瓶颈与改进需求1.1 YOLOv8的优势与局限性1.2 可变形卷积(DCN)的优势 2. DCN在YOLOv8中的应用2.1 DCN的演变与YOLOv8的结合2.2 将DCN嵌入YOLOv8的结构中2.2.1 DCNv1在YOLOv8中的应用2.2.2 DCNv2与DCNv3的优化 2.3 实验与性能对比…...
Redis_基础
Redis 命令启动、配置密码 Redis是绿色软件,所以直接解压就能使用 配置文件为:redis.windows.conf 启动redis 服务: redis-server.exe redis.windows.conf启动客户端: redis-cli.exe默认没有给Redis配置密码,所以在…...
linux查看程序占用的本地端口
ss是Socket Statistics的缩写,用来替代旧的netstat工具,功能更强大,执行更快。它用于查看系统的网络连接情况,包括TCP、UDP等协议的信息。 一. 命令解析: sudo ss -tulwnpss (Socket Statistics):替代 ne…...
Linux阿里云服务器安装RocketMQ教程
本文为个人云服务器上搭建RocketMQ教程,用于帮助大家降低安装学习成本,提高学习效率。本人在服务器上(我用的是阿里云服务器)安装MQ时遇到了大大小小的问题,因此在最终完成部署后,希望能总结一个教程&#…...
【JavaEE进阶】MyBatis入门
目录 🌴前言 🌲什么是MyBatis? 🌳准备工作 🚩创建工程 🚩配置数据库连接字符串 🚩数据准备 🚩编写持久层代码 🍃单元测试 🌴前言 在应⽤分层学习时,我们了解到…...
Docker 镜像加速器配置指南
Docker 镜像加速器配置指南 2025-02-17 23:00 Linux : Aliyun ECS 服务器 背景问题 在国内,由于网络环境的不稳定,直接从 Docker Hub 拉取镜像的速度可能会很慢,有时甚至会失败。即使配置了官方的阿里云镜像加速器,也可能因为…...
LeetCode-524. 通过删除字母匹配到字典里最长单词
1、题目描述: 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在&#x…...
工作-述职笔记
文章目录 述职报告量化指标比较好的想法角色的基本要求项目不好做?减少人员介入的内容知识库 wiki 博客等(公司不一定允许) 点评培训的重要性 很少写关于工作的笔记,但是接触的东西越多,发现有很多知识点以及需要学习的内容。 所以整理下吧。 述职不是小…...
前端VUE+后端uwsgi 环境搭建
1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;在nginx上加上安全性或其他的限制,可以达到保护程序的作用;uWSGI本…...
2025软件测试面试题大全(78题含答案解析)
1、什么是兼容性测试?兼容性测试侧重哪些方面? 参考答案: 兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容…...
微信小程序地图map全方位解析
微信小程序地图map全方位解析 微信小程序的 <map> 组件是一个功能强大的工具,可以实现地图展示、定位、标注、路径规划等多种功能。以下是全方位解析微信小程序地图组件的知识点: 一、地图组件基础 1. 引入 <map> 组件 在页面的 .wxml 文…...
【Bert】自然语言(Language Model)入门之---Bert
every blog every motto: Although the world is full of suffering, it is full also of the overcoming of it 0. 前言 对bert进行梳理 论文: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 时间:…...
实时股票行情接口与WebSocket行情接口的应用
实时股票行情接口与WebSocket行情接口的应用 实时股票行情接口是量化交易和投资决策的核心工具之一,行情接口的种类和功能也在不断扩展。介绍几种常见的行情接口,包括实时股票行情接口、Level2行情接口、WebSocket行情接口以及量化行情接口,…...
.NET版PDF处理控件Aspose.PDF教程:在 C# 中将 TIFF 文件转换为 PDF
将TIFF文件转换为PDF文档在各个行业中都是必不可少的。许多企业需要将文档转换为存档、共享或打印。TIFF 文件通常用于图像,而 PDF 是文档共享的标准。将 TIFF 文件转换为 PDF 可确保跨不同平台的兼容性和易用性。在这篇博文中,我们将探讨如何使用 Aspos…...
本地搭建小型 DeepSeek 并进行微调
本文将指导您在本地搭建一个小型的 DeepSeek 模型,并进行微调,以处理您的特定数据。 1. 环境准备 Python 3.7 或更高版本 PyTorch 1.8 或更高版本 CUDA (可选,用于 GPU 加速) Git 2. 克隆 DeepSeek 仓库 bash 复制 git clone https://github.com/deepseek-ai/deepseek.g…...
备战蓝桥杯 Day4 差分
差分(修改区间后查询) 1.要点 a[0]0; for(int i1;i<n;i){diff[i]a[i]-a[i-1];//构建差分数组 } //原数组a区间[l,r]全部加上x diff[l]x;//还原a数组[l,n]全部加上x diff[r1]-x;//还原a数组[r1,n]全部减去x for(int i1;i<n;i){a[i]a[i-1]diff[i]; }实现多次修改完后多次…...
解决华硕主板的Boot界面无法设置M.2的系统启动盘问题
一、问题描述 当我们的华硕主板电脑开机后,发现电脑无法正常进入Windows系统界面,直接显示PXE网络网络信息;且知道我们进入到BIOS界面也无法找到选择系统盘,界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…...
【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★)
【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★) 🌟 嗨,你好,我是 青松 ! 🌈 自小刺头深草里,而今渐觉出蓬蒿。 NLP Github 项目…...
