跳转至

naive.py — Naive 奖励管理器

文件概述

最基本的奖励管理器实现,逐样本计算奖励。

核心类

NaiveRewardManager

@register("naive")
class NaiveRewardManager(AbstractRewardManager):
    def __init__(self, tokenizer, num_examine, compute_score=None, reward_fn_key="data_source"):
        self.compute_score = compute_score or default_compute_score

    def __call__(self, data, return_dict=False):
        """逐样本计算奖励

        流程:
        1. 解码 response tokens 为文本
        2. 对每个样本调用 compute_score 函数
        3. 将分数放到对应位置的 reward tensor 中
        """
        for i in range(len(data)):
            score = self.compute_score(
                data_source=data_sources[i],
                solution_str=sequences_str[i],
                ground_truth=ground_truth[i],
            )
            reward_tensor[i, valid_response_length[i] - 1] = score

与其他模块的关系

  • 继承 abstract.py 的 AbstractRewardManager
  • 使用 @register("naive") 注册到注册表

小结

最简单的奖励计算方式,适合规则明确的任务(如数学问答、代码执行等)。