Skip to content

Add BenchPress score-matrix adapter (utils/benchpress)#197

Open
borgr wants to merge 1 commit into
evaleval:mainfrom
borgr:add-benchpress-adapter
Open

Add BenchPress score-matrix adapter (utils/benchpress)#197
borgr wants to merge 1 commit into
evaleval:mainfrom
borgr:add-benchpress-adapter

Conversation

@borgr

@borgr borgr commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator

What

Adds utils/benchpress/ — an aggregator adapter for the BenchPress score
matrix
(microsoft/benchpress-score-matrix), modeled on utils/llm_stats.

BenchPress re-reports model scores scraped from provider blogs, tech reports,
model cards, leaderboards and third-party aggregators, each cell carrying its own
citation and provenance — so it's handled as an aggregator: source_type=documentation,
source_role=aggregator, and output logs are split by evaluator_relationship
(derived per score from BenchPress's source_type).

Behavior

  • Data source: the public CSV mirror on HuggingFace
    (data/{models,benchmarks,scores_all}.csv); --input-json replays a saved
    payload offline.
  • Updates: follows BenchPress's documented metadata.json manifest —
    generated_at_utcretrieved_timestamp, and source_git_commit /
    generated_at_utc recorded on every record so consumers can detect a new snapshot.
  • Citations: each score's reference_url is first in source_data.url
    (with reported_by = its host); the dataset URL follows.
  • Metric bounds: the metric's true bounds — declared range wins, else
    per-family bounds with ±inf where genuinely unbounded (elo/rating/index/raw),
    written as the JSON Infinity token (EEE's json.loads + pydantic loader reads
    float('inf'); write_log serializes the record directly because
    model_dump_json would null it).
  • model_info.id = <provider-slug>/<benchpress-slug> (raw slug kept in
    additional_details); eval_library = the aggregator, per-score harness/settings
    in additional_details.

Tests / verification

  • tests/test_benchpress_adapter.py (8 tests): relationship split, schema
    validity, id/citation, bounded vs unbounded(inf), version provenance, and the
    Infinity-token round-trip + output layout.
  • Live run against the current HF data → 366 logs across 28 orgs, all pass
    every_eval_ever validate
    .

Also adds utils/benchpress/README.md and a row in utils/README.md. No existing
files are modified beyond the utils/README.md table row.


Companion data PR: the records this adapter produces are proposed to the datastore in https://huggingface.co/datasets/evaleval/EEE_datastore/discussions/164 (paired — if one changes, the other will be updated).

Aggregator adapter for microsoft/benchpress-score-matrix, modeled on llm_stats:
source_type=documentation, source_role=aggregator, output logs split by
evaluator_relationship (derived per score from BenchPress source_type). Reads the
public CSV mirror from HuggingFace (--input-json for offline replay).

- Follows BenchPress's documented update manifest (metadata.json): generated_at_utc
  -> retrieved_timestamp, and source_git_commit/generated_at_utc recorded on every
  record for snapshot/update tracking.
- Metric bounds are the metric's true bounds with +/-inf where unbounded; written
  as the JSON Infinity token (EEE's json.loads + pydantic loader reads float('inf');
  model_dump_json would null it, so write_log serializes the record itself).
- Per-score citation -> source_data.url; per-score harness/settings -> additional_details.

Adds utils/benchpress/README.md, a utils/README.md row, and
tests/test_benchpress_adapter.py (8 tests). Verified: live fetch -> 366 logs, all
pass 'every_eval_ever validate'; unit tests pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant