当前位置: 首页 > news >正文

【大模型理论篇】最近大火的DeepSeek-R1初探系列1

1. 背景介绍

        这一整个春节,被DeepSeek-R1刷屏。各种铺天盖地的新闻以及老板发的相关信息,着实感受到DeepSeek-R1在国外出圈的震撼。

        DeepSeek推出了新的推理模型:DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个在没有经过监督微调(SFT)作为预处理步骤的情况下,通过大规模强化学习(RL)训练的模型,在推理任务上展现出了卓越的性能。借助强化学习,DeepSeek-R1-Zero 涌现出许多强大的推理行为。不过,DeepSeek-R1-Zero 也存在一些挑战,比如无尽的重复、可读性差以及语言混杂等问题。为了解决这些问题并进一步提升推理能力,引入了 DeepSeek-R1,在强化学习之前融入了冷启动数据。DeepSeek-R1 在数学、编程和推理任务上的表现可与 OpenAI-o1 相媲美。

        这一次DeepSeek的最大轰动,其实是把一种接近O1的实现方案给开源了,并且采用纯RL训练实现接近O1的能力,成本大幅降低。如果没有开源,其实可能不太会有这么大的冲击。据我所知,12月份智谱也上线了GLM-ZERO-Preview的强化推理版本,但没有开源,效果也很不错。强化学习我们之前也给出了相关文章进行讨论,可以参考《大模型中的强化学习RLHF(PPO)、DPO(Direct Preference Optimization)等概念的理解与解析》。

        DeepSeek一口气开源了 DeepSeek-R1-Zero、DeepSeek-R1 以及基于 Llama 和 Qwen 从 DeepSeek-R1 蒸馏出的六个密集模型。其中,DeepSeek-R1-Distill-Qwen-32B 在多个基准测试中超越了 OpenAI-o1-mini,刷新了密集模型的最新技术水平。

2. DeepSeek-R1的训练方案

2.1 后训练

        DeepSeek为了降低训练成本,并没有选择在预训练阶段进行相应的动作,而是在基模型上进行大规模强化学习,这是否也意味着目前的基模型其实已经具备足够的能力,只需要进行多步推导就可以达到相当有效的推理结果?值得我们思考。关于这个问题其实DeepSeek也给出了一定程度的回答,通过强化学习可以激发出大模型的能力。

        DeepSeek直接在基模型上应用强化学习(RL),而不依赖于监督微调(SFT)作为前置步骤。这种方法使模型能够探索思维链(CoT),从而解决复杂问题,并最终发展出 DeepSeek-R1-Zero。DeepSeek-R1-Zero 展现出了自我验证、反思以及生成长思维链等能力,验证了大语言模型(LLM)的推理能力可以完全通过强化学习激发,而无需依赖监督微调。关于思维链可以参考《思维链(Chain Of Thought)、思维树(Tree Of Thought)等概念解析》。

        此外开发 DeepSeek-R1 的流程,我们将会在系列文章2中进行介绍,该流程包括两个强化学习阶段,用于发现更优的推理模式并对齐人类偏好,同时包含两个监督微调阶段,为模型的推理和非推理能力提供基础。

2.2 蒸馏:小模型也可以很强大

        DeepSeek证明大模型的推理模式可以被蒸馏到小模型中,从而使其性能优于通过强化学习(RL)在小模型上发现的推理模式。利用 DeepSeek-R1 生成的推理数据,对广泛使用的多个稠密模型进行了微调。评估结果表明,经过蒸馏的小型稠密模型在基准测试中表现非常出色。开源的基于 Qwen2.5 和 Llama3 系列的蒸馏模型检查点,包括 1.5B、7B、8B、14B、32B 和 70B 版本。我们曾在《模型蒸馏、大模型变小、移动端小规模大模型SLM、小模型趋势讨论》中讨论了大模型蒸馏的发展趋势,DeepSeek证明了这一个猜想的合理性和正确性。并且在《深度学习模型知识蒸馏Torch实践》中给出了相应的模型蒸馏实践。

2.3  基模型DeepSeek-V3

        DeepSeek-R1-Zero 和 DeepSeek-R1 是基于 DeepSeek-V3-Base 训练的。 有关DeepSeek-V3模型架构如下,本质上还是和主流的大模型架构一致,都利用了transformer的基础单元,可以参考《通用大模型架构分类及技术统一化》。另外DeepSeek给出了其MoE的结构,新增了Shared Expert,这个其实也容易理解,除了专门的专家,还需要有一些通用的专家,来捕捉一些跨任务的共享知识,学习到一些通用特征,增强模型的通用能力,同时还可以起到一定的负载均衡、专家数量控制以及兜底策略等功能。关于MoE的探讨可以参考《Mixture of Experts(混合专家模型, MOE)》。其实这种结构的引入,也是一种实验性的结果,实验证明有效。另外DeepSeek-V3还引入了Multi-Head Latent Attention, MLA是用于高效推理的注意力机制。MLA 通过低秩联合压缩技术,减少了推理时的键值(KV)缓存,从而在保持性能的同时显著降低内存占用。

3. 评估结果

        DeepSeek-R1 评估,对于所有模型,最大生成长度设置为 32,768 个 token。对于需要采样的基准测试,使用温度为 0.6,top-p 值为 0.95,并为每个查询生成 64 个响应以估计 pass@1。可以看到R1相对于o1-mini是有优势,但与o1-1217还是存在差距。现在DeepSeek-R1被吹到天上,也需要看到差距,继续进步。而且openai在一月底二月初推出了o3,各方面表现都优于R1。 

4. DeepSeek-R1使用

4.1 聊天网站与 API 平台

        可以在 DeepSeek 官方网站 chat.deepseek.com 上与 DeepSeek-R1 进行聊天,并开启“DeepThink”按钮。        

        另外也提供了与 OpenAI 兼容的 API 平台:platform.deepseek.com,不过发现目前API平台在维护中,暂时无法使用,应该是最近太火可能资源啥的跟不上,或者有别的因素考虑暂时做了关闭(2月3日)。

4.2 如何本地运行

DeepSeek-R1 模型
        有关在本地运行 DeepSeek-R1 ,可以直接参考DeepSeek-V3 仓库。

DeepSeek-V3 可以通过以下硬件和开源社区软件进行本地部署:

  • DeepSeek-Infer Demo:我们提供了一个简单轻量级的 FP8 和 BF16 推理演示。

  • SGLang:全面支持 DeepSeek-V3 模型的 BF16 和 FP8 推理模式,多 token 预测功能即将推出。

  • LMDeploy:支持高效的 FP8 和 BF16 推理,适用于本地和云端部署。

  • TensorRT-LLM:目前支持 BF16 推理和 INT4/8 量化,FP8 支持即将推出。

  • vLLM:支持 DeepSeek-V3 模型的 FP8 和 BF16 模式,支持张量并行和流水线并行。

  • AMD GPU:通过 SGLang 在 AMD GPU 上以 BF16 和 FP8 模式运行 DeepSeek-V3 模型。

  • 华为昇腾 NPU:支持在华为昇腾设备上运行 DeepSeek-V3。

DeepSeek-R1-Distill 模型
        DeepSeek-R1-Distill 模型可以像 Qwen 或 Llama 模型一样使用。
        例如,可以使用 vLLM 启动服务:       

vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-32B --tensor-parallel-size 2 --max-model-len 32768 --enforce-eager

使用建议
        建议在使用 DeepSeek-R1 系列模型(包括基准测试)时遵循以下配置,以达到预期性能:

  1. 将温度设置在 0.5-0.7 之间(推荐 0.6),以避免无限重复或不连贯的输出。

  2. 避免添加系统提示(system prompt);所有指令应包含在用户提示中。

  3. 对于数学问题,建议在提示中加入如下指令:“请逐步推理,并将最终答案放在 \boxed{} 中。”

  4. 在评估模型性能时,建议进行多次测试并取平均值。

        此外,观察到 DeepSeek-R1 系列模型在响应某些查询时可能会跳过思考模式(即输出 <think>\n\n</think>),这可能会影响模型的性能。为了确保模型进行充分推理,建议强制模型在每次输出时以 <think>\n 开头。因为输出的think同样会作为后续的输入,这样才能更好地推理结果。

5. 参考材料

【1】DeepSeek-R1

【2】DeepSeek_V3

相关文章:

【大模型理论篇】最近大火的DeepSeek-R1初探系列1

1. 背景介绍 这一整个春节&#xff0c;被DeepSeek-R1刷屏。各种铺天盖地的新闻以及老板发的相关信息&#xff0c;着实感受到DeepSeek-R1在国外出圈的震撼。 DeepSeek推出了新的推理模型&#xff1a;DeepSeek-R1-Zero 和 DeepSeek-R1。DeepSeek-R1-Zero 是一个在没有经过监督微调…...

【数据结构】(4) 线性表 List

一、什么是线性表 线性表就是 n 个相同类型元素的有限序列&#xff0c;每一个元素只有一个前驱和后继&#xff08;除了第一个和最后一个元素&#xff09;。 数据结构中&#xff0c;常见的线性表有&#xff1a;顺序表、链表、栈、队列。 二、什么是 List List 是 Java 中的线性…...

【C++ STL】vector容器详解:从入门到精通

【C STL】vector容器详解&#xff1a;从入门到精通 摘要&#xff1a;本文深入讲解C STL中vector容器的使用方法&#xff0c;涵盖常用函数、代码示例及注意事项&#xff0c;助你快速掌握动态数组的核心操作&#xff01; 一、vector概述 vector是C标准模板库&#xff08;STL&am…...

OpenAI推出Deep Research带给我们怎样的启示

OpenAI 又发新产品了&#xff0c;这次是面向深度研究领域的智能体产品 ——「Deep Research」&#xff0c;貌似被逼无奈的节奏… 在技术方面&#xff0c;Deep Research搭载了优化后o3模型并通过端到端强化学习在多个领域的复杂浏览和推理任务上进行了训练。因没有更多的技术暴露…...

洛谷[USACO08DEC] Patting Heads S

题目传送门 题目难度&#xff1a;普及/提高一 题面翻译 今天是贝茜的生日&#xff0c;为了庆祝自己的生日&#xff0c;贝茜邀你来玩一个游戏。 贝茜让 N N N ( 1 ≤ N ≤ 1 0 5 1\leq N\leq 10^5 1≤N≤105) 头奶牛坐成一个圈。除了 1 1 1 号与 N N N 号奶牛外&#xff0…...

CSS 溢出内容处理:从基础到实战

CSS 溢出内容处理&#xff1a;从基础到实战 1. 什么是溢出&#xff1f;示例代码&#xff1a;默认溢出行为 2. 使用 overflow 属性控制溢出2.1 使用 overflow: hidden 裁剪内容示例代码&#xff1a;裁剪溢出内容 2.2 使用 overflow: scroll 显示滚动条示例代码&#xff1a;显示滚…...

Spring Boot项目如何使用MyBatis实现分页查询

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…...

飞行汽车中的无刷外转子电机、人形机器人中的无框力矩电机技术解析与应用

重点:无刷外转子电机与无框力矩电机&#xff1a;技术解析与应用对比 在现代工业自动化和精密机械领域&#xff0c;无刷电机因其高效、低噪音和高可靠性而备受青睐。其中&#xff0c;无刷外转子电机和无框力矩电机更是以其独特的结构和性能特点&#xff0c;成为众多应用场景中的…...

FreeRTOS学习 --- 队列集

队列集简介 一个队列只允许任务间传递的消息为同一种数据类型&#xff0c;如果需要在任务间传递不同数据类型的消息时&#xff0c;那么就可以使用队列集 &#xff01; 作用&#xff1a;用于对多个队列或信号量进行“监听”&#xff0c;其中不管哪一个消息到来&#xff0c;都可让…...

【R语言】R语言安装包的相关操作

一、管理R语言安装包 1、安装R包 install.packages() 2、查看已安装的R包 installed.packages() 3、更新R包 update.packages() 4、卸载R包 remove.packages() 二、加载R语言安装包 打开R语言时&#xff0c;基础包&#xff08;base包&#xff09;会自动被加载到内存中…...

15.[前端开发]Day15-HTML+CSS阶段练习(网易云音乐四)

完整代码 01_网易云-header <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wid…...

【基于SprintBoot+Mybatis+Mysql】电脑商城项目之用户登录

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【Spring篇】【计算机网络】【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;1.登录-持久层 &…...

测试方案和测试计划相同点和不同点

在软件测试领域&#xff0c;测试方案与测试计划皆为举足轻重的关键文档&#xff0c;尽管它们有着紧密的关联&#xff0c;但在目的与内容层面存在着显著的差异。相同点&#xff1a; 1.共同目标&#xff1a;测试方案和测试计划的核心目标高度一致&#xff0c;均致力于保障软件的…...

c++提取矩形区域图像的梯度并拟合直线

c提取旋转矩形区域的边缘最强梯度点&#xff0c;并拟合直线 #include <opencv2/opencv.hpp> #include <iostream> #include <vector>using namespace cv; using namespace std;int main() {// 加载图像Mat img imread("image.jpg", IMREAD_GRAYS…...

Unity Shader Graph 2D - 角色身体电流覆盖效果

在游戏中,通常会有游戏角色受到“电击”的效果,此时游戏角色身体上会覆盖有电流,该效果能表明游戏角色的当前状态,让玩家能够获得更直观更好的体验。 那么如何实现呢 首先创建一个ShaderGraph文件,命名为Current,再创建对应的材质球M_Current。 基础的资源显示 老规矩,…...

【LLM-agent】(task4)搜索引擎Agent

note 新增工具&#xff1a;搜索引擎Agent 文章目录 note一、搜索引擎AgentReference 一、搜索引擎Agent import os from dotenv import load_dotenv# 加载环境变量 load_dotenv() # 初始化变量 base_url None chat_model None api_key None# 使用with语句打开文件&#xf…...

携程Java开发面试题及参考答案 (200道-下)

insert 一行数据的时候加的是什么锁?为什么? 在 MySQL 中,当执行 INSERT 操作插入一行数据时,加锁的情况会因存储引擎和具体的事务隔离级别而有所不同。一般来说,在 InnoDB 存储引擎下,INSERT 操作加的是行级排他锁(Row Exclusive Lock),以下详细说明原因。 行级排他…...

GWO优化SVM回归预测matlab

灰狼优化算法&#xff08;Grey Wolf Optimizer&#xff0c;简称 GWO&#xff09;&#xff0c;是由澳大利亚格里菲斯大学的 Mirjalii 等人于 2014 年提出的群智能优化算法。该算法的设计灵感源自灰狼群体的捕食行为&#xff0c;核心思想是对灰狼社会的结构与行为模式进行模仿。 …...

QMK启用摇杆和鼠标按键功能

虽然选择了触摸屏&#xff0c;我仍选择为机械键盘嵌入摇杆模块&#xff0c;这本质上是对"操作连续性"的执着。   值得深思的是&#xff0c;本次开发过程中借助DeepSeek的代码生成与逻辑推理&#xff0c;其展现的能力已然颠覆传统编程范式&#xff0c;需求描述可自动…...

Unity实现按键设置功能代码

一、前言 最近在学习unity2D&#xff0c;想做一个横版过关游戏&#xff0c;需要按键设置功能&#xff0c;让用户可以自定义方向键与攻击键等。 自己写了一个&#xff0c;总结如下。 二、界面效果图 这个是一个csv文件&#xff0c;准备第一列是中文按键说明&#xff0c;第二列…...

【Java学习笔记】Arrays类

Arrays 类 1. 导入包&#xff1a;import java.util.Arrays 2. 常用方法一览表 方法描述Arrays.toString()返回数组的字符串形式Arrays.sort()排序&#xff08;自然排序和定制排序&#xff09;Arrays.binarySearch()通过二分搜索法进行查找&#xff08;前提&#xff1a;数组是…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

宇树科技,改名了!

提到国内具身智能和机器人领域的代表企业&#xff0c;那宇树科技&#xff08;Unitree&#xff09;必须名列其榜。 最近&#xff0c;宇树科技的一项新变动消息在业界引发了不少关注和讨论&#xff0c;即&#xff1a; 宇树向其合作伙伴发布了一封公司名称变更函称&#xff0c;因…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...