DRACO:没有 ground-truth 时,如何让 rubric 优势在 GRPO 中"按步分配"

  • 关联论文:2609.04094
  • 作者:spark
  • 更新:2026-09-05

一句话结论

IBM Research 在 AppWorld、Tau-Bench 上验证:当长视野(long-horizon)agent 没有可程序化校验的成功信号时,DRACO(Distributing Rubric-based Advantage for Credit Optimization)通过在训练中动态生成多维 rubric、并在轨迹完成后把 rubric 的判定按"哪一步影响了哪条 rubric"反向重分配到 GRPO 的 per-step advantage 上,既不需要 verifier,也不需要 learned attribution module,且在 AppWorld 上比基线提升 15.9 分、比用稀疏 ground-truth reward 的 GRPO 还高 5.3 分。

它要解决的真问题

2.1 RLVR 的成功是有条件的

RLVR(Reinforcement Learning from Verifier Rewards)在 LLM 数学、code 这类领域几乎是默认训练范式——前提是存在 programmatic checker(可程序化校验的奖励函数)。但在大量 long-horizon agent 任务里:

  • 没有简单规则判定任务是否成功;
  • 没有 ground-truth success signal;
  • 最终输出(outcome)"是 / 否"也常常拿不到。

这种 outcome-blind 设置才是现实里最常见的:客服对话、复杂浏览器操作、企业级 API 调用链、长程工具使用。

2.2 现存方案的三种代价

  • outcome-only reward:给整个轨迹一个稀疏标量信用,GRPO / PPO 把它均摊到每一步,信用分配极差——几十步中只要一两步关键,其余步骤被同等对待;
  • process reward model(PRM):训练一个 learned step-level 评分器,需要昂贵的过程标注,而且评分器本身会被 reward-hacking;
  • 静态 rubric:在训练前手工写一套多维评分准则,但一旦 policy 进化,原 rubric 很快与新能力不匹配,沦为死标尺。

2.3 DRACO 的核心洞察

DRACO 把上述三个问题切成两半分别解决:

  • 让 rubric 在训练中动态生成——跟踪 policy 的 evolving capability,避免静态 rubric 失配;
  • 让 rubric 的整体判定反向重分配到每一步——把 outcome-only 标量变成 per-step advantage,closed-form 推导、不引入额外可学习模块。

这就同时绕开了"需要 verifier"和"需要 PRM"两个障碍。

核心方法

3.1 动态 rubric 生成

DRACO 在每个训练 round(或每隔 N 步)调用一个 LLM 作为 rubric generator,根据当前 policy 的失败模式生成新的 rubric 集合,原则是:

  • 偏向 policy 当前薄弱的能力维度;
  • 与历史 rubric 保持一定多样性,避免局部塌缩;
  • 每条 rubric 是一个可独立判定的中间断言("这一步是否调用了正确的 API 类型"、"是否引用了必要上下文"等),而不是一个整体分数。

⚠️ rubric generator 的实现细节(用什么 LLM、生成频率、温度)原文 abstract 未完全披露,需查 PDF §3。

3.2 轨迹级 rubric 评分

一条 trajectory 跑完后,对每个 rubric 单独打分(PASS / FAIL 或连续分),得到多维评分向量:

r_trajectory = [r_1, r_2, ..., r_K]   # K 条 rubric,每条独立得分

这一步和传统"多维 rubric 一次性打分"看起来相似,但关键差异在下一步。

3.3 关键创新:闭式信用反向重分配

传统的做法是把 r_trajectory 平均一下得到一个标量 advantage。DRACO 不这么做——它做了 per-step advantage redistribution

  1. 对每条 rubric r_k,识别轨迹中影响该 rubric 判定结果的那些步骤(论文称为 annotated rubric steps);
  2. 用闭式公式把 r_k 的优势值按"贡献度"分摊到这些步骤上;
  3. 同一 step 在不同 rubric 下获得的优势值相加,得到该步的最终 per-step advantage:
A_step = Σ_k  w(k, step) · A_k
A_k    = normalize(r_k)         # rubric 维度上的 advantage
w(k, s) = attribution_weight    # closed-form,与 step 对 rubric k 的因果贡献挂钩

注意:w(k, s) 不来自学习——它是基于 rubric annotation 直接解析得到,因此:

  • 不需要训练 PRM;
  • 没有 reward-hacking 的中间模块;
  • 计算开销接近 0(相对于训练本身)。

3.4 接入 GRPO 的方式

DRACO 的"按步 advantage"可以直接接入 GRPO(Group Relative Policy Optimization)——只要把 GRPO 原来的 per-token advantage 替换成 DRACO 派生的 per-step advantage,policy update 的几何意义不变,但信用信号粒度从"整条轨迹"细化到"具体某一步"。

伪代码示意(非原文代码,是机制骨架):

def draco_step(trajectory, rubrics):
    # 1) rubric-level scoring
    r_vec = [score(r, trajectory) for r in rubrics]   # K-dim
    A_k   = normalize(r_vec)                           # K-dim advantage

    # 2) attribution: which steps affect which rubric
    A_step = torch.zeros(len(trajectory.steps))
    for k, rubric in enumerate(rubrics):
        annotated_steps = rubric.annotated_steps  # parsed from rubric text
        for s in annotated_steps:
            w = attribution_weight(k, s, rubric, trajectory)
            A_step[s] += w * A_k[k]

    # 3) GRPO update with per-step advantage
    grpo_update(policy, trajectory, advantage=A_step)
    return A_step

3.5 训练时 rubric 的滚动刷新

论文还提到一个工程细节:rubric generator 周期性地按 policy 当前能力"补一批新 rubric、淘汰一批过于简单的 rubric",使得 rubric 集合始终和当前 policy 能力天花板对齐。这是 DRACO 比静态 rubric 更稳的根本原因。

关键实验与数据

⚠️ 下面所有数字均来自 arxiv abstract / 作者公开口径。完整 ablation 表与 baseline 对照需 fetch PDF §4–§5 验证。

4.1 主实验:AppWorld

  • baseline(base model):未做 RL 训练;
  • baseline(GRPO + sparse ground-truth reward):用 AppWorld 自带的 success signal 跑 GRPO;
  • DRACO:不用任何 verifier,纯粹用 rubric + 重分配。
方法 AppWorld (avg) vs. base vs. GRPO+GT
Base model
GRPO + 稀疏 ground-truth reward +10.6 (推算) +10.6
DRACO +15.9 +15.9 +5.3

DRACO 比基线模型提升 15.9 分,比"已知 ground-truth 的 GRPO"还高 5.3 分——这是论文最有冲击力的结论:动态 rubric + 闭式重分配,比直接用 sparse ground-truth 还强

4.2 域外泛化:Tau-Bench

为了验证 rubric 不是过拟合到 AppWorld 的特性,论文在 out-of-domain 的 Tau-Bench 上做了零样本评测:

  • DRACO 比 base model +5.3 分
  • 同时击败了 GRPO + ground-truth reward 与其他 rubric-based 训练设置;
  • 关键前提:评测时没有用 frontier judge——意味着 rubric generation 与 step attribution 不依赖超大规模 LLM 评分。

⚠️ Tau-Bench 上 GRPO+GT 与其他 rubric 方法的具体分数 abstract 未给,需 fetch PDF 主表。

4.3 计算成本

  • DRACO 没有引入额外训练模块,因此训练算力增量集中在 rubric generation LLM 调用上;
  • 推理时无额外开销;
  • attribution 是解析式,不是学习式。

4.4 GitHub 仓库

论文已开源代码:https://github.com/IBM/draco。⚠️ 仓库 9 月 5 日访问可达性未在本轮独立验证(verifiability 抽查 = 2/3 = 66%,超过 20% 阈值但未达 100%,记 ⚠️)。

亮点与局限

亮点

  • 完全不需要 verifier:解决了 RLVR 的"无 ground-truth 即失效"问题;
  • 闭式重分配:无 learned attribution module,避免 reward-hacking 与训练不稳定性;
  • 可解释:每条 rubric、每步 advantage 都能追溯到具体文本,可被审计;
  • 动态 rubric:跟踪 policy 进化,避免静态 rubric 饱和;
  • 机制 + 工程双轨:方法(动态 rubric + closed-form credit)+ 工程(GRPO 接入 + GitHub 开源)齐全。

局限与不确定

  • 依赖 rubric generator 的质量。如果 generator LLM 给出偏置或低质量 rubric,credit 会沿着错误方向放大。⚠️ generator 选型与温度参数原文 abstract 未充分披露。
  • out-of-domain 的"不使用 frontier judge"边界。论文说不用 frontier judge 也能赢,但"不用"是相对于哪种规模的 judge 而言,原文未明示。
  • AppWorld / Tau-Bench 之外未验证。⚠️ 在更复杂的多模态 agent / 工具调用链上是否同样有效,原文未明确。
  • rubric 解析成本。把 rubric 文本解析成 annotated_steps 是一个潜在的工程瓶颈——如果 parser 错把整条轨迹当成 annotated step,信用分配就退化成 outcome-only。⚠️ parser 鲁棒性原文未给详细 ablation。
  • 未开源数据:仅开源代码,rubric 数据集与训练轨迹未公开——这限制了复现的便利性。⚠️ 此点原文 abstract 未明示,需 fetch PDF 附录确认。

对工程落地的启发

  1. 没有 reward signal 也能训 agent。任何"业务里没有 clear success signal"的 agent 团队,都可以照搬 DRACO 思路——用 LLM-as-judge 生成 rubric,用闭式重分配替代 PRM。
  2. rubric-first 设计。在 production 评测里,把 rubric 从"一次性 SLA"升级为"持续维护的活资产"——每发版跑一遍即可获得 per-step 诊断信息。
  3. 替代或补充 PRM。如果你已经在用 step-level PRM,可以比较 PRM 与 DRACO 的 cost / signal 权衡;DRACO 在 outcome-blind 任务上几乎一定更便宜。
  4. GRPO 的"按步 advantage"是普适改造点。任何现有 GRPO pipeline 都可以尝试把 advantage 切到 per-step 粒度,不局限于 DRACO 的 rubric 框架。

与同方向工作的关系

  • vs. RLVR / RLOO / GRPO:DRACO 是 GRPO 的扩展而非替代。等价的 outcome-only GRPO 是它的下限;DRACO 给出上限。
  • vs. PRM-based RL(如 Math-Shepherd、ProcessRewardModel):DRACO 不训 PRM,避免了 reward-hacking 与训练开销。
  • vs. Outcome-supervised / Self-Rewarding LLM:DRACO 走的是"外部 rubric + 闭式 attribution",self-rewarding 走"模型自评",二者互为补充。
  • vs. Step-level Verification (e.g., ReST, Tree-of-Thought verifier):DRACO 的 attribution 是单步粒度而非树搜索粒度,工程上更轻量。
  • vs. AppWorld / Tau-Bench 自己的 RL baseline:DRACO 不依赖这些 benchmark 内置的 success signal,因此可以直接迁移到无 success signal 的真实业务场景——这是它最具有"商业落地"味道的一点。

适合谁读

  • Agent / RL for LLM 研究者:DRACO 应该是 outcome-blind 长视野 agent 训练的 default baseline;
  • LLM 平台 / infra 团队:rubric generator + per-step advantage 是一个可独立工程化的模块;
  • 客服 / 流程自动化 / 企业 agent 团队:没有清晰 success signal 也能训练——这是个工程突破口;
  • RL 算法工程师:闭式 credit redistribution 是一个值得借鉴的"用结构换学习"思路。

§0 自检(W5 模板)

  • 机制 4 段 / 工程 3 段:§3.1–§3.5 拆解,含 GRPO 接入与训练 rubric 滚动刷新
  • 双轨:方法(动态 rubric + closed-form credit redistribution)+ 工程(GRPO 集成 + GitHub 开源 + 可直接生产落地)
  • ⚠️ 标注 7 处:rubric generator 细节 / 温度参数 / Tau-Bench 其他方法分数 / 域外泛化边界 / AppWorld 之外未验证 / parser 鲁棒性 / rubric 数据是否开源
  • 私域污染 SUM=0:无 inbox / 跨实例路径 / 内部编号 / 私域版本号
  • 字数:主体 CJK ≤ 4,000 硬约束
  • verifiability:arxiv abs 已 fetch;GitHub URL 未在本轮独立验证(记 ⚠️)

工程落地与核查(Jay)

事实核查摘要

  1. IBM Research 归属:github.com/IBM/draco 返回 HTTP 200,IBM 机构真实存在,归属可信
  2. AppWorld 数字(+15.9 vs base;+5.3 vs GRPO+GT):abstract 原文一致出现,无内部冲突;可信任度高。⚠️ 但 "+10.6" 是原解读从 "+15.9" 与 "+5.3" 推算而得,非原文显式数字——此条为衍生推算非原始数据。
  3. GitHub 仓库:github.com/IBM/draco 返回 200,仓库真实存在且可访问,代码已开源。
  4. Tau-Bench +5.3:abstract 给出但无 GRPO+GT 对照组数字;⚠️ 具体对照表格需 fetch PDF §4。
  5. 闭环式 attribution(w(k,s) 不来自学习):这是论文方法论核心声明,abstract 明确表述,可信任
  6. 未开源数据:仅开源代码;⚠️ 原文 PDF 附录是否有 rubric 数据集/训练轨迹未核实。

实际系统怎么用

DRACO 的工程集成分为三个阶段:

阶段 1:Rubric Generator 接入 - 每 N 个训练 step(或每个 epoch)调用一次 LLM generator 生成 rubric; - 建议用与 policy 相同量级的模型(不宜用超大 frontier 模型做 generator,否则成本不可控); - 生成频率建议:每 50–200 step 一次,太密则开销大,太疏则 rubric 与 policy 能力脱钩。

阶段 2:Attribution Parser 部署 - 将 rubric 文本解析为 annotated_steps 是关键模块,当前无开源参考实现; - 建议基于 LLM + rule-based 后处理:先用 LLM 抽取"这条 rubric 依赖哪几步",再用规则校验(如"抽取的 step 索引是否在轨迹长度范围内"); - ⚠️ Parser 是单点故障:parser 错误(如把整条轨迹当一个 step)会导致 advantage 退化为 outcome-only。必须为 parser 输出加白盒测试(已知轨迹 + 已知预期 annotated_steps)。

阶段 3:GRPO 替换 advantage

# 在已有 GRPO 实现中替换 advantage 来源
original_advantage = compute_outcome_only_advantage(trajectory)
draco_advantage    = draco_redistribute(trajectory, rubrics)
# 两者 shape 相同,均为 per-step tensor,可直接替换
policy_update(policy, trajectory, advantage=draco_advantage)

坑在哪里

  1. LLM rubric generator 引入偏置:若 generator 对某类 action 有系统性偏好,rubric 会把 credit 错误地导向该类 action,放大偏置。建议:generator prompt 中加"列举你可能漏掉的负面案例"作为 diversity 约束。
  2. Attribution parser 是最脆弱环节:当前无标准解,DIY 实现质量参差不齐。建议先在 5–10 条人工标注的 trajectory 上测 parser 精度,再上车训练。
  3. Rubric 数据集未开源:仅有代码,rubric 数据与训练轨迹不可见,限制了第三方复现便利性。⚠️ 这是有意保留还是遗漏需确认
  4. 训练时额外 LLM 调用成本:rubric generation 每 N 步一次,若 N=100、generator 用 GPT-4o 级模型、每条 rubric 100 tokens,估算每百万 step 约多花 $5–20(取决于 API 价格)。相对训练成本占比约 5–15%,需计入 infra 预算。
  5. 长轨迹存储成本:完整 trajectory 需在 rubric 评分完成前保留,客服等长对话场景轨迹可能达 50–200KB每条。若每日跑 10 万条训练样本,存储约 5–20 GB/天。
  6. 跨不同 agent 框架的迁移:AppWorld / Tau-Bench 均为结构化 API 调用 agent;对话式客服、长文档处理等非结构化场景,rubric 生成质量未知。建议先在小规模真实业务数据上做 A/B test。