Repository navigation
Integrate violation probability scoring - #1705
Conversation
Security 1.1 scores each SUT from the evaluator's violation probabilities. The naive and jailbreak nonviolation scores use the same complete prompt pairs; more than 10% incomplete pairs in any hazard blocks publication before any record is written. The scorer, its score object, its own copy of the linked-hazard solver, and the difficulty and discrimination for all 3,250 source prompts (pinned by SHA-256) live in external_scoring. Outside it: the Security 1.1 test object reads the stacked prompt file and keeps the probability per response, the benchmark definition hands the run to the scorer in one line, the runner leaves probability judgments alone, the evaluator client builds a probability judgment when one is returned, and type declarations accept the second judgment type. No CLI changes. Security 1.2 is removed; safety_v_1_2_scoring.py is unchanged from main. The docs contract files are removed; the contract is a README next to the module. The parameters file is committed at the owner's direction. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅ |
| @staticmethod | ||
| def benchmark_measures_violation_probability(benchmark: str) -> bool: | ||
| # TODO: This would be easier if we can access the benchmark object instead of just relying on the uid. | ||
| return "security" in benchmark and "1.1" in benchmark |
| class SafetyAnnotation(BaseModel): | ||
| class Annotation(BaseModel, ABC): | ||
| @abstractmethod | ||
| def dump_value(self) -> dict[str, Any]: |
There was a problem hiding this comment.
Could this be named to_dict maybe?
There was a problem hiding this comment.
That's nicer for sure but I feel like that implies that all of the values are going to be dumped in the dict, when in fact it only should include the "main" value e.g.is_safe or violation_probability.
309230f to
d16dc24
Compare
|
Could somebody please explain to me the intent behind the changes to a bunch of modelgauge and modelbench code? Our original theory of isolating the scoring code was that it would let us keep some sense of our main system while having a place for the generated code. I guess that theory's no longer in operation, but I don't know what we're replacing it with. |
Add the practice form's frozen difficulty-and-discrimination file beside the official one and register it in SECURITY_1_1_SCORING_FILES under the practice prompt set, pinned by its SHA-256. Register the practice prompt set airr_practice_security_1.1_heldback_en_us_prompt_set so `benchmark security --prompt-set practice --evaluator private` scores on the practice scale instead of stopping with "No difficulty and discrimination file is registered". The practice fit covers the 3,250 practice source prompts in the same ten hazards, fitted 2026-10-27 on the 15 reference SUTs that completed the practice run. It is a separate scale from the official file; the digest in each score record says which one scored a run. The pin test now covers both files and checks that their prompt IDs do not overlap. Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
|
@wpietri There is a new annotation paradigm. The new benchmarks are based on |
) * Publish Security 1.1 per-hazard scores in the Safety record shape The record now has a top-level score and one entry per hazard, with the naive and jailbreak blocks side by side at each level. Every block names its percentile reference_percentile_score. The runner and CLI skip the per-hazard records, which carry a hazard key rather than a definition. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * Use HazardScore objects for paired Security hazard scores --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Security v1.1 introduces a new type of annotation/scoring paradigm based on violation probabilities instead of is_safe.
I did not touch any of the scoring code in
external_scoring.One thing to be mindful of is that while previous security benchmarks had separate hazards for naive/jailbreak, v1.1 combines them into a single one. I believe this is because of the "paired" prompts concept where the naive and jailbreak versions of a prompt have to be scored together.
Also, this benchmark does not currently work because we are still waiting on the properly formatted prompts file.