DeepSeek R1 对比 AlphaGo,Zero 的思考过程

作者:真中合欢
原文:https://zhuanlan.zhihu.com/p/19897045280

等了好久,终于等来R1的论文,我在当天晚上第一时间拜读。整篇论文的实验和理论给我一种简洁的优雅,和DeepSeek-V3那篇论文的感觉完全不同。读论文的过程中,我就想起了曾经看过的AlphaGo。于是也想发表一些浅显的看法,有不对的地方欢迎指出。

Reward设计

读完这篇论文,或者说读论文的过程中,R1的reward模型就给我留下了深刻印象:基于规则的奖励模型。

R1在文中提到,自己为什么没有用PRM:

第一,在一般推理中,明确界定细粒度的推理步骤比较困难。第二,判断当前推理中间步骤是否正确非常困难。使用模型进行自动标注差强人意,而手动标注不利于扩大规模。第三,一引入基于模型的 PRM,就不可避免地会有奖励劫持问题,动态重训奖励模型资源开销大。

我非常认同这一观点。因为从事LLM之初,我首先负责的是预训练,所以一个方法能否 scaling up 成为了我后面做持续训练、post-train时,评估这个方法最终能不能work并上到线上模型的重要维度(事实也证明,这样的方法基本都是work的),所以我很认同第二点。虽然现在有很多MC构造数据训练PRM的方法可以scaling up,但是前段时间qwen 数学推理的论文也提到了MC的方法就是会有幻觉,不如llm as judge,更不如人类标注,这里R1索性不用PRM了。但是r1因为要避免reward hacking,直接连基于模型的ORM都抛弃了,我觉得还是有魄力的。毕竟有不少工作表明了稠密reward在抗噪和提点方面的优势。但是仔细想想,其实qwen的那篇论文也提到了ORM有一定的PRM的特性,其实也会出幻觉(hacking)。

模型训练

对于模型主体训练,R1使用了一个多阶段策略:

  • • 首先利用base 模型+ 一些prompt + rule-based reward ,跳过SFT直接上GRPO强化,目标

### 如何在 DeepSeek R1 70B 模型中传递参数而不经过思考过程的具体方法 DeepSeek R1 的 70B 模型采用了混合专家(Mixture of Experts,MoE)架构[^1]。这种架构通过门控机制动态激活最相关的专家子网络来处理特定任务,而不是在整个模型中进行全局计算。为了实现高效的参数传递且避免复杂的“思考过程,可以利用以下方法: #### 方法一:直接设置 API 参数 DeepSeek 提供了官方的 Python SDK 和 RESTful API 接口,允许用户通过简单的参数配置调用大语言模型[^2]。以下是一个代码示例,展示如何通过 API 传递参数而无需额外的推理逻辑: ```python import deepseek # 初始化 DeepSeek API 客户端 client = deepseek.DeepSeekClient("your_api_key_here") # 定义请求参数 params = { "model": "r1-70b", # 指定使用 R1 70B 模型 "prompt": "你的输入文本", "max_tokens": 50, # 设置生成的最大 token 数量 "temperature": 0.7, # 控制输出的随机性 "top_p": 0.9, # 核采样概率 } # 发起请求并获取结果 response = client.generate(params) print(response) ``` 上述代码通过 `params` 字典直接传递所有必要的参数,包括模型名称、提示文本、最大生成长度等。这种方法完全绕过了复杂的推理过程,直接依赖预定义的参数配置。 #### 方法二:本地化部署与参数传递 对于需要更高性能或隐私保护的应用场景,可以选择将 DeepSeek R1 70B 模型本地化部署[^3]。本地化部署后,可以通过调整环境变量或加载配置文件的方式传递参数。例如: ```bash # 设置环境变量以控制模型行为 export DEEPSEEK_MODEL=r1-70b export DEEPSEEK_MAX_TOKENS=100 export DEEPSEEK_TEMPERATURE=0.8 ``` 随后,在加载模型时,这些环境变量会被自动读取并应用到模型运行过程中。这种方式同样避免了显式的“思考过程,而是通过外部配置完成参数传递。 #### 方法三:批量处理与并行路由 由于 DeepSeek R1 70B 模型支持 MoE 架构中的并行路由机制[^1],可以在参数传递时指定每个 token 的专家数量(如 `"num_experts_per_tok": 8`)。以下是一个伪代码示例,展示如何通过批量处理简化参数传递: ```python from deepseek import DeepSeekModel # 加载模型 model = DeepSeekModel("r1-70b") # 批量处理输入 batch_inputs = ["输入文本1", "输入文本2", "输入文本3"] # 配置参数 model_params = { "num_experts_per_tok": 8, # 每个 token 并行路由到 8 个专家 "max_length": 64, # 最大生成长度 } # 执行批量推理 outputs = model.generate(batch_inputs, **model_params) for output in outputs: print(output) ``` 此方法通过批量处理和固定参数配置,进一步减少了推理过程中的复杂性。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值