DeepSeek 新的 LLM 推理方法

DeepSeek 通过强化学习(RL)提出了一种创新的改进大规模语言模型(LLM)推理能力的方法,这在他们最近关于 DeepSeek-R1 的论文中有详细介绍。这项研究代表了在不依赖于大量有监督微调的情况下,通过纯强化学习提升 LLM 解决复杂问题能力的重大进展。

DeepSeek-R1 技术概述

模型架构:

DeepSeek-R1 并不是一个单一的模型,而是一个包含多个模型的系列,包括:DeepSeek-R1-Zero 和 DeepSeek-R1

让我来澄清一下 DeepSeek-R1 和 DeepSeek-R1-Zero 之间的主要区别:

主要区别

DeepSeek-R1-Zero 代表了团队最初的实验,使用纯强化学习而没有任何监督微调。他们从基础模型开始,直接应用强化学习,让模型通过反复试错来发展推理能力。尽管这种方法取得了令人印象深刻的结果(AIME 2024 达到 71% 的准确率),但它存在一些重大局限,特别是在可读性和语言一致性方面。该模型有 6710 亿个参数,采用混合专家(MoE)架构,每个 token 激活相当于 370 亿个参数。该模型展示了涌现的推理行为,例如自我验证、反思和长链思考(CoT)推理。

相比之下,DeepSeek-R1 使用了更复杂的多阶段训练方法。它不是纯粹依赖强化学习,而是首先在一小组精心挑选的示例(称为“冷启动数据”)上进行有监督微调,然后再应用强化学习。这种方法解决了 DeepSeek-R1-Zero 的局限,同时实现了更好的性能。这个模型同样保持了 6710 亿个参数,但在回答时提供了更好的可读性和一致性。

训练过程比较

训练方法:

• 强化学习:与传统模型主要依赖有监督学习不同,DeepSeek-R1 广泛使用 RL。训练利用了组相对策略优化(GRPO),专注于准确性和格式奖励,以增强推理能力,而无需大量标注数据。

• 蒸馏技术:为了让更多人能够使用高性能模型,DeepSeek 还发布了 R1 的蒸馏版本,参数范围从 15 亿到 70 亿。这些模型基于像 Qwen 和 Llama 这样的架构,表明复杂的推理可以被压缩到更小、更高效的模型中。蒸馏过程包括使用 DeepSeek-R1 完整模型生成的合成推理数据来微调这些较小的模型,从而在降低计算成本的同时保持高性能。

DeepSeek-R1-Zero 的训练过程较为简单:

• 从基础模型开始

• 直接应用强化学习

• 使用基于准确性和格式的简单奖励

DeepSeek-R1 的训练过程有四个独特的阶段:

  1. 使用成千上万的高质量示例进行初步有监督微调

  2. 专注于推理任务的强化学习

  3. 通过拒绝采样收集新的训练数据

  4. 在所有类型任务上进行最终的强化学习

性能指标:

• 推理基准:DeepSeek-R1 在各种基准测试中表现出色:

• AIME 2024:通过率达到 79.8%,相比之下,OpenAI 的 o1–1217 为 79.2%。

• MATH-500:得分 97.3%,稍微领先于 o1–1217 的 96.4%。

• SWE-bench Verified:在编程任务中表现突出,展示了其编程能力。

• 成本效益:DeepSeek-R1 的 API 价格为每百万输入 token 0.14 美元,对于缓存命中来说,比 OpenAI 的 o1 更便宜。

局限性与未来工作

论文中指出了几个需要改进的地方:

• 模型在处理需要特定输出格式的任务时有时会遇到困难

• 在软件工程任务上的表现可以进一步提高

• 在多语言环境中存在语言混合问题

• 少样本提示会 consistently 降低性能

未来的工作将重点解决这些局限,并扩展模型在功能调用、多轮交互和复杂角色扮演场景等方面的能力。

部署与可访问性

• 开源与许可:DeepSeek-R1 及其变体都以 MIT 许可证发布,促进开源合作和商业使用,包括模型蒸馏。这一举措对推动创新和降低 AI 模型开发的进入门槛至关重要。

• 模型格式:

• 模型及其蒸馏版本均提供 GGML、GGUF、GPTQ 和 HF 等格式,允许灵活的本地部署方式。

  1. 通过 DeepSeek 聊天平台访问:

DeepSeek 聊天平台提供了一个用户友好的界面,可以与 DeepSeek-R1 进行交互,无需任何设置。

• 访问步骤:

• 导航至 DeepSeek 聊天平台

• 注册账号或如果已有账号,则登录。

• 登录后,选择“Deep Think”模式,体验 DeepSeek-R1 的逐步推理能力。

                                            DeepSeek 聊天平台
  1. 通过 DeepSeek API 访问:

对于程序化访问,DeepSeek 提供了一个兼容 OpenAI 格式的 API,允许将其集成到各种应用程序中。

使用 API 的步骤:

a. 获取 API 密钥:

• 访问 DeepSeek API 平台创建账户并生成唯一的 API 密钥。

b. 配置环境:

• 设置 base_url 为 https://api.deepseek.com/v1。

• 使用 API 密钥进行身份验证,通常通过 Bearer Token 在 HTTP 头中进行身份验证。

c. 调用 API:

• 使用 API 发送提示并从 DeepSeek-R1 获取响应。

• DeepSeek API 文档中有详细的文档和示例。

                              DeepSeek API 调用示例
  1. 本地运行 DeepSeek-R1:

两个模型(R1 和 R1-Zero):

• 硬件要求:由于模型的规模较大,完整模型需要强大的硬件。推荐使用具有大量 VRAM(如 Nvidia RTX 3090 或更高)的 GPU。如果使用 CPU,至少需要 48GB 的内存和 250GB 的磁盘空间,但没有 GPU 加速的情况下性能会较慢。

• 蒸馏模型:对于资源要求较低的硬件,DeepSeek 提供了蒸馏版本。这些版本从 15 亿到 70 亿参数不等,适用于硬件要求较为适中的系统。例如,7B 模型可以在至少 6GB VRAM 的 GPU 或大约 4GB 内存的 CPU 上运行,适用于 GGML/GGUF 格式。

本地运行软件工具:

  1. Ollama:

你可以使用 Ollama 本地提供模型:(Ollama 是一个本地运行开源 AI 模型的工具,下载地址:https://ollama.com/download)

接下来,你需要拉取并本地运行 DeepSeek R1 模型。

Ollama 提供了不同的模型大小——基本上,越大的模型越智能,但需要更好的 GPU。以下是模型的选择:

1.5B 版本(最小):

ollama run deepseek-r1:1.5b

8B 版本:

ollama run deepseek-r1:8b

14B 版本:

ollama run deepseek-r1:14b

32B 版本:

ollama run deepseek-r1:32b

70B 版本(最大/最智能):

ollama run deepseek-r1:70b

开始实验 DeepSeek-R1 时,建议从较小的模型开始,以熟悉设置并确保与硬件的兼容性。你可以通过打开终端并执行以下命令来启动:

ollama run deepseek-r1:8b

                              来自 Reddit 的图片,via r/macapps

通过 Ollama 向本地下载的 DeepSeek-R1 发送请求:

Ollama 提供了一个 API 端点,可以通过编程方式与 DeepSeek-R1 进行交互。确保在发送 API 请求之前,Ollama 服务器已在本地运行。你可以通过运行以下命令来启动服务器:

ollama serve

服务器启动后,你可以使用 curl 发送请求:

curl -X POST http://localhost:11434/api/generate -d '{

"model": "deepseek-r1",

"prompt": "Your question or prompt here"

}'

将“Your question or prompt here”替换为你希望提供给模型的实际输入。此命令将 POST 请求发送到本地 Ollama 服务器,服务器使用指定的 DeepSeek-R1 模型处理提示,并返回生成的响应。

本地运行/访问模型的其他方法有:

vLLM/SGLang:用于本地提供模型。可以使用类似 vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-32B — tensor-parallel-size 2 — max-model-len 32768 — enforce-eager 的命令来运行蒸馏版本。

                              来自 HuggingFace 的图片

llama.cpp:你还可以使用 llama.cpp 本地运行模型。

看看其他人是如何使用 DeepSeek-R1 的:

  1. 在我的 7 台 M4 Pro Mac Mini 和 1 台 M4 Max MacBook Pro 上运行 DeepSeek R1:

  1. DeepSeek R1 1.5B 完全本地运行在浏览器中,速度为每秒 60 个 token,由 WebGPU 提供动力:

3 RAG 应用程序,通过 DeepSeek R1 模型与你的 PDF 文件聊天,本地运行在你的计算机上。

4 DeepSeek R1 1.5B 完全在手机上本地运行:

轻松解决复杂的数学问题!(大约 3200 tokens,约 35 秒,运行在 M4 Max 上,使用 mlx-lm)。

结论:

从 DeepSeek-R1-Zero 到 DeepSeek-R1 的进展代表了研究中的一次重要学习过程。虽然 DeepSeek-R1-Zero 证明了纯强化学习可以奏效,但 DeepSeek-R1 展示了如何将有监督学习与强化学习相结合,创造出一个更强大、更实用的模型。

DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求的更多相关文章

  1. iOS应用架构谈 本地持久化方案及动态部署

    转载: iOS应用架构谈 本地持久化方案及动态部署 前言 嗯,你们要的大招.跟着这篇文章一起也发布了CTPersistance和CTJSBridge这两个库,希望大家在实际使用的时候如果遇到问题,就给 ...

  2. ssiOS应用架构谈 本地持久化方案及动态部署

    本文转载至 http://casatwy.com/iosying-yong-jia-gou-tan-ben-di-chi-jiu-hua-fang-an-ji-dong-tai-bu-shu.html ...

  3. 升级本地部署的CRM到Dynamics 365及部分新特性介绍。

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复241或者20161226可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  4. 【转】git - 简明指南

    git - 简明指南 助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics其他语言 english, deutsch, españo ...

  5. git - 简明指南

    助你入门 git 的简明指南,木有高深内容 ;) 作者:罗杰·杜德勒 感谢:@tfnico, @fhd 和 Namics如有纰漏,请在 github 提报问题 安装 下载 git OSX 版 下载 g ...

  6. Java8简明指南

    Java8简明指南 转载自并发编程网 – ifeve.com本文链接地址: Java8简明指南 欢迎来到Java8简明指南.本教程将一步一步指导你通过所有新语言特性.由短而简单的代码示例,带你了解如何 ...

  7. RESTful 接口实现简明指南

    REST 简介 REST 是一个术语的缩写,REpresentational State Transfer,中文直译「表征状态转移」,这是个很拗口的词.我的建议是先不要强行理解,直接看怎么做,等对实施 ...

  8. RocketMq灰皮书(二)------本地部署启动MQ

    RocketMq灰皮书(二)------本地部署启动MQ Windows10本地部署RocketMQ 在上一篇文章中,我们对rocket的几个基本概念进行了介绍,也了解了业内几大消息中间件的区别.在本 ...

  9. TensorRT深度学习训练和部署图示

    TensorRT深度学习训练和部署 NVIDIA TensorRT是用于生产环境的高性能深度学习推理库.功率效率和响应速度是部署的深度学习应用程序的两个关键指标,因为它们直接影响用户体验和所提供服务的 ...

  10. 本地部署arcgis by eclipse

    首次来博客园发帖,从本地部署arcgis api开始吧: 首先还是下载arcgis的api包开始,在中国区官网下载arcgis包: 1.http://support.esrichina.com.cn/ ...

随机推荐

  1. 关于 Span 的一切:探索新的 .NET 明星: 2. Span<T> 是如何实现的?

    2. Span<T> 是如何实现的? https://docs.microsoft.com/en-us/archive/msdn-magazine/2018/january/csharp- ...

  2. 使用 VS Code 徒手构建 PDF 文件

    使用 VS Code 徒手构建 PDF 文件 PDF 文件是广泛应用的页面描述文件格式,从本质上讲,文件内部的结构混合使用了文本格式描述和二进制格式描述,对于简单的文件,比如说我们今天要创建的第一个 ...

  3. Spirng Data JPA 之Specification中and、or的使用

    项目中,有的地方存值以逗号分隔的方式来存储,但查询的时候是需要满足单个值或者多个值条件查询,因此用到Specification中and.or组合使用,此文用来记录,以防后用. 描述:parentCod ...

  4. JVM实战—1.Java代码的运行原理

    大纲 1.Java代码到底是如何运行起来的 2.JVM类加载机制的一系列概念 3.JVM中有哪些内存区域及各自的作用 4.JVM的垃圾回收机制的作用 5.问题汇总 1.Java代码到底是如何运行起来的 ...

  5. Qt/C++中英输入法/嵌入式输入法/小数字面板/简繁切换/特殊字符/支持Qt456

    一.前言 在嵌入式板子上由于没有系统层面的输入法支持,所以都绕不开一个问题,那就是在需要输入的UI软件中,必须提供一个输入法来进行输入,大概从Qt5.7开始官方提供了输入法的源码,作为插件的形式加入到 ...

  6. Qt音视频开发24-视频显示QOpenGLWidget方式(占用GPU)

    一.前言 采用painter的方式绘制解码后的图片,方式简单易懂,巨大缺点就是占CPU,一个两个通道还好,基本上CPU很低,但是到了16个64个通道的时候,会发现CPU也是很吃紧(当然强劲的电脑配置另 ...

  7. 9.24java wab实现创建新界面验证码

    <!DOCTYPE html> <html> <head> <title>User Login</title> <style> ...

  8. 阿里IM技术分享(六):闲鱼亿级IM消息系统的离线推送到达率优化

    本文由阿里闲鱼技术团队逸昂分享,原题"消息链路优化之弱感知链路优化",有修订和改动,感谢作者的分享. 1.引言 闲鱼的IM消息系统作为买家与卖家的沟通工具,增进理解.促进信任,对闲 ...

  9. 使用Docker部署的基于binlog实现Mysql8

    概念 MySQL 基于 Binlog 的主从复制(Master-Slave Replication)是 MySQL 数据库中实现数据复制的一种机制.在这种复制模式下,主库(Master)记录所有对数据 ...

  10. AI Editor 真的被惊到了

    引言 AI 辅助编程工具层出不穷,也尝试过不少 AI 编程辅助工具,但效果都不太理想,提示的代码命中率并不高,但却严重影响了编码的流畅性,并且聊天对话的时候,多数都需要手动引用代码,即使引用了代码,也 ...