Repository navigation
FIX: bound the Fuzzer MCTS reward by the scored query count - #3628
Manohar Paturi (ManoharPaturi) wants to merge 1 commit into
Conversation
|
Quick note on the red macOS job so it does not look like the change broke something: the failure is Main is flapping on the same test today. Run 41014283717 on main failed it an hour ago with 1.7288 seconds on ubuntu 3.13, while run 41012598348 passed the identical code at 06:11, and two earlier main runs yesterday evening failed it too. The test also passes locally on the PR branch every time I run it. Since the approval and auto merge are already in place, one re-run of the failed job should be enough to land this whenever a runner is not contended. Update: the re-run advice above was wrong. The same macOS leg failed three consecutive attempts, so re-running is a coin flip on this one, not a fix. The timing assertion itself is the flake; #3688 removes it in favor of the structural assertions that already prove the halt, and this PR should land once that merges and the branch updates. |
|
Filed #3671 with the main run evidence so the timing margin has a tracker. |
Description
Fixes #3627
_update_mcts_rewardsdivided the jailbreak count by the number of configured seed prompts while itsnum_queriesparameter, the actual number of scores returned, sat unused except as a zero guard. Because the count comes from the flattenedscore_batch_asyncresult, which may hold several scores per response, the reward could leave its intended range: three jailbreak scores over one prompt produced 3.0, inflating the MCTS exploitation term. The reward now divides by the scored query count, keeping it a true rate for any scorer.Tests and Documentation
Added a regression test feeding a multi score batch shape that asserts the reward is exactly 1.0 when every score is a jailbreak and 0.25 for one in four. It fails on main, which returns 3.0 and 1.0 respectively for these inputs, and passes with the change. The full Fuzzer suite passes (49 tests).
No documentation change needed, so I did not run JupyText.