Skip to content

Add MathArena 2025 final-answer benchmark suite - #8

Open
taivu1998 wants to merge 2 commits into
marin-community:mainfrom
taivu1998:tdv/matharena-2025-final-answer-suite
Open

Add MathArena 2025 final-answer benchmark suite#8
taivu1998 wants to merge 2 commits into
marin-community:mainfrom
taivu1998:tdv/matharena-2025-final-answer-suite

Conversation

@taivu1998

@taivu1998 taivu1998 commented Jul 7, 2026

Copy link
Copy Markdown

Summary

Adds five MathArena 2025 final-answer benchmark adapters with concise Evalchemy task names:

  • Apex2025 for MathArena/apex_2025
  • ApexShortlist for MathArena/apex-shortlist
  • CMIMC2025 for MathArena/cmimc_2025
  • BRUMO2025 for MathArena/brumo_2025
  • SMT2025 for MathArena/smt_2025

The adapters share a single MathArenaFinalAnswerBenchmark implementation that mirrors the existing HMMT MathArena protocol: repeated deterministic generations, \boxed{} final-answer prompting, the vendored MathArena parser/checker, HMMT-style aggregate metrics, and rank-0-only result materialization.

What changed

  • Added a shared eval/chat_benchmarks/matharena_final_answer_common.py helper for MathArena final-answer datasets.
  • Added thin task wrappers for Apex 2025, Apex Shortlist, CMIMC 2025, BRUMO 2025, and SMT 2025.
  • Added single-task configs with explicit max_tokens: 32768 and batch_size: 1.
  • Added README coverage for the new MathArena 2025 final-answer suite.
  • Added contract tests for wrapper shape, config parsing, task discovery, dataset normalization, row-count guards, metadata, pass@k guardrails, repeated generation, answer extraction, and repeated-run scoring.

Design notes

  • The adapters intentionally share the common final-answer implementation instead of duplicating five near-identical benchmark classes.
  • Concrete Evalchemy task/class names omit the MathArena prefix; dataset IDs and docs still name MathArena as the source.
  • Native pass@k is guarded for these tasks for now because this implementation follows the existing HMMT repeated-run protocol rather than the newer native pass@k path.
  • The shared loader validates expected row counts outside debug mode so upstream dataset drift fails loudly.
  • Source-specific metadata is preserved where available: source for Apex-style datasets and problem_type for CMIMC, BRUMO, and SMT.

Validation

  • python -m pytest -q -rs tests/test_matharena_final_answer_contract.py
    • 10 passed, 12 skipped
    • skips are from the local environment missing lm_eval
  • python -m pytest -q tests/test_passk.py tests/resume
    • 103 passed, 6 skipped
  • python -m py_compile tests/test_matharena_final_answer_contract.py
  • line-length check for tests/test_matharena_final_answer_contract.py
  • git diff --cached --check

Notes

The local shell prints a pre-existing virtualenvwrapper.hook_loader warning on command startup; commands above completed based on their exit status.

@taivu1998
taivu1998 marked this pull request as ready for review July 7, 2026 04:11
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