PRIME

GitHub
1.8k 109 较难 1 次阅读 今天Apache-2.0开发框架语言模型
AI 解读 由 AI 自动生成,仅供参考

PRIME 是一个专为提升大语言模型高级推理能力而设计的开源强化学习解决方案。面对传统模仿学习在扩展性上的瓶颈,PRIME 致力于将数据驱动的方法转化为基于探索的强化学习路径,从而让模型具备更强的逻辑推导与问题解决能力。

该工具主要解决了两大核心难题:一是如何高效、可扩展地获取精确且密集的奖励信号,二是如何构建高效的强化学习算法以充分释放这些信号的潜力。PRIME 的独特技术亮点在于其“隐式过程奖励建模”(Implicit Process Reward Modeling)机制,它无需依赖昂贵的人工标注或外部裁判模型,即可在训练过程中自动推断出细粒度的过程奖励,显著降低了高质量推理数据的获取成本。

PRIME 非常适合 AI 研究人员、大模型开发者以及对提升模型数学推理和复杂逻辑能力感兴趣的技术团队使用。项目已完整开放训练代码、数据预处理脚本及评估工具,并支持集成到 veRL 框架中,方便用户快速复现结果或进行二次开发。通过 PRIME,开发者可以更轻松地探索超越单纯蒸馏或模仿的模型进化路径,推动语言模型在复杂推理任务上的表现迈向新台阶。

使用场景

某金融科技团队正致力于构建一个能自动解决复杂量化数学题的 AI 助手,以辅助分析师进行高频交易策略推导。

没有 PRIME 时

  • 推理过程黑盒化:模型仅靠模仿历史数据生成答案,一旦遇到新颖的数学变种题,往往直接给出错误结论且无法追溯逻辑断点。
  • 奖励信号稀疏滞后:传统强化学习只能在最终答案对错时给予反馈,模型难以知晓中间哪一步推导导致了失败,训练效率极低。
  • 泛化能力遭遇瓶颈:随着题目难度增加,单纯依靠数据蒸馏的方法失效,模型在未见过的复杂逻辑链条上表现大幅下滑。
  • 试错成本高昂:为了提升准确率,团队需要耗费大量算力进行盲目探索,却因缺乏精细的过程引导而收效甚微。

使用 PRIME 后

  • 隐式过程奖励引导:PRIME 通过隐式过程奖励模型(Implicit PRM),在每一步推理中自动提供密集的信号,让模型实时感知逻辑是否偏离。
  • 可解释的错误修正:模型不再只关注结果,而是学会了自我监控推导过程,能够主动识别并纠正中间步骤的逻辑漏洞。
  • 探索式能力跃迁:从被动模仿转向主动探索,PRIME 帮助模型在面对从未见过的奥数级难题时,依然能通过多步推理找到正确路径。
  • 训练效率显著提升:得益于可扩展的在线 RL 架构,团队用更少的数据和算力消耗,就实现了模型在复杂推理任务上的准确率突破。

PRIME 通过将粗糙的结果反馈转化为精细的过程指引,成功让大模型具备了像人类专家一样“边思考边纠错”的高级推理能力。

运行环境要求

操作系统
  • Linux
GPU
  • 必需 NVIDIA GPU
  • 代码示例中使用 vLLM,需设置 tensor_parallel_size 和 gpu_memory_utilization (0.90),暗示需要多卡或大显存环境以运行 7B+ 模型并进行 RL 训练
  • 具体型号和 CUDA 版本未说明
内存

未说明

依赖
notes该工具主要集成在 veRL (volcengine/verl) 框架中。推理示例依赖 vLLM 库。训练隐式过程奖励模型 (Implicit PRM) 的代码位于单独的仓库 (PRIME-RL/ImplicitPRM)。环境变量中设置了 NCCL 和 Tokenizers 并行选项,表明主要针对多 GPU Linux 环境优化。
python未说明
torch
transformers
vllm
tqdm
PRIME hero image

快速开始

通过隐式奖励进行过程强化

论文 Github Notion Hugging Face Collection

🎉新闻

  • [2025/03/12] PRIME 已集成到 veRL 主分支!请尝试 这里
  • [2025/02/04] 我们在 arXiv 上发布了论文。详情请见 这里
  • [2025/01/06] 我们发布了训练/评估/数据预处理代码。欢迎大家使用!我们目前正在撰写论文,很快就会发布。
  • [2025/01/02] 我们提出了 PRIME(通过隐式奖励进行过程强化),这是一种用于在线强化学习的开源解决方案,旨在通过过程奖励推动语言模型的推理能力超越模仿或蒸馏。所有模型和数据均通过 HuggingFace 发布。

🔗链接

✨入门

目前,我们提供了 PRIME 的以下代码,您可以在每个目录中找到更多详细信息。

  • training:PRIME 的实现和训练脚本。
  • data_preprocessing:数据准备,尤其是用于 PRIME 的数学数据。
  • eval:用于复现 PRIME 结果的评估脚本。
  • 对于隐式 PRM 的训练和评估,请参考 此仓库

📖简介

image-20241230162026156

尽管可以通过数据驱动的模仿来提升大型语言模型(LLMs)的高级推理能力,但其可扩展性仍然面临严峻挑战。我们认为,克服这些挑战的关键在于将数据驱动的方法转变为基于探索的方法,正如强化学习(RL)所体现的那样。为此,需要解决两个关键瓶颈,以实现这一转变:(1) 如何高效且可扩展地获取精确的 奖励信号,尤其是密集型奖励?(2) 我们如何构建有效的强化学习算法,以充分 释放 这些信号的潜力?

我们致力于通过 高效的奖励建模和强化学习,寻找通往高级推理能力的 可扩展路径。我们的工作源于隐式过程奖励建模(PRM)的目标。无需任何过程标签,隐式 PRM 被训练为一个结果奖励模型(ORM),然后用作 PRM。除了通过推理规模的扩大来提升模型性能外,隐式 PRM 的真正力量体现在在线强化学习训练中。具体而言,它为 RL 带来了三大优势:

  • 密集奖励: 隐式 PRM 直接学习一个 Q 函数,为 每个 token 提供奖励,从而在无需额外价值模型的情况下缓解奖励稀疏问题。
  • 可扩展性: 隐式 PRM 只需根据结果标签即可在线更新。因此,我们可以直接使用基于策略的轨迹和结果验证器来更新 PRM,这既缓解了分布偏移问题,也解决了 PRM 的可扩展性问题。
  • 简单性: 隐式 PRM 本质上就是一个语言模型。实际上,我们表明,预先训练一个 PRM 并非必要,因为 SFT 模型本身已经可以作为一个强大的起点。

随后,我们深入研究强化学习,以确定其关键的算法设计和实现技术。为此,我们提出了通过隐式奖励进行过程强化的方案——PRIME,该方案能够有效地将 PRM 整合并更新到强化学习过程中。

prm

如上图所示,在 PRIME 中,策略模型和 PRM 均以 SFT 模型作为初始状态。对于每一次强化学习迭代,策略模型首先生成轨迹。然后,隐式 PRM 和结果验证器会对这些轨迹进行评分,隐式 PRM 会根据结果奖励对轨迹进行更新。最后,将结果奖励 $r_o$ 和过程奖励 $r_p$ 组合起来,用于更新策略模型。

PRIME 的实现伪代码如下:

prime-algo

算法流程包括:

  1. 提示过滤:根据策略模型的表现,仅保留那些策略模型 $\pi_\theta$ 准确率在 0.2 到 0.8 之间的提示。

  2. 计算隐式过程奖励 $r^t$。

  3. 更新隐式 PRM $\pi_\psi$:基于预测的隐式过程奖励 $r^t$ 和真实的结果标签 $r$。

  4. 使用 RLOO 进行优势估计。 具体来说,我们首先分别计算结果奖励和隐式过程奖励的回报:

    • 对于真实的结果奖励,我们直接采用 RLOO,不做任何修改。

    • 对于隐式过程奖励,我们执行三步流程来计算回报:(1) 使用平均的隐式过程奖励计算留一法基准;(2) 将第 $t$ 步的过程奖励减去基准值进行归一化;(3) 计算每条响应的折现回报。

      最后,优势设置为两者的组合。

  5. 使用 PPO 损失进行合法的重要性采样,更新策略 $\pi_\theta$。

🔧使用方法

我们为编程和数学任务应用定制化的提示:

编程

{question} + "\n\n请用Python编写代码解决该问题。在最后以\n```python\n你的代码\n```\n的格式呈现。"

数学

{question} + "\n\n请以LaTeX格式给出答案:\\boxed{你的答案}"
点击查看推理代码。
import os
from tqdm import tqdm
import torch
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams
os.environ["NCCL_IGNORE_DISABLED_P2P"] = "1"
os.environ["TOKENIZERS_PARALLELISM"] = "true"
def generate(question_list,model_path):
    llm = LLM(
        model=model_path,
        trust_remote_code=True,
        tensor_parallel_size=torch.cuda.device_count(),
        gpu_memory_utilization=0.90,
    )
    sampling_params = SamplingParams(max_tokens=8192,
                                    temperature=0.0,
                                    n=1)
    outputs = llm.generate(question_list, sampling_params, use_tqdm=True)
    completions = [[output.text for output in output_item.outputs] for output_item in outputs]
    return completions
def make_conv_hf(question, tokenizer):
    # 对于数学问题
    content = question + "\n\n请以LaTeX格式给出答案:\\boxed{你的答案}"
    # 对于编程问题
    # content = question + "\n\n请用Python编写代码解决该问题。在最后以\n```python\n你的代码\n```\n的格式呈现。"
    msg = [
        {"role": "user", "content": content}
    ]
    chat = tokenizer.apply_chat_template(msg, tokenize=False, add_generation_prompt=True)
    return chat
    
def run():
    model_path = "PRIME-RL/Eurus-2-7B-PRIME"
    all_problems = [
        "哪个数更大?9.11还是9.9?"
    ]
    tokenizer = AutoTokenizer.from_pretrained(model_path)
    completions = generate([make_conv_hf(problem_data, tokenizer) for problem_data in all_problems],model_path)
    print(completions)
    # [['[ASSESS]\n\n# 问题要求比较两个小数,9.11和9.9,以确定哪个更大。\n# 我们需要比较这两个数的整数部分和小数部分。\n\n下一步:[ADVANCE]\n\n# 比较整数部分:9.11和9.9的整数部分都是9。\n# 比较小数部分:9.11的小数部分0.11小于9.9的小数部分0.9。\n\n下一步:[ADVANCE]\n\n# 由于整数部分相同,而9.9的小数部分大于9.11的小数部分,我们可以得出结论:9.9比9.11大。\n\n下一步:[OUTPUT]\n\n最终答案是$\\boxed{9.9}$。\n\n']]
if __name__ == "__main__":
    run()

📃评估

通过PRIME,我们在关键推理基准测试上相比模型的SFT版本取得了显著提升,平均提升了16.7%,在AMC和AIME竞赛中更是超过了20%。我们的最终模型Eurus-2-7B-PRIME,基于Qwen-2.5-Math-7B-Base,超越了其指令版模型,在5个关键推理基准测试中表现更优。最终结果如下:

Eurus-2-7B-PRIME Eurus-2-7B-SFT Qwen-2.5-Math-7B-Instruct Llama-3.1-70B-Instruct GPT-4o
AIME 2024 26.7 (+23.3) 3.3 13.3 16.7 9.3
MATH-500 79.2 (+14.1) 65.1 79.8 64.6 76.4
AMC 57.8 (+27.7) 30.1 50.6 30.1 45.8
Minerva Math 38.6 (+5.9) 32.7 34.6 35.3 36.8
OlympiadBench 42.1 (+12.3) 29.8 40.7 31.9 43.3
Avg. 48.9 (+16.7) 32.2 43.8 35.7 43.3

与Qwen-Math相比,我们仅使用了其十分之一的数据和模型资源便实现了这一成果。

Eurus-2-7B-PRIME Qwen2.5-Math-7B-Instruct
基础模型 Qwen2.5-Math-7B Qwen2.5-Math-7B
SFT数据 23万(开源) 250万(开源和内部)
RM数据 0 61.8万(内部)
RM Eurus-2-7B-SFT Qwen2.5-Math-RM(72B)
RL数据 15万条查询 × 4个样本 6.6万条查询 × 32个样本

🎈引用

如果您觉得PRIME或ImplicitPRM对您有帮助,请引用我们的论文。

@article{cui2025process,
  title={通过隐式奖励进行过程强化},
  author={Cui, Ganqu and Yuan, Lifan and Wang, Zefan and Wang, Hanbin and Li, Wendi and He, Bingxiang and Fan, Yuchen and Yu, Tianyu and Xu, Qixin and Chen, Weize and others},
  journal={arXiv预印本 arXiv:2502.01456},
  year={2025}
}
@article{yuan2024implicitprm,
  title={无需过程标签的免费过程奖励},
  author={Lifan Yuan and Wendi Li and Huayu Chen and Ganqu Cui and Ning Ding and Kaiyan Zhang and Bowen Zhou and Zhiyuan Liu and Hao Peng},
  journal={arXiv预印本 arXiv:2412.01981},
  year={2024}
}

🌻致谢

我们实现的强化学习算法基于veRL扩展而来。我们在推理过程中使用了vLLM,并基于EurusQwen2.5-Math以及LiveCodeBench开发了评估脚本。我们的数据来源主要包括NuminaMathAPPSCodeContestsTACO以及Codeforces。感谢他们的杰出贡献!

📈星标历史

星标历史图

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|2天前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|3天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

145.9k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

108.1k|★★☆☆☆|今天
开发框架图像Agent

markitdown

MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器

93.4k|★★☆☆☆|2天前
插件开发框架

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|2天前
语言模型图像Agent