Files
myLightningOPD/slime/rollout/rm_hub/deepscaler.py
ModelHub XC d4e0a1af66 初始化项目,由ModelHub XC社区提供模型
Model: ayh015/myLightningOPD
Source: Original Platform
2026-08-27 23:50:14 +08:00

46 lines
1.4 KiB
Python

# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
from .math_utils import extract_answer, grade_answer_mathd, grade_answer_sympy
def get_deepscaler_rule_based_reward(response, label):
if "</think>" in response:
model_solution = response.split("</think>")[-1]
elif "###Response" in response:
model_solution = response.split("###Response")[1]
else:
return 0
model_answer = extract_answer(model_solution)
if model_answer is None:
return 0
if label == "":
return 0
# Convert single answer to list for uniform processing
assert isinstance(label, (str, float, int))
ground_truths = [label]
# Process each ground truth
processed_ground_truths = []
for truth in ground_truths:
truth = str(truth)
if "\\boxed" in truth:
processed_truth = extract_answer(truth)
if processed_truth is not None:
processed_ground_truths.append(processed_truth)
else:
processed_ground_truths.append(truth)
if not processed_ground_truths:
return 0
# Check against all possible correct answers
for ground_truth in processed_ground_truths:
is_correct = grade_answer_mathd(model_answer, ground_truth) or grade_answer_sympy(model_answer, ground_truth)
if is_correct:
return 1
return 0