Papers › Free Process Rewards without Process Labels

Free Process Rewards without Process Labels

2 Dec 2024arXiv:2412.01981archive 2025-07-28

Lifan Yuan, Wendi Li, Huayu Chen, Ganqu Cui, Ning Ding, Kaiyan Zhang, BoWen Zhou, Zhiyuan Liu, Hao Peng

Different from its counterpart outcome reward models (ORMs), which evaluate the entire responses, a process reward model (PRM) scores a reasoning trajectory step by step, providing denser and more fine grained rewards. However, training a PRM requires labels annotated at every intermediate step, presenting significant challenges for both manual and automatic data collection. This paper aims to address this challenge. Both theoretically and empirically, we show that an \textit{implicit PRM} can be obtained at no additional cost, by simply training an ORM on the cheaper response-level labels. The only assumption is to parameterize the outcome reward as the log-likelihood ratios of the policy and reference models, which can be optimized regardless of the specific choice of loss objectives. In experiments, we instantiate our implicit PRMs with various objectives and evaluate their performance on MATH. We show that our implicit PRM outperforms a strong MCTS-based baseline \textit{\'a la} Math-Shepherd using less than 1/38 of the training data. Its performance can be further improved with majority voting. We further find that scaling up instructions and responses benefits our implicit PRM, and the latter brings a larger gain. Particularly, we find that our implicit PRM, when instantiated with the cross-entropy (CE) loss, is more data-efficient and can keep improving generation models even when trained with only one response per instruction, the setup that suffers from extreme data scarcity and imbalance. Further, instructions should be relevant to downstream tasks while the diversity of responses does not bring gains. Surprisingly, training on extra Math-Shepherd step labels brings no further improvements to our implicit PRM trained on only outcome data. We hope that our work will encourage a rethinking of PRM training approaches and contribute to making training PRMs more accessible.

PaperPDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="2412.01981")

Code

Syntology Ran 2 of 22 code samples harvested from 1 repository linked to this paper; 20 have no recorded run. Of those that ran: 1 ran · our draft was wrong; 1 ran with no contract checked.

By repository: official repository: 22 samples from 1 repository, 2 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

lifan-yuan/implicitprm officialmentioned in papermentioned on GitHubpytorchApache-2.0 report
prime-rl/prime mentioned on GitHubpytorchApache-2.0 report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

22 samples harvested; 2 ran; 0 honoured the contract we drafted; 20 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

1ran · our draft was wrong
1ran
20unverified

Licence: 0 of the 22 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from lifan-yuan/implicitprm. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted. community: Not in the archive's code links for this paper; a community repository Syntology harvested. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

log_probs_from_logits lifan-yuan/implicitprm/train/openrlhf/models/utils.py official repository ran · our draft was wrong Apache-2.0 (permissive) · 959df7824bf09cc1 · report
normalize_answer lifan-yuan/implicitprm/eval/math_utils/math_normalize.py official repository ran fingerprinted Apache-2.0 (permissive) · 101b1e54fcdadf90 · report
clean_units lifan-yuan/implicitprm/eval/math_utils/eval_theoremqa.py official repository unverified Apache-2.0 (permissive) · 52095429576ac98d · report
compute_approx_kl lifan-yuan/implicitprm/train/openrlhf/models/utils.py official repository unverified Apache-2.0 (permissive) · b507127549cdea93 · report
compute_metrics lifan-yuan/implicitprm/eval/bon_eval.py official repository unverified Apache-2.0 (permissive) · ad31a6c133b0728c · report
compute_reward lifan-yuan/implicitprm/train/openrlhf/models/utils.py official repository unverified Apache-2.0 (permissive) · 38b7cb8077e28347 · report
convert_ring_attn_params lifan-yuan/implicitprm/train/openrlhf/models/ring_attn_utils.py official repository unverified Apache-2.0 (permissive) · d66f259aaf6cd9c7 · report
extract_answer_string_2 lifan-yuan/implicitprm/eval/math_utils/normalizer.py official repository unverified Apache-2.0 (permissive) · 906aa9a1e739f957 · report
extract_attributes_from_name lifan-yuan/implicitprm/eval/math_utils/normalizer.py official repository unverified Apache-2.0 (permissive) · 3dd56c766e1b4ca8 · report
find_threshold_sigmoid lifan-yuan/implicitprm/eval/processbench.py official repository unverified Apache-2.0 (permissive) · bc171287029c3465 · report
floatify lifan-yuan/implicitprm/eval/math_utils/eval_theoremqa.py official repository unverified Apache-2.0 (permissive) · f8cd262700389f42 · report
get_raw_data lifan-yuan/implicitprm/eval/prm_eval_utils.py official repository unverified Apache-2.0 (permissive) · 1d78ad671b732515 · report
get_tokenizer lifan-yuan/implicitprm/eval/prm_eval_utils.py official repository unverified Apache-2.0 (permissive) · 7032a4070687fc83 · report
handle_base lifan-yuan/implicitprm/eval/math_utils/grader.py official repository unverified Apache-2.0 (permissive) · bb175bff1060d928 · report
is_digit lifan-yuan/implicitprm/eval/math_utils/grader.py official repository unverified Apache-2.0 (permissive) · 2a180d3156997924 · report
normalize lifan-yuan/implicitprm/eval/math_utils/grader.py official repository unverified Apache-2.0 (permissive) · 960059cee2753e3f · report
normalize_answer_string lifan-yuan/implicitprm/eval/math_utils/normalizer.py official repository unverified Apache-2.0 (permissive) · c431597b4cd16dfc · report
reset_ring_attn_position_ids lifan-yuan/implicitprm/train/openrlhf/models/ring_attn_utils.py official repository unverified Apache-2.0 (permissive) · e93117d99aa6b210 · report
set_special_token_ids lifan-yuan/implicitprm/eval/prm_eval_utils.py official repository unverified Apache-2.0 (permissive) · fb5dce3b9cdca298 · report
setup_accelerator_and_models lifan-yuan/implicitprm/eval/processbench.py official repository unverified Apache-2.0 (permissive) · 5a3cf1b9cf6bcb3c · report
sigmoid lifan-yuan/implicitprm/eval/processbench.py official repository unverified Apache-2.0 (permissive) · 1c192362b31daf5b · report
within_eps lifan-yuan/implicitprm/eval/math_utils/eval_theoremqa.py official repository unverified Apache-2.0 (permissive) · 98b05a45dfc53b99 · report

Tasks

Math

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections