/ Модель

Характеристики

Контекст
4 096 токенов
Параметры
7,1 млрд
Размер весов
15,2 ГБ
Лицензия
Apache 2.0
Архитектура
qwen2 · dense
Опубликована
30 дек 2024

EurusPRM-Stage2

Генерация текстаТекст → текст3 профессии

Модель PRIME-RL для оценки шагов рассуждения и получения процессных наград без разметки отдельных шагов.

149скачиваний за 30 дней8лайковвеса обновлены19 фев 2025

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

EurusPRM-Stage2 — языковая модель семейства Qwen2, выпущенная PRIME-RL. Это плотная причинная модель на 7,1 млрд параметров с контекстом 4096 токенов, предназначенная для оценки качества рассуждений по шагам. Она обучена методом Implicit PRM на метках уровня целого ответа: во время работы оценка отдельных шагов выводится из отношения логарифмических правдоподобий модели и базовой языковой модели, без отдельной разметки каждого шага.

Модель подходит для оценки промежуточных шагов при решении задач и для построения систем обучения с подкреплением, использующих процессные награды. README приводит пример сопоставления её оценок с оценками Qwen2.5-Math-7B-Instruct. Репозиторий содержит веса Safetensors; лицензия — Apache-2.0. README не подтверждает, что эта модель предназначена для генерации ответов пользователю, хотя метаданные классифицируют её как text-generation.

Сценарии применения

  • оценка качества шагов в цепочке математического рассуждения
  • ранжирование промежуточных решений по качеству
  • получение процессных наград для обучения с подкреплением
  • анализ вероятности продолжения рассуждения

Ограничения

Для вычисления неявных процессных наград README использует базовую модель Qwen2.5-Math-7B-Instruct и сравнивает логарифмические правдоподобия. Контекст ограничен 4096 токенами; языки модели в карточке не обозначены.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

EurusPRM-Stage2

Links

Introduction

EurusPRM-Stage2 is trained using Implicit PRM, which obtains free process rewards at no additional cost but just needs to simply train an ORM on the cheaper response-level labels. During inference, implicit process rewards are obtained by forward passing and calculating the log-likelihood ratio on each step.

The key ingredient of Implicit PRM is the reward representation, as demonstrated below:

Proposition: Consider an ORM where the reward is parameterized by the log-likelihood ratio of two causal LMs, i.e.

$$ r_\phi(\mathbf{y}) := \beta \log \frac{\pi_\phi(\mathbf{y})}{\pi_\text{ref}(\mathbf{y})}. $$

Define

$$ q_\phi^t(\mathbf{y}{<t}, y_t) := \sum{i=1}^{t} \beta \log \frac{\pi_\phi(y_{i}|\mathbf{y}{<i})}{\pi\text{ref}(y_{i}|\mathbf{y}_{<i})}. $$

is the exponential average of \(r_\theta\) at step \(t\).

$$ q_\phi^t(\mathbf{y}{<t}, y_t) = \beta \log \mathbb{E}{\pi\text{ref}(\mathbf{y}|\mathbf{y}{\leq t})} \left[ e^{\frac{1}{\beta} r\phi(\mathbf{y})} \right] $$

Hence, \(q_\theta^t\)represents an exact expectation of outcome reward \(r_\theta\) at step \(t\), i.e., the Q value.

The proposition indicates that when modeling

$$ r_\phi(\mathbf{y}) := \beta \log \frac{\pi_\phi(\mathbf{y})}{\pi_\text{ref}(\mathbf{y})} $$

to train an ORM with the standard pipeline, where \(\beta\) is a hyperparameter, \(\phi\) can implicitly learn a Q function. Hence, process reward \(r_\phi^t\) can be obtained by:

$$ r_\phi^t := q_\phi^t - q_\phi^{t-1} = \beta \log \frac{\pi_\phi(y_{t}|\mathbf{y}{<t})}{\pi\text{ref}(y_{t}|\mathbf{y}_{<t})}. $$

Therefore, we can indeed obtain PRMs simply by collecting response-level data and training an ORM, without any burden of annotating step labels.

The proposition is agnostic to specific choices of the training objective of ORMs. It can be instantiated with different objectives as vanilla ORM training, with the only difference being substituting the \(r_\phi \left( \mathbf{y} \right)\) with \(\beta \log \frac{\pi_\phi(\mathbf{y})}{\pi_\text{ref}(\mathbf{y})}\).

For example, DPO already meets our assumption and serves as a strong variant, while in this work, we instantiate our implicit PRM with cross entropy (CE) loss due to memory efficiency:

$$ \small \mathcal{L}{CE} = l \cdot \log \sigma \left( \beta \log \frac{\pi\phi(\mathbf{y})}{\pi_\text{ref}(\mathbf{y})} \right) + (1 - l) \cdot \log \left[ 1 - \sigma \left( \beta \log \frac{\pi_\phi(\mathbf{y})}{\pi_\text{ref}(\mathbf{y})} \right) \right] $$

We started the second-stage training on top of EurusPRM-Stage1 with fine-grained step-level labels. To obtain step-level labels, we employed Llama-3.1-70B-Inst and Qwen2.5-72B-Inst to insert nuance errors into correct solutions. We also mixed response-level data in this stage. The model was continually trained with \(L_{CE}\) with a learning rate of 5e-7 and a batch-size of 64.

Usage

Due to the training format of EurusPRM, a clearly separated answer should be provided to elicit a better performance. We strongly recommend using answers with each step starting with Step K.

We show an example leveraging EurusPRM-Stage2 below:

import torch
from transformers import AutoTokenizer,AutoModelForCausalLM
coef=0.001
d = {'query':'Convert the point $(0,3)$ in rectangular coordinates to polar coordinates.  Enter your answer in the form $(r,\\theta),$ where $r > 0$ and $0 \\le \\theta < 2 \\pi.$',
     'answer':[
            "Step 1: To convert the point (0,3) from rectangular coordinates to polar coordinates, we need to find the radius (r) and the angle theta (\u03b8).",
            "Step 2: Find the radius (r). The radius is the distance from the origin (0,0) to the point (0,3). Since the x-coordinate is 0, the distance is simply the absolute value of the y-coordinate. So, r = |3| = 3.",
            "Step 3: Find the angle theta (\u03b8). The angle theta is measured counterclockwise from the positive x-axis. Since the point (0,3) lies on the positive y-axis, the angle theta is 90 degrees or \u03c0\/2 radians.",
            "Step 4: Write the polar coordinates. The polar coordinates are (r, \u03b8), where r > 0 and 0 \u2264 \u03b8 < 2\u03c0. In this case, r = 3 and \u03b8 = \u03c0\/2.\n\nTherefore, the polar coordinates of the point (0,3) are (3, \u03c0\/2).\n\n\n\\boxed{(3,\\frac{\\pi}{2})}"
     ]
     }
model = AutoModelForCausalLM.from_pretrained('PRIME-RL/EurusPRM-Stage2')
tokenizer = AutoTokenizer.from_pretrained('PRIME-RL/EurusPRM-Stage2')
ref_model = AutoModelForCausalLM.from_pretrained('Qwen/Qwen2.5-Math-7B-Instruct')
input_ids = tokenizer.apply_chat_template([
    {"role": "user", "content": d["query"]},
    {"role": "assistant", "content": "\n\n".join(d["answer"])},
], tokenize=True, add_generation_prompt=False,return_tensors='pt')
attention_mask = input_ids!=tokenizer.pad_token_id
step_last_tokens = []
for step_num in range(0, len(d["answer"])+1):
    conv = tokenizer.apply_chat_template([
        {"role":"user", "content":d["query"]},
        {"role":"assistant", "content":"\n\n".join(d["answer"][:step_num])},
    ], tokenize=False, add_generation_prompt=False)
    conv = conv.strip()
    if step_num!=0 and step_num!=len(d['answer']):
        conv+='\n\n'
    currect_ids = tokenizer.encode(conv,add_special_tokens=False)
    step_last_tokens.append(len(currect_ids) - 2)


inputs = {'input_ids':input_ids,'attention_mask':attention_mask,'labels':input_ids}
label_mask = torch.tensor([[0]*step_last_tokens[0]+[1]*(input_ids.shape[-1]-step_last_tokens[0])])
step_last_tokens = torch.tensor([step_last_tokens])

def get_logps(model,inputs):
    logits = model(input_ids=inputs['input_ids'], attention_mask=inputs['attention_mask']).logits
    labels = inputs['labels'][:, 1:].clone().long()
    logits = logits[:, :-1, :]
    labels[labels == -100] = 0
    per_token_logps = torch.gather(logits.log_softmax(-1), dim=2, index=labels.unsqueeze(2)).squeeze(2)
    return per_token_logps

with torch.no_grad():
    per_token_logps = get_logps(model, inputs)
    ref_per_token_logps = get_logps(ref_model,inputs)

raw_reward = per_token_logps - ref_per_token_logps
beta_reward = coef * raw_reward * label_mask[:,1:]
beta_reward = beta_reward.cumsum(-1)
beta_reward = beta_reward.gather(dim=-1, index=step_last_tokens[:,1:])
print(beta_reward)

Evaluation

Evaluation Code

We use codes in Implicit PRM to evaluate the performance of EurusPRM. The reference model is Qwen2.5-Math-7B-Instruct.

Evaluation Base Model

For Best-of N Sampling, we adopt Eurus-2-7B-SFT, Qwen2.5-7B-Instruct and Llama-3.1-70B-Instruct as generation models to evaluate the performance of our implicit PRM. For all models, we set the sampling temperature as 0.5, p of the top-p sampling as 1.

For ProcessBench, we adopt Math-Shepherd-PRM-7B, RLHFlow-PRM-Mistral-8B, RLHFlow-PRM-Deepseek-8B, Skywork-PRM-7B, EurusPRM-Stage 1, and EurusPRM-Stage 2.

Best-of-N Sampling

We use Best-of-64 as our evaluation metric. The weighting methods are different for several PRMs below.

  • For Skywork-o1-Open-PRM-Qwen-2.5-7B, we use simple average reward across all steps.
  • For EurusPRM-Stage 1, we use the minimum reward across all steps.
  • For EurusPRM-Stage 2, we use the accumulative rewards.

Eurus-2-7B-SFT

MethodReward ModelMATHAMCAIME_2024OlympiadBenchMinerva MathAvg
Greedy Pass @ 1N/A65.130.13.329.832.732.2
Majority Voting @ 64N/A65.653.013.339.122.438.7
Best-of-64Skywork-o1-Open-PRM-Qwen-2.5-7B47.245.810.032.316.230.3
EurusPRM-Stage 144.641.06.732.917.328.5
EurusPRM-Stage 247.243.413.333.819.231.4
Weighted Best-of-64Skywork-o1-Open-PRM-Qwen-2.5-7B64.655.413.341.323.239.6
EurusPRM-Stage 166.054.213.339.629.040.4
EurusPRM-Stage 266.054.213.339.729.040.4

Llama-3.1-70B-Instruct

MethodReward ModelMATHAMCAIME 2024OlympiadBenchMinerva MathAvg
Greedy Pass @ 1N/A64.630.116.731.935.335.7
Majority Voting @ 64N/A80.253.026.740.438.647.8
Best-of-N @ 64Skywork-o1-Open-PRM-Qwen-2.5-7B77.856.623.339.031.645.7
EurusPRM-Stage 177.844.626.735.341.545.2
EurusPRM-Stage 280.659.020.037.644.948.4
Weighted Best-of-64Skywork-o1-Open-PRM-Qwen-2.5-7B81.256.623.342.438.248.3
EurusPRM-Stage 180.453.026.740.946.749.5
EurusPRM-Stage 280.453.026.741.046.349.5

Qwen2.5-7B-Instruct

MethodReward ModelMATHAMCAIME 2024OlympiadBenchMinerva MathAvg
Greedy Pass @ 1N/A73.347.013.339.435.341.7
Majority Voting @ 64N/A82.053.016.743.036.446.2
Best-of-N @ 64Skywork-o1-Open-PRM-Qwen-2.5-7B85.260.220.044.732.748.6
EurusPRM-Stage 181.847.016.740.141.545.4
EurusPRM-Stage 286.059.016.741.441.548.9
Weighted Best-of-64Skywork-o1-Open-PRM-Qwen-2.5-7B83.655.413.343.736.846.6
EurusPRM-Stage 182.653.016.742.745.248.0
EurusPRM-Stage 284.853.016.743.245.648.7

ProcessBench

We evaluate EurusPRM-Stage 1 and EurusPRM-Stage 2 on ProcessBench. The threshold is obtained by converting the original score of each step using sigmoid function and iterating to find the highest F1 on GSM8k sub-benchmark. The threshold for EurusPRM-Stage 1 and EurusPRM-Stage 2 is 0.5015 and 0.5005 respectively.

To leverage the capibility of EurusPRM better, we add Step K (where K is the actual index of the step) in front of each step in ProcessBench.

Reward ModelGSM8kMATHOlympiadBenchOmni-MathAvg
Math-Shepherd-PRM-7B47.929.524.823.831.5
RLHFlow-PRM-Mistral-8B50.433.413.815.828.4
RLHFlow-PRM-Deepseek-8B38.833.816.916.926.6
Skywork-PRM-7B70.853.622.921.042.1
EurusPRM-Stage 154.741.224.717.530.6
EurusPRM-Stage 1-no-step42.133.113.215.423.1
EurusPRM-Stage 267.053.235.430.742.8
EurusPRM-Stage 2-no-step56.643.027.326.835.1

Citation

@article{cui2025process,
  title={Process reinforcement through implicit rewards},
  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 preprint arXiv:2502.01456},
  year={2025}
}
@article{yuan2024implicitprm,
  title={Free Process Rewards without Process Labels},
  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 preprint arXiv:2412.01981},
  year={2024}
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
Qwen2ForCausalLM
Ревизия весов
f19724b

0 моделей