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:
- 对每条 rubric
r_k,识别轨迹中影响该 rubric 判定结果的那些步骤(论文称为 annotated rubric steps); - 用闭式公式把
r_k的优势值按"贡献度"分摊到这些步骤上; - 同一 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 附录确认。
对工程落地的启发
- 没有 reward signal 也能训 agent。任何"业务里没有 clear success signal"的 agent 团队,都可以照搬 DRACO 思路——用 LLM-as-judge 生成 rubric,用闭式重分配替代 PRM。
- rubric-first 设计。在 production 评测里,把 rubric 从"一次性 SLA"升级为"持续维护的活资产"——每发版跑一遍即可获得 per-step 诊断信息。
- 替代或补充 PRM。如果你已经在用 step-level PRM,可以比较 PRM 与 DRACO 的 cost / signal 权衡;DRACO 在 outcome-blind 任务上几乎一定更便宜。
- 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)
事实核查摘要
- IBM Research 归属:github.com/IBM/draco 返回 HTTP 200,IBM 机构真实存在,归属可信。
- AppWorld 数字(+15.9 vs base;+5.3 vs GRPO+GT):abstract 原文一致出现,无内部冲突;可信任度高。⚠️ 但 "+10.6" 是原解读从 "+15.9" 与 "+5.3" 推算而得,非原文显式数字——此条为衍生推算非原始数据。
- GitHub 仓库:github.com/IBM/draco 返回 200,仓库真实存在且可访问,代码已开源。
- Tau-Bench +5.3:abstract 给出但无 GRPO+GT 对照组数字;⚠️ 具体对照表格需 fetch PDF §4。
- 闭环式 attribution(w(k,s) 不来自学习):这是论文方法论核心声明,abstract 明确表述,可信任。
- 未开源数据:仅开源代码;⚠️ 原文 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)
坑在哪里
- LLM rubric generator 引入偏置:若 generator 对某类 action 有系统性偏好,rubric 会把 credit 错误地导向该类 action,放大偏置。建议:generator prompt 中加"列举你可能漏掉的负面案例"作为 diversity 约束。
- Attribution parser 是最脆弱环节:当前无标准解,DIY 实现质量参差不齐。建议先在 5–10 条人工标注的 trajectory 上测 parser 精度,再上车训练。
- Rubric 数据集未开源:仅有代码,rubric 数据与训练轨迹不可见,限制了第三方复现便利性。⚠️ 这是有意保留还是遗漏需确认。
- 训练时额外 LLM 调用成本:rubric generation 每 N 步一次,若 N=100、generator 用 GPT-4o 级模型、每条 rubric 100 tokens,估算每百万 step 约多花 $5–20(取决于 API 价格)。相对训练成本占比约 5–15%,需计入 infra 预算。
- 长轨迹存储成本:完整 trajectory 需在 rubric 评分完成前保留,客服等长对话场景轨迹可能达 50–200KB每条。若每日跑 10 万条训练样本,存储约 5–20 GB/天。
- 跨不同 agent 框架的迁移:AppWorld / Tau-Bench 均为结构化 API 调用 agent;对话式客服、长文档处理等非结构化场景,rubric 生成质量未知。建议先在小规模真实业务数据上做 A/B test。