feat(aa-lcr): add dataset + 0-shot LLM-equality-checker-graded task#44
feat(aa-lcr): add dataset + 0-shot LLM-equality-checker-graded task#44jack-scitix-ai wants to merge 2 commits into
Conversation
1021fe5 to
6f05200
Compare
ethan-scitix
left a comment
There was a problem hiding this comment.
Approve. Reproduction confirmed empirically against the AA-LCR leaderboard: gpt-oss-120b/20b (high) scored 53.0 / 33.7 vs official 50.7 / 30.7 — within ~2–3 pts, and the exact 1/300 granularity confirms the n=3 protocol is faithfully replicated. Loader verified against the real archive at the pinned SHA (100/100 questions, 776/776 document refs resolve; the cp437→UTF-8 + NFC recovery is load-bearing for 8 non-ASCII filenames and correct). Preflight green, 36 tests pass, accuracy recomputes exactly from raw grades. Prompt/grader templates are verbatim from the card.
Nit (do first, 1 line): Pin the source URL to a revision permalink in sieval/community/aa_lcr.py:2 and reference_impl.url (sieval/tasks/aa_lcr_0shot_gen.py:77) — the templates are reproduced verbatim from a specific revision, so link .../blob/bdae010bbce259820c0e34c1d7cce210d966fb75/README.md rather than the repo root.
Nit (nice-to-have): Add the validation to reference_impl.notes the way simpleqa_verified does, e.g. "reproduced gpt-oss-120b/20b (high) within ~2–3 pts of AA leaderboard 50.7/30.7; grader Qwen3-235B-Instruct-2507." It's the evidence that justifies status="experimental".
Question (low): The empty-answer guard in sieval/tasks/aa_lcr_0shot_gen.py:167 is a good defensive choice but diverges from the browsecomp/simpleqa_verified siblings (it didn't fire in any of these runs). Worth a one-line comment noting it's aa_lcr-specific by design, so the next person diffing the family doesn't read it as an oversight.
status="experimental" is the correct call and should stay — no published upstream harness to diff against, and the score depends on a grader endpoint that isn't version-pinnable. Nothing here gates merge.
6f05200 to
108b158
Compare
Type
Summary
AA-LCR_Dataset.csvand pulls each document straight from the shippedextracted_text/AA-LCR_extracted-text.zipindata_source_filenamesorder; recovers the archive's non-UTF8 (cp437-mojibake) / NFD member names so lookups match the CSV.Test Plan
Automated
ruff check && ruff format --check)ty checkormypy --strict)pdm run pytest)Manual
Validated against the Artificial Analysis public leaderboard (https://artificialanalysis.ai/evaluations/artificial-analysis-long-context-reasoning). All runs:
temperature=0.6,n=3repeats (AA-aligned), grader = Qwen3-235B-A22B-Instruct-2507. gpt-oss-20b served locally (sglang, bf16); gpt-oss-120b via a remote OpenAI-compatible endpoint.sieval dataset download aa_lcrverified end-to-end (100 questions / 776 documents load, 0 failures).Known discrepancy — gpt-oss-20b low (−9.7): AA's own numbers show the 20b is effort-insensitive (low 31 ≈ high 30.7) while the 120b is effort-sensitive (43.7 → 50.7), i.e. the small model saturates at high effort. Our high-effort runs match AA for both sizes, and 120b matches at both effort levels — so the eval pipeline and grader are sound. The 20b-low gap is attributed to a serving-level difference in how much reasoning the "low" level elicits on the small model (our local run produced ~230 median reasoning tokens at low), not the benchmark implementation. Not resolvable from our side without AA's per-question outputs.
Checklist
Required (all PRs)
type(scope): description)AI-Generated Code - <model> (<provider>)in module docstringcore/If: New or Modified Benchmark
sieval dataset download <name>succeeds)__init__.pyIf: community/ Changes