DeepSeek-R1论文阅读及本地调用

news2025/4/15 3:19:24

前言

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出了很多模型,首先有必要对模型的命名做一个辨析,以便在后续阅读过程中混淆。本文涉及的核心模型主要有以下几个:

  1. DeepSeek-R1-Zero
    这个是DeepSeek-R1的前身,并未在正式服务中对外暴露,主要目的还是为DeepSeek-R1及后续蒸馏的小模型生成推理数据。
  2. DeepSeek-R1
    DeepSeek最先进的推理模型结果,在Deepseek官网使用时,选择深度思考即调用此模型,可以生成推理过程及最终回答。
  3. DeepSeek-V3
    DeepSeek最先进的非推理模型。在本文中相当于提供一个基座,R1-Zero与R1均在此基座上进行调试实现,并在后续蒸馏小模型中,生成非推理数据。
  4. 蒸馏小模型
    蒸馏小模型主体是其它开源模型,包含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. 主要贡献

这篇文章的主要贡献有以下两点:

  1. 后训练:在基础模型上进行大规模强化学习
    本文探索了一种直接将强化学习应用基础模型中的方式,无需通过监督微调(SFT)。这种方式能够激励模型自己构建解决问题的思维链,即推理能力。

  2. 模型蒸馏:让小模型也可以变得更强大
    本文借助大模型,对小模型进行蒸馏,使其性能能够取得明显提升。

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. 总结

  1. 文章虽是论文,但写作风格偏技术报告,没有过多的学术包装,结构很清晰,读起来很畅快。论文作者多达100多位,是一篇群策群力的成果。一般高校实验条件及人员限制,很难做出类似工作。

  2. 文章中提到一个“aha moment”让人印象深刻,文章认为DeepSeek-R1产生了真正的推理能力,我对此仍持保留态度。

  3. 文章验证了通过大模型的“合成数据”,可以对小模型的性能有显著提升,这一点可能会对很多工作有启发作用。

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工具的本地部署方法,这里来尝试一下。

  1. 下载ollama
    首先下载ollama,在官方下载即可。
    ollama官网:https://ollama.com/
    下载好之后,打开该服务运行到托盘。
    打开控制台,输入ollama run deepseek-r1:1.5b即可自动下载运行1.5b版本的蒸馏模型。

在这里插入图片描述
下载完成之后,就可以直接和它简单对话。

此外,除了最小的1.5b模型之外,还有其它大小的模型,以及满血版671b大小的deepseek-r1模型。

在这里插入图片描述

  1. UI界面安装
    直接在命令行对话不利于日常使用,因此需要安装一套支持ollma的UI框架。目前看到的主流工具主要有chatboxpage assistopen-webuiCherry 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-r1deepseek-v3,添加完成之后,可以点击右上角,检查按钮。

在这里插入图片描述
配置完成后,点击上方切换模型,即可流畅进行对话。

在这里插入图片描述

参考资料

[1] DeepSeek R1论文阅读后产生的有趣想法、实验和吐槽 https://www.bilibili.com/opus/1031986525612539910

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2302179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自然语言处理:第九十二章 chatBI 经验(转载)

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor 原文连接: 一文分享 ChatBI 实践经验 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#x…

体验用ai做了个python小游戏

体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见&#xff0c;欢迎页面和结束页面背景是视频&#xff0c;游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…

懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)

1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)&#xff1a;https://www.bilibili.com/video/BV1M6rdYEEog/ 备注&#xff1a; 1.本地离线卡密采用最安全的非对称加解密技术&#xff0c;设备id采用最安全多重混合加密不可逆技术生成&…

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网&#xff08;8.140.26.187&#xff09;&#xff0c;测试/生产环境连内网&#xff08;172.20.59.17&#xff09; 内外网地址不同&#xff0c;但指定的库是同一个 内网IP地址范围包括&#xff1a; 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…

python-leetcode 39.二叉树的直径

题目&#xff1a; 给定一棵二叉树的根节点&#xff0c;返回该树的直径。 二叉树的直径是指中间任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root 两节点之间路径的长度由他们之间的边数表示 方法一&#xff1a;深度优先搜索 一条路径的长度为该路…

【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进

文章目录 一. 什么是分布式事务&#xff1f;二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交&#xff08;2PC&#xff09;2. TCC&#xff08;Try-Confirm-Cancel&…

配置Api自动生成

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API&#xff0c;并导入Postman&#xff0c;完成API单元测试 Swagger: 是一套API定义的规范&#xff0c;按照这套规范的要求去定义接口及接口相关信息&#xff0c;再通过可…

适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究

文章目录 1. YOLOv8的性能瓶颈与改进需求1.1 YOLOv8的优势与局限性1.2 可变形卷积&#xff08;DCN&#xff09;的优势 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是绿色软件&#xff0c;所以直接解压就能使用 配置文件为&#xff1a;redis.windows.conf 启动redis 服务&#xff1a; redis-server.exe redis.windows.conf启动客户端&#xff1a; redis-cli.exe默认没有给Redis配置密码&#xff0c;所以在…

Linux阿里云服务器安装RocketMQ教程

本文为个人云服务器上搭建RocketMQ教程&#xff0c;用于帮助大家降低安装学习成本&#xff0c;提高学习效率。本人在服务器上&#xff08;我用的是阿里云服务器&#xff09;安装MQ时遇到了大大小小的问题&#xff0c;因此在最终完成部署后&#xff0c;希望能总结一个教程&#…

【JavaEE进阶】MyBatis入门

目录 &#x1f334;前言 &#x1f332;什么是MyBatis? &#x1f333;准备工作 &#x1f6a9;创建工程 &#x1f6a9;配置数据库连接字符串 &#x1f6a9;数据准备 &#x1f6a9;编写持久层代码 &#x1f343;单元测试 &#x1f334;前言 在应⽤分层学习时,我们了解到…

Docker 镜像加速器配置指南

Docker 镜像加速器配置指南 2025-02-17 23:00 Linux : Aliyun ECS 服务器 背景问题 在国内&#xff0c;由于网络环境的不稳定&#xff0c;直接从 Docker Hub 拉取镜像的速度可能会很慢&#xff0c;有时甚至会失败。即使配置了官方的阿里云镜像加速器&#xff0c;也可能因为…

前端VUE+后端uwsgi 环境搭建

1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的&#xff0c;uwsgi完全可以完成整个的和浏览器交互的流程&#xff1b;在nginx上加上安全性或其他的限制&#xff0c;可以达到保护程序的作用&#xff1b;uWSGI本…

【Bert】自然语言(Language Model)入门之---Bert

every blog every motto: Although the world is full of suffering&#xff0c; it is full also of the overcoming of it 0. 前言 对bert进行梳理 论文&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 时间&#xff1a;…

.NET版PDF处理控件Aspose.PDF教程:在 C# 中将 TIFF 文件转换为 PDF

将TIFF文件转换为PDF文档在各个行业中都是必不可少的。许多企业需要将文档转换为存档、共享或打印。TIFF 文件通常用于图像&#xff0c;而 PDF 是文档共享的标准。将 TIFF 文件转换为 PDF 可确保跨不同平台的兼容性和易用性。在这篇博文中&#xff0c;我们将探讨如何使用 Aspos…

解决华硕主板的Boot界面无法设置M.2的系统启动盘问题

一、问题描述 当我们的华硕主板电脑开机后&#xff0c;发现电脑无法正常进入Windows系统界面&#xff0c;直接显示PXE网络网络信息&#xff1b;且知道我们进入到BIOS界面也无法找到选择系统盘&#xff0c;界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…

【Arxiv 大模型最新进展】PEAR: 零额外推理开销,提升RAG性能!(★AI最前线★)

【Arxiv 大模型最新进展】PEAR: 零额外推理开销&#xff0c;提升RAG性能&#xff01;&#xff08;★AI最前线★&#xff09; &#x1f31f; 嗨&#xff0c;你好&#xff0c;我是 青松 &#xff01; &#x1f308; 自小刺头深草里&#xff0c;而今渐觉出蓬蒿。 NLP Github 项目…

Linux-C/C++《C/9、信号:基础》(基本概念、信号分类、信号传递等)

本章将讨论信号&#xff0c;虽然信号的基本概念比较简单&#xff0c;但是其所涉及到的细节内容比较多&#xff0c;所以本章篇幅也会相对比较长。事实上&#xff0c;在很多应用程序当中&#xff0c;都会存在处理异步事件这种需求&#xff0c;而信号提供了一种处理异步事件的方法…

【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录 ​编辑 1. 插件核心功能 1.1 基础变换操作 1.2 高级特性 2. 安装与配置 2.1 导入插件 2.2 配置控制器参数 2.3 为物体添加交互功能 3. 使用示例 3.1 基础操作演示 3.2 多选与批量操作 3.3 自定义光标与外观 4. 高级配置技巧 4.1 动态调整包围框控件尺寸 4.…

OpenCV形态学操作

1.1. 形态学操作介绍 初识&#xff1a; 形态学操作是一种基于图像形状的处理方法&#xff0c;主要用于分析和处理图像中的几何结构。其核心是通过结构元素&#xff08;卷积核&#xff09;对图像进行扫描和操作&#xff0c;从而改变图像的形状和特征。例如&#xff1a; 腐蚀&…