Meta-Eval (1/2): Add Judge Meta-Evaluation Tasks - #111
Conversation
| # verdict formats contribute categorical 0/0.5/1 preferences. | ||
| scoring_preference = ( | ||
| float(preference) | ||
| if isinstance(parser, PairScore) |
There was a problem hiding this comment.
q: this only keeps the continuous preference when the parser is PairScore, so ArenaHard's graded >>/>/=/</<< value and AlpacaEval's logprob-weighted will collapse to 0/0.5/1 before reaching the soft-ranking/BT scorer.
Should we keep it like this, e.g. only score-format judges are meant to feed the soft metric? If not, maybe this could key off a has_continuous_preference property, so any new parser doesn't silently lose granularity here.
There was a problem hiding this comment.
Yes I thought I have fixed this but it's probably in seperate branch. I have noticed this and I agree we should add some field so log-probs can just fed into soft-ELO. Thanks for catching this
ErlisLushtaku
left a comment
There was a problem hiding this comment.
LGTM, just left a comment earlier that we should not forget in case we want to fix it
2ec3c9c to
5e2135a
Compare
baf6474 to
8e8072a
Compare
Package official Arena-Hard, MT-Bench, and AlpacaEval task definitions with their prompt, parser, and scoring behavior.
Evaluate judge agreement and rating quality against sampled human arena battles using the shared task, prompt, parser, and scorer registries.
5e2135a to
b152c46
Compare
8e8072a to
28e640c
Compare
b152c46 to
b00bd9b
Compare
This PR is mostly written with respect to the code of @ErlisLushtaku. It is the re-integrated versions to rebased on top of the
feat/official-task-variantsbranch to unify some structureProblem
JudgeArena can use human arena votes to estimate a model's ELO rating, but it does not provide a direct way to evaluate the judge itself.
Judge evaluation starts from completed arena battles. The framework must ask a judge to label the stored model responses and then compare those labels with the human votes. Running model generation or treating the judge as a candidate model would mix two different experiments.
Before and after
judgearenaentry pointAdded tasks
meta-eval-lmarena-140k/100kmeta-eval-compariaLanguage variants use the same task pattern, for example
meta-eval-lmarena-140k-enandmeta-eval-comparia-fr.How it works
Meta-evaluation does not generate completions and does not evaluate a candidate model. The judge is the subject of the experiment.
The main components are:
MetaEvalProtocolvalidates the arena, judge settings, and scorer selected by a task.Results
The report includes:
Each run writes
sample.parquet,annotations.parquet,summary.csv,results.json,config.yaml, andrun-metadata.v1.json.Example
judgearena \ --task meta-eval-lmarena-140k \ --judge.model OpenRouter/deepseek/deepseek-v3.2 \ --meta_eval.languages '["en", "es"]' \ --meta_eval.top_models 20 \ --meta_eval.battles_per_model 50 \ --meta_eval.n_bootstraps 20The task defaults to the
meta-eval-pair-scoreprompt preset. A different registered preset can be selected with--judge.prompt_preset, and--judge.swap_mode bothenables judging both answer orders.Change composition and task scope
Unique stacked diff against
feat/official-task-variantsat28e640c8; parent PR changes are excluded. Changed LoC = added + removed lines.Tests
The focused tests cover task loading, deterministic sampling, human-label normalization, prompt parsing, swap handling, agreement metrics, ranking metrics, ELO-gap calculation, saved artifacts, and CLI configuration.
Notes
In the future, we can make the entire pipeline more abstract and seperate
JudgeAnnotations,ModelCompletionsetc so meta-eval is just aELOpipeline withoutJudgeAnnotationsand instead uses the existing battles with different scorer (agreement instead of ELO). However for simplicity of the current PR (and as we did already extensive refactoring), we should defer this for the future.