Meta-Eval (1/2): Add Judge Meta-Evaluation Tasks - #111
Open
kargibora wants to merge 2 commits into
Open
Conversation
Evaluate judge agreement and rating quality against sampled human arena battles using the shared task, prompt, parser, and scorer registries.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.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.