2025-08-1202ai门户网
编辑:Aeneas好困
【本站导读】不到10美元,3B模型就能复刻DeepSeek的顿悟时刻了?来自荷兰的开发者采用轻量级的RL算法Reinforce-Lite,把复刻成本降到了史上最低!同时,微软亚研院的一项工作,也受DeepSeek-R1启发,让7B模型涌现出了高级推理技能,但却发现「顿悟时刻」并不存在!
复刻DeepSeek的神话,还在继续。
之前,UC伯克利的博士只用30美元,就复刻了DeepSeek中的顿悟时刻,震惊圈内。
这一次,来自荷兰阿姆斯特丹的研究人员Raz,再次打破纪录,把复刻成本降到了史上最低——
只要10美元,就能复现DeepSeek顿悟时刻!
Raz本人也表示,自己惊讶极了。
即使是一个非常简单的强化学习设置,并没有太多RL算法的复杂性(比如PPO、TRPO、GRPO等),也能在有限的计算资源下产生涌现的结果。
在具体设计过程中,他特别考虑强化学习中LLM中的应用和传统强化学习问题(如机器人、Atari游戏等)在状态空间和动作空间的不同。
因此,Raz选择从非常简单的RL算法——Reinforce-Lite入手。
采用轻量级强化学习算法——Reinforce-Lite生成的推理过程之一。我们将一步步看到,端到端的强化学习微调模型如何表现出智能、回溯、自我反思、逻辑推理等迹象
结果,令人出乎意料的事情发生了:只用不到10美元的成本,他就在一个3B模型上复刻了DeepSeek的顿悟时刻。
几乎就像是这个3B模型本身就具备了做出惊人事情的潜力,我们需要的,只是通过正确的方式赋予它一定的自主性而已。
接下来,让我们看一下Raz的博客,感受一下这次超经济实惠的AI推理,是怎样突破的。
复刻DeepSeek顿悟时刻,只用不到10美元
我们能否在计算资源有限(只有48GBRTX6000显卡和10美元)的情况下,让一个3B模型具备回溯、自我反思、逻辑推理等推理能力?
研究人员猜测,通过强化学习也许能做到。
强化学习是最强大的学习算法之一,它一次又一次地为我们带来令人惊叹的成果。
DeepMind的AlphaGo、OpenAI的DOTA2、MuJoCo和Atari实验、LLM的RLHF对齐,以及最近DeepSeek全面布局的RL技术,无比证明它的强大威力。
然而,由于RL有许多动态部分,一涉及到众多组件,强化学习就变得复杂了。
在此过程中,强化学习需要精心设计重要元素,如合适的信用分配机制、演员-评论员的适当超参数调整、强化学习算法类型(基于模型/无模型)等,这就导致了强化学习在更广泛的范围内应用受限。
如果在LLM环境中使用强化学习,可能涉及的模型可以多达5个:
策略模型:正在训练的模型
旧策略模型:用于计算替代目标
参考模型:用于计算KL散度(KL-divergence)
奖励模型:用于学习奖励函数
评判模型:用于计算价值函数
3B模型端到端强化学习训练的计算需求
由于涉及众多组件,不仅带来了计算负担,还带来了训练稳定性方面的复杂性和挑战。
因此,研究人员开始思考:能否从零开始重新构想整个算法,回归第一性原理?
他们的答案就是——一个简单的替代方案,Reinforce-Lite。
这种方法消除了对替代目标比率和旧策略模型的需求,通过单一策略神经网络来稳定训练过程,同时,还能为模型注入推理能力。
为此,我们需要理解的第一个问题就是——
OpenAIvsDOTA5v5:基于大规模强化学习训练
在MuJoCo、Atari、Dota等传统强化学习环境中,PPO对每个批次进行多次更新是至关重要的,这是因为在这些环境中数据收集成本非常高昂,而重复使用样本可以提高样本效率。
然而在LLM中,这种方法既无必要,又会带来巨大的计算开销。
LLM可以并行生成多样化的响应,自然形成丰富的数据集,因此就无需重复更新。
所有响应都可以使用相同的策略网络生成,一旦在序列生成结束时获得奖励,就可以进行梯度反向传播。
此外,在文本生成这样的高维动作空间中,每个batch多次更新可能导致过拟合,而非有意义的策略改进。
相反,如果每个batch单次更新,再结合分组归一化等技术,就可以在显著降低计算成本的同时,保持训练稳定性。
考虑到LLM训练本身就需要大量资源,在不影响性能的前提下简化优化过程,显然是更有效的选择。
从技术角度来看,这也消除了为计算替代目标比率而保留旧策略模型的需求。
LLM强化学习与经典强化学习的区别
总之,在这个算法中——
移除KL散度,不需要参考模型❌——改用梯度裁剪。虽然不是自适应的方法,但能有效完成任务。
移除替代目标,不需要旧策略模型❌
使用分组相对奖励进行优势计算(类似DeepSeek的GRPO方式),不需要价值网络❌
这样,我们就得到了一个轻量级的强化学习算法。
通过以上简化,优化问题最终就回归为经典的Reinforce算法——
Reinforce-Lite
在优势计算方面,研究人员采用分组相对策略优化(GRPO)的归一化技术,将每个问题的10个回应结果作为一组,并通过其归一化方法来降低梯度更新中的方差。
让我们来看看它在PyTorch中的具体实现。
defreinforce_lite(batch,policy_model,tokenizer,device,step,save_dir):policy_model.train()prompts,targets=zip(*batch)batch_size=len(prompts)evaluated_group=0all_logprobs=[]all_rewards=[]all_responses=[]all_lengths=[]forgroup_idxinrange(config.GROUP_SIZE):formatted_prompts=[format_prompt(p,tokenizer)forpinprompts]inputs=tokenizer(formatted_prompts,return_tensors="pt",padding=True,truncation=True,max_length=config.MAX_SEQ_LENGTH).to(device)generate_kwargs={**inputs,"max_new_tokens":config.MAX_NEW_TOKENS,"do_sample":True,"temperature":0.7,"top_p":0.9,"pad_token_id":tokenizer.pad_token_id,"return_dict_in_generate":True,}ifgroup_idx==evaluated_group:generated=policy_model.generate(**generate_kwargs)generated_ids=generated.sequencesoutputs=policy_model(generated_ids,attention_mask=(generated_ids!=tokenizer.pad_token_id).long())prompt_length=inputs.input_ids.shape[1]response_length=generated_ids.shape[1]-prompt_lengthifresponse_length>0:logits=outputs.logits[:,prompt_length-1:-1,:]response_tokens=generated_ids[:,prompt_length:]log_probs=torch.log_softmax(logits,dim=-1)token_log_probs=torch.gather(log_probs,-1,response_tokens.unsqueeze(-1)).squeeze(-1)sequence_log_probs=token_log_probs.sum(dim=1)else:sequence_log_probs=torch.zeros(batch_size,device=device)else:withtorch.no_grad():generated=policy_model.generate(**generate_kwargs)sequence_log_probs=torch.zeros(batch_size,device=device)responses=tokenizer.batch_decode(generated.sequences[:,inputs.input_ids.shape[1]:],skip_special_tokens=True)rewards=torch.tensor([get_reward(resp,tgt)forresp,tgtinzip(responses,targets)],device=device)all_responses.extend(responses)all_rewards.append(rewards)all_logprobs.append(sequence_log_probs)all_lengths.extend([len(r.split())forrinresponses])rewards_tensor=torch.stack(all_rewards)logprobs_tensor=torch.stack(all_logprobs)evaluated_rewards=rewards_tensor[evaluated_group]others_rewards=torch.cat([rewards_tensor[:evaluated_group],rewards_tensor[evaluated_group+1:]],dim=0)baseline=others_rewards.mean(dim=0)advantages=(evaluated_rewards-baseline)/(others_rewards.std(dim=0)+1e-8)advantages=torch.clamp(advantages,-2.0,2.0)policy_loss=-(logprobs_tensor[evaluated_group]*advantages.detach()).mean()returnpolicy_loss,rewards_tensor.mean().item(),policy_loss.item(),0.0,all_responses[0],all_lengths初始化一个经过指令微调的LLM,并通过合适的提示词使其在
为模型输出定义一个奖励函数(例如,在GSM8K基准中的正确率)。通过正则表达式从标签中提取数值,并与数据集中的实际答案进行比较。
通过直接计算相对于奖励的梯度来优化策略,无需使用替代损失函数。
采用分组相对归一化优势计算值,从而消除对批评模型的依赖。采用10作为分组大小。
使用标准的对数概率梯度技巧对模型进行更新
为了验证自己的假设,研究人员将使用GSM8K,这是一个包含小学数学问题及其答案的GradeSchoolMath8K数据集,格式如下:
问题:Natalia在4月份向她的48个朋友卖出了发夹,而在5月份她售卖的发夹数量是4月份的一半。Natalia在4月和5月总共售卖了多少个发夹?
Nataliasoldclipsto48ofherfriendsinApril,andthenshesoldhalfasmanyclipsinMay.HowmanyclipsdidNataliasellaltogetherinAprilandMay?
答案:Natalia在5月售卖了48/2=<<48/2=24>>24个发夹。Natalia在4月和5月总共售卖了48+24=<<48+24=72>>72个发夹。####72
Nataliasold48/2=<<48/2=24>>24clipsinMay.Nataliasold48+24=<<48+24=72>>72clipsaltogetherinAprilandMay.####72
虽然答案中就包含了完整的推理步骤,但让研究人员感兴趣的,只有###后的最终答案。
对此,研究人员引导策略模型,以
这更像是一个蒙特卡洛问题——在每个回合结束时,才能获得奖励。
defformat_prompt(question:str)->str:returnf"""<|begin_of_text|><|start_header_id|>user<|end_header_id|>Solvethismathproblem:{question}Showyourreasoningfirstin研究人员把奖励机制设计得很简单易懂,对于策略模型:
答案错误时,给予负奖励-1
答案正确时,给予正奖励+1
defget_reward(completion:str,target:str)->float:reward=-1.0try:completion=completion.strip()start_tag="接下来,研究人员使用Reinforce-Lite算法,在RTXA6000显卡上训练了3B模型,训练时间为12小时,并采用大小为10的分组。
在训练初期,可以观察到:模型不断尝试增加输出序列/输出token的长度,但会经常遇到内存溢出(OOM)问题,这就限制了模型尝试更长的推理过程,并从中有效学习。
奖励图表展示的是分组响应的平均得分。理想情况下,平均值越接近1,表示模型在大多数采样响应中的准确率越高。
在这次实验中,研究人员只训练了数百次迭代,可以观察到当策略模型尝试不同策略时,得分会出现一定波动。
这种波动可以通过熵正则化来平衡探索与利用之间的关系,这是他们未来探索的一个方向。
研究在GSM8K数据集上评估了Reinforce-Lite,发现在有限训练时间内,Reinforce-Lite相比指令模型在得分上实现了小幅提升。
具体来说,MetaLlama3.2模型提升了2.0%(从70.5提升至72.5),而在FP16格式下运行的Phi3.5Instruct则提升了0.6%(从83.4提升至84.0)。
观察一些推理轨迹后可以发现,经过Reinforce-Lite微调的模型展现出了多种推理能力,包括:
逻辑思维
搜索策略
结果验证
通过表格进行中间计算
试错方法等
注意!这些推理轨迹,在常规的指令模型中均未观察到。
比如在下图中,模型展现出了基本的数学推理能力。它能够通过代数表达式设立问题,并通过解方程来求解。
过程中,它能识别出不合理的解,在原方案不可行时选择调整解决方案,最终还能通过比较不同选择的成本,来做出最优决策。
在这道题中,模型表现出的处理包含条件推理和纠错的能力,也令人印象深刻。
它首先设定了问题背景,计算派对开始时的总人数。然后根据已知条件(总共40人,1/4人离开),计算出有10人离开派对。
然而,在计算离开的女性人数时,模型居然得出了一个负数,它意识到了自己的推理中,一定出现了逻辑错误。
为此,它重新审视了情况,修正了自己的推理,正确计算出派对上剩下了8名女性,从而得出正确答案。
这道题中,模型设定初始绷带数量为x,根据给定条件将绷带数量的变化转换为代数方程,但解出的方程结果是x=-6。
它意识到自己的错误后,回顾了之前的步骤,识别出自己在计算第三天的绷带使用量时犯了错。修正方程后,它重新计算出了正确结果。
整个过程中,它展现出了较强的自我纠错和逻辑推理能力,能在复杂计算过程中发现并修正问题。
总结来说,这项研究主要有以下发现。
结构化推理能力提升
从生成的序列中可以观察到,经过RL微调的模型在评估得分上实现了小幅提升。
简化算法复杂度,无需PPO的复杂性
研究表明,对LLM进行微调只需要一个策略网络即可,无需采用PPO的复杂机制。
优化计算效率
Reinforce-Lite作为一个计算友好型算法,支持端到端的RL训练,同时显著降低了训练复杂度。
增强模型自主性
算法成功地赋予了LLM自主能力,让模型会通过尝试不同策略来获取奖励。
更长的推理回合,需要更多内存
随着训练的进行,可以发现模型倾向于进行更长的推理过程,但在使用48GBGPU训练3GB模型(FP16)时,如果超过1024个token,就会频繁出现内存溢出问题。
在没有KL散度的情况下确保稳定性
研究人员发现,使用简单的梯度裁剪就能有效替代KL散度计算,这是一种高效的替代方案,用于防止策略偏离。在整个训练过程中,模型策略保持稳定,未出现剧烈波动。
DeepSeek-R1启发,7B模型实现高级推理技能
巧的是,最近来自微软亚洲研究院的一项工作,也证明了RL的巨大潜力——通过有效且稳定的RL训练后,一个7B模型,居然就发展出了反思、验证和总结的高级推理技能!
而这些技能,在逻辑语料库中是完全缺失的。
受DeepSeek-R1成功的启发,研究团队探索了基于规则的强化学习(RL)在大规模推理模型中的潜力。
论文地址:https://arxiv.org/abs/2502.14768
为了分析推理机制,他们选择了具有可控复杂度和直接答案验证方式的「合成逻辑谜题」作为训练数据。
在此过程中,团队取得了一些关键性的技术突破,并促成了有效且稳定的RL训练:
一个着重强调思考和回答过程的systemprompt
一个用于惩罚取巧输出的严格格式奖励函数
一个能实现稳定收敛的简单训练方案
其中,训练框架采用REINFORCE++算法和来自DeepSeek-R1的奖励设计进行后训练。
随着RL训练的进行,可以观察到模型自然地分配更多的训练步骤用于推理。这种计算扩展从生成数百个token扩展到数千个token,使其能够更深入地探索和完善其思维过程。
结果显示,只有70亿参数的Qwen2.5-7B,在经过5K个逻辑问题的训练后,就发展出了一些在逻辑语料库中原本不存在的高级推理技能——如反思、验证和总结能力。
研究中,考验模型的这道逻辑题是这样的。
问题:一个非常特殊的岛屿上只住着骑士和**。骑士总是说真话,**总是说谎。你遇到两位岛民:Zoey和Oliver。Zoey说:「Oliver不是骑士。」Oliver说:「Oliver是骑士且Zoey是**。」请问,谁是骑士,谁是**?
正确答案:(1)Zoey是**;(2)Oliver是骑士。
这个「骑士与**」谜题,因其合成设计和逻辑精确性而非常适合进一步分析。
首先,谜题对于模型来说都是未见过大数据,非常适合用来测试泛化能力。
其次,通过改变字符数量(2到8个)和逻辑运算的复杂性(1到4种布尔运算符组合),可以调节难度。
而且,每个谜题都有一个单一、明确的正确答案,正确性由生成算法保证。解答需要严格的演绎推理,因此减少了奖励作弊的风险。
总之,每个谜题都遵循正式规则构建,能确保每个问题都有一个独特的解决方案,并可以确定性地验证。这消除了自然语言任务中常见的模糊性,使我们能够清晰地区分真正的推理能力和表面上的记忆。
在奖励建模中,研究在模型输出中不断检测作弊行为,并不断改进奖励设计。
最终,他们设计出了一种几乎无法作弊的基于规则的奖励系统,仅包含两种奖励类型:格式奖励和答案奖励。
以下就是不同的推理模型和通用模型在不同难度的K&K逻辑谜题上的表现。
在RL训练后,可以在模型中观察到以下涌现的行为。
1.会出现犹豫和自我验证
在思考环节,模型会不时使用「我不是完全确定,让我们重新检查这一步」这类反思性表达。
这种自我审视的行为特征在预训练阶段是完全不存在的,而是通过奖励正确答案、惩罚错误答案的强化学习机制逐步培养形成的。
2.多轮径探索和回溯
经过RL训练后,模型会主动提出多个解决方案(「让我们测试两种可能性」),并通过回溯来检查解决方案的一致性。
3.应用公式
尽管训练数据集中并未包含,但模型不仅能够通过系统性试错方法解决谜题,还自主整合了形式逻辑推理能力(比如运用「如果P,则Q」的逻辑蕴含公式),这种推理模式与人类的问题解决方式高度相似。
4.忽然开始说中文
模型在分析问题陈述时会临时插入中文表达,随后又能自然地转换为英语来提供解决方案。
这一现象表明,模型正在使用语言混合机制作为一种潜在的备选处理策略,或是形成了某种特殊的内部表征模式。
在具有挑战性的数学基准测试AIME和AMC上,模型展现出了卓越的泛化能力——成绩分别提高了125%和38%。
这种跨领域泛化能力表明,RL训练的推理启发式方法发展出了抽象的问题解决模式,而不是依赖于特定领域的模式匹配。
所以,这项研究的训练期间,也出现「顿悟时刻」了吗?
换句话说就是,在强化学习过程中,模型的推理能力是否会发生显著的飞跃,出现多步验证或反思,而且这些行为不是在训练语料中明确植入的,而是模型与RL环境的互动所自然产生的?
研究人员发现,模型并没有出现「等一下,等一下」这样特定的语言表述,但图4显示出,它在第10步时表现出了一些复杂的推理行为(例如自我反思、探索、验证、总结)。
由此,研究人员的结论是,RL学习过程可能没有突如其来的「顿悟时刻」——复杂的推理行为并不是在某个特定的训练步骤中突然出现的。
1.反思性词汇(如「检查」和「验证」)的频率缓慢增加(a)-(c);2.会话性短语(例如「让我们」)和谨慎词汇(例如「还」)变得更加频繁(d)-(e);3.中文词汇开始出现在英文回复中(f)。所有这些词汇的频率都在稳步发展,没有突然的跳跃,表明可能不存在明显的「顿悟时刻」
除了上述技术贡献外,研究还有几个有趣的发现:
更长的回答并不能保证更好的推理。长度本身不是评估训练时间的有效指标。最有效的推理来自最短路径。
语言混合会阻碍推理。这一观察强调了在奖励建模中需要语言一致性惩罚。
增加「思考」token确实有帮助。RL训练自然地提高了与反思相关词汇的频率,表明某些token频率与性能之间存在相关性。
监督微调(SFT)依赖记忆;RL实现泛化。SFT严重依赖记忆,往往导致表面的捷径学习,而RL则在最小依赖数据集结构的情况下自我演化。
冷启动是一个优势,但非必需。无论是从基础模型还是指令模型开始,训练动态都保持惊人的相似性,尽管后者表现略好。
课程学习仍然重要。在固定的数据筛选比例下,精心设计的课程学习方法总是优于随机打乱。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表本站立场。文章及其配图仅供学习分享之
新品榜/热门榜