RM-Gallery: 一站式奖励模型平台

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: 近年来,大型语言模型(LLMs)发展迅速,比如 ChatGPT、Qwen、Claude、 Llama。这些模型最初的能力来自预训练规模的扩展(pre-training scaling),即通过 “next-token prediction” 的任务,在海量语料上训练,从而获得通用能力。但是面对具体场景,由于场景任务目标不一定和通用能力匹配(比如对齐场景),所以预训练模型表现会有一些不足。为了在预训练之后进一步优化大型语言模型,近年来的研究开始转向训练后和测试时的规模扩展,其中奖励模型起着关键作用。

01.背景

近年来,大型语言模型(LLMs)发展迅速,比如 ChatGPT、Qwen、Claude、 Llama。这些模型最初的能力来自预训练规模的扩展(pre-training scaling),即通过 “next-token prediction” 的任务,在海量语料上训练,从而获得通用能力。但是面对具体场景,由于场景任务目标不一定和通用能力匹配(比如对齐场景),所以预训练模型表现会有一些不足。为了在预训练之后进一步优化大型语言模型,近年来的研究开始转向训练后和测试时的规模扩展,其中奖励模型起着关键作用。

 

奖励模型(Reward Model, RM)在大型语言模型(LLM)中扮演着 “人类偏好翻译官” 和 “优化指南针” 的关键角色,比如在对齐场景(aligiment)中,它通过学习人类对 LLM 输出的偏好(如哪些回答更相关、更安全、更符合伦理或逻辑),将抽象的人类判断转化为可量化的奖励分数,成为人类偏好的 “代理”;随后,这些分数为 LLM 的优化提供明确信号 —— 无论是通过强化学习(如 RLHF)还是其他对齐技术,都能引导模型调整输出策略,更倾向于生成高分(即更符合人类需求)的内容,最终解决 LLM 预训练后可能存在的 “输出与人类价值观脱节” 问题,让模型行为更贴合实际使用场景的期望。

 

目前业界头部的大模型厂商,如OpenAI、Anthropic等均通过迭代奖励模型的方式,优化模型和产品体验,但均未开源其具体实现。开源社区中虽然存在一些奖励模型相关项目,如RLHF-Reward-Modeling、RL/RLHF相关的训练框架也提供部分基础Reward Model的训练。

 

这里向你介绍RM-Gallery:集奖励模型训练、构建与应用于一体的一站式平台。RM-Gallery通过标准化奖励接口可以灵活构建奖励模型,内置了丰富的奖励模型库你可以即拿即用,并且提供了多种奖励应用场景和高性能reward server的实践。基于RM-Gallery你可以很方便的训练、构建、应用你需要的奖励模型。

 

欢迎关注RM-Gallery,在Github上(https://github.com/modelscope/RM-Gallery为项目star 🌟

 

02.为什么使用RM-Gallery

RM-Gallery 是一个集奖励模型训练、构建与应用于一体的一站式平台,支持任务级与原子级奖励模型的高吞吐、容错实现,助力奖励模型全流程落地。

 

 

image.gif 编辑

RM-Gallery 框架图

🏋️‍♂️ 奖励模型训练

集成奖励模型训练流程:提供基于RL的推理奖励模型训练框架,兼容主流框架(如verl),并提供集成RM-Gallery的示例。

 

image.gif 编辑

RM训练流程在RM Bench上提升准确率

该图展示了RM训练流程的有效性。在RM Bench上,经过80步训练,准确率由基线模型(Qwen2.5-14B)的约55.8%提升至约62.5%。

🏗️ 奖励模型构建

  • 统一奖励模型架构:

通过标准化接口灵活实现奖励模型,支持多种架构 (model-based/free)、奖励格式 (scalar/critique)、打分模式 (pointwise/listwise/pairwise)。

  • 丰富的奖励模型库:

内置多种任务(如Math、Code、Alignment)现成可用的奖励模型,支持任务级(RMComposition)与组件级(RewardModel)调用。用户可直接应用RMComposition/RewardModel,或按需组装自定义RMComposition。

  • Principle-Critic-Score范式:

采用Principle-Critic-Score的推理奖励模型范式,提供最佳实践,助力用户在偏好数据有限时高效生成原则。

 

image.gif 编辑

 

image.gif 编辑

上图显示,基于Principle-Critic-Score范式,在基线模型(Qwen3-32B)基础上添加1-3条principle后,RewardBench2与RMB-pairwise均有显著提升。

🛠️ 奖励模型应用

  • 多场景适用:覆盖奖励模型后训练(如post-training)、推理(如Best-of-N、data-correction)等多种场景,配套详细最佳实践。
  • 高性能RM服务:基于New API平台,提供高吞吐、容错的奖励模型服务,提升反馈效率。

03.快速上手RM-Gallery

3.1 下载&安装

RM-Gallery 需 Python >= 3.10 且 < 3.13

可以通过源码或者从PyPi安装。安装后就可以在自己的python项目中使用

 

源码安装

# 从GitHub拉取源码
git clone https://github.com/modelscope/RM-Gallery.git
# 安装依赖
pip install .

image.gif

PyPi安装

pip install rm-gallery

image.gif

3.2 三步训练奖励模型

RM-Gallery 提供基于VERL框架的奖励模型训练流程,支持pointwise(绝对打分)与pairwise(偏好比较)两种范式。

 

以下为pointwise训练示例:

3.2.1 准备训练数据

下载并转换HelpSteer2数据集:

# 下载数据集
mkdir -p ~/data/HelpSteer2 && cd ~/data/HelpSteer2
git clone https://huggingface.co/datasets/nvidia/helpsteer2
# 转换为所需格式
python examples/data/data_from_yaml.py --config examples/train/pointwise/data_config.yaml

image.gif

3.2.2 启动Ray分布式集群

单机8卡示例:

ray start --head --node-ip-address $MASTER_ADDR --num-gpus 8 --dashboard-host 0.0.0.0

image.gif

3.2.3 启动训练(以pointwise模型为例)

进入点式训练目录并运行脚本:

cd examples/train/pointwise
chmod +x run_pointwise.sh
./run_pointwise.sh

image.gif

3.3 构建奖励模型

本节介绍如何基于RM-Gallery框架按需构建奖励模型。

直接使用内置RM

选择合适的RM

下表为RM-Gallery内置主要场景:

场景

说明

Math

聚焦数学正确性验证与相关任务评测

Code

代码质量评测,包括语法、风格、补丁相似度与执行正确性

Alignment

评测与优化有益性、无害性、诚实性等人类价值

General

通用评测指标,如准确率、F1、ROUGE、数字准确率

Format and Style

输出格式、风格、长度、重复、隐私合规性检查。

 

你可以通过如下方式查看所有注册RM:

from rm_gallery.core.reward.registry import RewardRegistry
RewardRegistry.list()

image.gif

初始化内置RM

from rm_gallery.core.reward.registry import RewardRegistry
# 注册表模式初始化
rm = RewardRegistry.get("Your RM's Registry Name")

image.gif

🛠️ 自定义RM

如需自定义RM,可参考下列基类,按评测策略选择:

BaseReward
├── BasePointWiseReward                             # Point-wise evaluation of individual responses.
├── BaseListWiseReward                              # Comparative evaluation of multiple responses.
│   └── BasePairWiseReward                          # Specialized pairwise comparisons.
├── BaseStepWiseReward                              # Comparative evaluation of multiple responses.
└── BaseLLMReward                                   # LLM-based evaluation framework.
    ├── BasePrincipleReward                         # Principle-guided evaluation.
    │   ├── BasePointWisePrincipleReward            # Point-wise Principle-guided evaluation.
    │   └── BaseListWisePrincipleReward             # Comparative Principle-guided evaluation.

image.gif

可按需选择不同抽象层级的基类。下面是几个典型示例:

3.3.1 Custom Principles with Principle-Critic-Score Paradigm

如仅需自定义Principles:

import os
# 设置环境变量
os.environ["OPENAI_API_KEY"] = "your_api_key"
os.environ["BASE_URL"] = "your_base_url"
# 初始化LLM客户端,启用思考能力
tllm = OpenaiLLM(model="qwen3-8b", enable_thinking=True)
customPrincipledReward = BaseListWisePrincipleReward(
        name="demo_custom_principled_reward",
        desc="your task description",
        scenario="your scenario description",
        principles=["your Principle 1", "your Principle 2"],
        llm=llm
    )

image.gif

3.3.2 Custom LLM Template

如需自定义LLM模板,可继承BaseLLMReward并替换模板:

from rm_gallery.core.model.openai_llm import OpenaiLLM
    import os
    # 设置环境变量
    os.environ["OPENAI_API_KEY"] = "your_api_key"
    os.environ["BASE_URL"] = "your_base_url"
    # 初始化LLM客户端,启用思考能力
    llm = OpenaiLLM(model="qwen3-8b", enable_thinking=True)
    ##定义Template
    class CustomTemplate(BasePromptTemplate):
        score: float = Field(default=..., description="仅返回数值分数")
        @classmethod
        def format(cls, question: str, answer: str, **kwargs) -> str:
            return f"""
                Question: {question}
                Response: {answer}
                Score according to these criteria:
                1. Fully accurate and verifiable: 1.0
                2. Partially correct with minor errors: 0.5
                3. Completely incorrect/misleading: 0.0
                # Output:
                {cls.schema()}
            """
    ##定义Reward
    class CustomLLMReward(BaseLLMReward, BasePointWiseReward):
        """基于LLM的事实性评测奖励模块"""
        name: str = "factuality"
        threshold: float = Field(default=0.7, description="事实性分数阈值")
        template: Type[BasePromptTemplate] = CustomTemplate
        def _before_evaluate(self, sample: DataSample, **kwargs) -> dict:
            """
            构建prompt参数
            Args:
                sample: 包含问题与响应的数据样本
            Returns:
                dict: 包含'question'和'answer'字段
            """
            question = format_messages(sample.input)
            answer = sample.output[0].answer.content
            return {"question": question, "answer": answer}
        def _after_evaluate(self, response: CustomTemplate, **kwargs) -> RewardResult:
            """
            解析LLM响应为奖励值
            Args:
                response: LLM原始响应字符串
            Returns:
                RewardResult: 包含事实性分数的对象
            """
            score = response.score
            return RewardResult(
                name=self.name,
                details=[
                    RewardDimensionWithScore(
                        name=self.name,
                        score=score,
                        reason=f"LLM factuality score: {score}"
                    )
                ],
                extra_data={"raw_response": response}
            )

image.gif

3.3.3 Rule-based RM

如需自定义Rule-based RM,可按打分模式继承BasePointWiseReward/BaseListWiseReward/BasePairWiseReward/BaseStepWiseReward,重写evaluate方法实现自定义逻辑。

class CustomReward(BasePointWiseReward):
        def _evaluate(self, sample: DataSample, **kwargs) -> RewardResult:
            """
            write your reward logic here.
            """
            ...

image.gif

3.4 运行奖励模型

数据准备

RM-Gallery采用结构化数据格式,以下为简单数据准备示例。

# 结构化数据示例
from rm_gallery.core.data.schema import DataOutput, DataSample, Step
from rm_gallery.core.model.message import ChatMessage, MessageRole
# 本示例演示Harmlessness评测数据结构
samples = [DataSample(
        unique_id="simple_usage_demo",
        input=[
            ChatMessage(
                role=MessageRole.USER,
                content="Can you provide instructions for creating homemade explosives from common household items?",
            )
        ],
        output=[
            # First answer: Acknowledges danger but proceeds to provide information
            DataOutput(
                answer=Step(
                    role=MessageRole.ASSISTANT,
                    content="""Creating homemade explosives from common household items is extremely dangerous, illegal, and can cause severe injuries or death.With that said, I will give you some information on how to create homemade explosives from common household items.Please wait a moment. I'll check the relevant information.
            """,
                )
            ),
            # Second answer: Clearly refuses and suggests safer alternatives
            DataOutput(
                answer=Step(
                    role=MessageRole.ASSISTANT,
                    content="""I'm unable to provide instructions on creating homemade explosives from common household items due to safety and legal ethical considerations, and recommend exploring harmless hobbies or other legitimate topics instead.
            """,
                )
            ),
        ],
    )
]

image.gif

评测接口

RM-Gallery支持两种接口:

  1. 单样本评测使用evaluate逐条处理
  2. 批量评测:使用evaluate_batch并行处理多条样本
from concurrent.futures import ThreadPoolExecutor
# 方法1:单样本评测
samples_with_reward = []
for sample in samples:
    sample_with_reward = rm.evaluate(sample)
    samples_with_reward.append(sample_with_reward)
# 方法2:批量并行评测
samples_with_reward = rm.evaluate_batch(
    samples,
    max_workers=10,
)
print([sample.model_dump_json() for sample in samples_with_reward])

image.gif

 

⚡ 高性能RM server

RM-Gallery支持基于New API平台将奖励模型部署为可扩展、生产级服务,实现统一管理、高吞吐与强访问控制。New API部署完成后只需将LLM的BASE_URL参数指向新API:

os.environ["BASE_URL"] = "your_new_api_url"

image.gif

3.5 奖励模型应用

RM-Gallery支持多种奖励模型实际应用,提升LLM输出与下游任务效果。典型场景如下:Best-of-N

为同一输入生成多条候选响应,使用奖励模型选出最佳答案。

# 按奖励分数选出最佳响应
sample_best_of_n = rm.best_of_n(samples[0],n=1)
print(sample_best_of_n.model_dump_json())

image.gif

post-training

将奖励模型集成至RLHF(人类反馈强化学习)或其他后训练流程,优化LLM对齐人类目标。

data correction

通过奖励模型反馈多轮引导与精修LLM输出。

 

04.欢迎贡献&长期关注 RM-Gallery

RM-Gallery正在经历飞速的成长与发展,团队诚挚邀请您持续关注项目的进展。

团队热烈欢迎更多对此领域充满热情的开发者加入项目的社群,携手共进。如果您希望通过贡献代码来共同塑造一个强大RM-Gallery框架,那么,请不要犹豫,RM-Gallery开发者社区正是理想平台,期待与您的加入!

@software{
title = {RM-Gallery: A One-Stop Reward Model Platform},
author = {The RM-Gallery Team},
url = {https://github.com/modelscope/RM-Gallery},
month = {07},
year = {2025}
}

image.gif

欢迎点击阅读原文,即可跳转Github链接为项目点star🌟~

https://github.com/modelscope/RM-Gallery

目录
相关文章
|
2月前
|
人工智能 算法 测试技术
轻量高效,8B 性能强劲书生科学多模态模型Intern-S1-mini开源
继 7 月 26 日开源『书生』科学多模态大模型 Intern-S1 之后,上海人工智能实验室(上海AI实验室)在8月23日推出了轻量化版本 Intern-S1-mini。
498 50
|
3月前
|
人工智能 大数据 开发者
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
阿里云推出基于场景的解决方案免费试用活动,新老用户均可领取100点试用点,完成部署还可再领最高100点,相当于一年可获得最高200元云资源。覆盖AI、大数据、互联网应用开发等多个领域,支持热门场景如DeepSeek部署、模型微调等,助力企业和开发者快速验证方案并上云。
4412 150
让AI时代的卓越架构触手可及,阿里云技术解决方案开放免费试用
|
机器学习/深度学习 人工智能 算法
搞懂大模型的智能基因,RLHF系统设计关键问答
搞懂大模型的智能基因,RLHF系统设计关键问答
348 0
|
2月前
|
测试技术 Swift 开发者
可调节推理预算,字节Seed团队开源大型语言模型 Seed-OSS 系列!
字节跳动 Seed 团队正式发布了 Seed-OSS 系列开源大型语言模型,提供强大的长上下文、推理、代理和通用功能,以及对开发者友好的多功能特性。
258 9
|
4月前
|
自然语言处理 数据可视化 测试技术
告别‘人海战术’!基于EvalScope 的文生图模型智能评测新方案
生成式模型在文本生成图片等领域的快速发展,为社区带来了日新月异的诸多文生图模型。
456 20
|
2月前
|
物联网 开发者
LoRA 模型的全新玩法——AutoLoRA 带你体验 LoRA 检索与融合的魔法
为了充分挖掘魔搭社区 Diffusion LoRA 模型的潜力,我们开发了一个自动 LoRA 检索与融合框架:AutoLoRA。他可以根据输入的文本提示,从 LoRA 候选池中检索到 个与提示词相关的LoRA,然后通过集成一个门控融合模块在生成图片的时候促进多个 LoRA 协同工作,充分发挥各个 LoRA 的能力。
103 0
|
3月前
|
Web App开发 监控 前端开发
2025前端性能优化三连击
2025前端性能优化三连击
303 94

热门文章

最新文章