初始化项目,由ModelHub XC社区提供模型
Model: ayh015/myLightningOPD Source: Original Platform
This commit is contained in:
45
slime/rollout/rm_hub/deepscaler.py
Normal file
45
slime/rollout/rm_hub/deepscaler.py
Normal file
@@ -0,0 +1,45 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user