【大模型理论篇】最近大火的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

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

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

相关文章

Pandoc, Zotero, JabRef 管理论文引用,生成参考文献 | 撰写论文 paper

书接上回&#xff0c;使用 Obsidian, Zotero, JabRef, Pandoc, Markup-Markdown | 撰写论文 paper 管理论文引用&#xff0c;生成参考文献 TL; DR导出 bibliography 文件JabRefZotero 参考文献引用语法reference-docLinks TL; DR 安装 pandoc v3.6.2. 使用一下命令&#xff0c…

计算机网络——流量控制

流量控制的基本方法是确保发送方不会以超过接收方处理能力的速度发送数据包。 通常的做法是接收方会向发送方提供某种反馈&#xff0c;如&#xff1a; &#xff08;1&#xff09;停止&等待 在任何时候只有一个数据包在传输&#xff0c;发送方发送一个数据包&#xff0c;…

【C语言入门】解锁核心关键字的终极奥秘与实战应用(三)

目录 一、auto 1.1. 作用 1.2. 特性 1.3. 代码示例 二、register 2.1. 作用 2.2. 特性 2.3. 代码示例 三、static 3.1. 修饰局部变量 3.2. 修饰全局变量 3.3. 修饰函数 四、extern 4.1. 作用 4.2. 特性 4.3. 代码示例 五、volatile 5.1. 作用 5.2. 代码示例…

2.2 实现双向链表的快速排序

实现一个双向链表的快速排序。 1>程序代码 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <pthread.h>…

力扣动态规划-19【算法学习day.113】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非常非常高滴&#xff01;&#xff01;&#xff01; 习题 1.矩形中移动的最大次数 题目链接…

Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr

在新版本的 Gurobi 中&#xff0c;向 addConstr 这个方法中传入一个 TempConstr 对象&#xff0c;在模型中就会根据这个对象生成一个约束。更重要的是&#xff1a;TempConstr 对象可以传给所有addConstr系列方法&#xff0c;所以下面先介绍 TempConstr 对象 TempConstr TempC…

neo4j-community-5.26.0 create new database

1.edit neo4j.conf 把 # The name of the default database initial.dbms.default_databasehonglouneo4j # 写上自己的数据库名称 和 # Name of the service #5.0 server.windows_service_nameneo4j #4.0 dbms.default_databaseneo4j #dbms.default_databaseneo4jwind serve…

unity实现回旋镖函数

最近学习unity2D&#xff0c;想实现一个回旋镖武器&#xff0c;发出后就可以在角色周围回旋。 一、目标 1.不是一次性的&#xff0c;扔出去、返回、没有了&#xff1b;而是扔出去&#xff0c;返回到角色后方相同距离&#xff0c;再次返回&#xff1b;再次返回&#xff0c;永远…

【C++基础】字符串/字符读取函数解析

最近在学C以及STL&#xff0c;打个基础 参考&#xff1a; c中的char[] ,char* ,string三种字符串变量转化的兼容原则 c读取字符串和字符的6种函数 字符串结构 首先明确三种字符串结构的兼容关系&#xff1a;string>char*>char [] string最灵活&#xff0c;内置增删查改…

SpringBoot源码解析(九):Bean定义接口体系

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…

C++模板编程——可变参函数模板

目录 1. 可变参函数模板基本介绍 2. 参数包展开——通过递归函数 3. 参数包展开——通过编译期间if语句(constexpr if) 4. 重载 5. 后记 进来看的小伙伴们应该对C中的模板有了一定了解&#xff0c;下面给大家介绍一下可变参函数模板。过于基础的概念将不仔细介绍。 1. 可变…

ChatGPT-4o和ChatGPT-4o mini的差异点

在人工智能领域&#xff0c;OpenAI再次引领创新潮流&#xff0c;近日正式发布了其最新模型——ChatGPT-4o及其经济实惠的小型版本ChatGPT-4o Mini。这两款模型虽同属于ChatGPT系列&#xff0c;但在性能、应用场景及成本上展现出显著的差异。本文将通过图文并茂的方式&#xff0…

2025最新源支付V7全套开源版+Mac云端+五合一云端

2025最新源支付V7全套开源版Mac云端五合一云端 官方1999元&#xff0c; 最新非网上那种功能不全带BUG开源版&#xff0c;可以自己增加授权或二开 拥有卓越的性能和丰富的功能。它采用全新轻量化的界面UI&#xff0c;让您能更方便快捷地解决知识付费和运营赞助的难题 它基于…

数据分析系列--[12] RapidMiner辨别分析(含数据集)

一、数据准备 二、导入数据 三、数据预处理 四、建模辨别分析 五、导入测试集进行辨别分析 一、数据准备 点击下载数据集 二、导入数据 三、数据预处理 四、建模辨别分析 五、导入测试集进行辨别分析 Ending, congratulations, youre done.

当卷积神经网络遇上AI编译器:TVM自动调优深度解析

从铜线到指令&#xff1a;硬件如何"消化"卷积 在深度学习的世界里&#xff0c;卷积层就像人体中的毛细血管——数量庞大且至关重要。但鲜有人知&#xff0c;一个简单的3x3卷积在CPU上的执行路径&#xff0c;堪比北京地铁线路图般复杂。 卷积的数学本质 对于输入张…

51单片机 02 独立按键

一、独立按键控制LED亮灭 轻触按键&#xff1a;相当于是一种电子开关&#xff0c;按下时开关接通&#xff0c;松开时开关断开&#xff0c;实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通和断开。 #include <STC89C5xRC.H> void main() { // P20xFE;while(1){…

wax到底是什么意思

在很久很久以前&#xff0c;人类还没有诞生文字之前&#xff0c;人类就产生了语言&#xff1b;在诞生文字之前&#xff0c;人类就已经使用了语言很久很久。 没有文字之前&#xff0c;人们的语言其实是相对比较简单的&#xff0c;因为人类的生产和生活水平非常低下&#xff0c;…

SSRF 漏洞利用 Redis 实战全解析:原理、攻击与防范

目录 前言 SSRF 漏洞深度剖析 Redis&#xff1a;强大的内存数据库 Redis 产生漏洞的原因 SSRF 漏洞利用 Redis 实战步骤 准备环境 下载安装 Redis 配置漏洞环境 启动 Redis 攻击机远程连接 Redis 利用 Redis 写 Webshell 防范措施 前言 在网络安全领域&#xff0…

【周易哲学】生辰八字入门讲解(八)

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本文讲解【周易哲学】生辰八字入门讲解&#xff0c;期待与你一同探索、学习、进步&#xff0c;一起卷起来叭&#xff01; 目录 一、六亲女命六亲星六亲宫位相互关系 男命六亲星…

大模型训练(5):Zero Redundancy Optimizer(ZeRO零冗余优化器)

0 英文缩写 Large Language Model&#xff08;LLM&#xff09;大型语言模型Data Parallelism&#xff08;DP&#xff09;数据并行Distributed Data Parallelism&#xff08;DDP&#xff09;分布式数据并行Zero Redundancy Optimizer&#xff08;ZeRO&#xff09;零冗余优化器 …