116 Commits

Author SHA1 Message Date
sora
8632b2735b Drop the overall benches bar from the CLI (per-benchmark result lines already track progress; reporter keeps the capability for API users)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 11:04:00 +00:00
sora
b7be2a8df3 Progress bars self-describing: overall bar carries the current benchmark (benches · 1/6 humaneval), sample bar carries the stage tag (humaneval · generating/scoring/writing)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 11:02:41 +00:00
sora
dd7e1933ff HF endpoint auto-fallback: when huggingface.co is unreachable, probe mirrors (hf-mirror.com) and switch automatically with a one-line notice; error only if all fail
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:57:16 +00:00
sora
8ea83fea4f Pause the rich live display while datasets materialize so hub tqdm progress (download/generating splits) is visible instead of being erased; reporter gains pause()/resume()
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:54:04 +00:00
sora
c728db5f35 HF hub downloads: reachability probe fails fast with the mirror fix hint (was minutes of silent retries looking like a hang); status lines around hub downloads (start + records + elapsed)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:51:09 +00:00
sora
afe2fb8d28 Progress coverage for minute-scale work: overall bench bar (which benchmark of N, covers loading/scoring), byte-level download bars for dataset fetches (ModelScope/HF raw, tty-only), one shared reporter across benchmarks (caller-owned lifecycle)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:47:21 +00:00
sora
c54207a180 Error panel centered; comma-joined benchmark names get an immediate fix hint
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:43:41 +00:00
sora
a3269252fd Closing line simplified to one line (status + result path); tree removed
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:42:04 +00:00
sora
7f3c42d39c Drop summary.md from outputs; reports switch to report.jsonl (header line + one sample per line, round-trip verified)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:40:00 +00:00
sora
4aa3385345 README: new output directory layout
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:31:58 +00:00
sora
f9cb34fc17 Output dir restructure (evalscope/inspect-style): top-level summary.{xlsx,md,csv} + one directory per benchmark (report.json + detail.md); drops the opaque viz/ and reports/ layers
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:31:38 +00:00
sora
bd35b5b724 Auto-export consolidated excel workbook (results.xlsx: Summary/Perf/Categories/Samples) on every --out-dir run; per-bench artifact .md instead of .txt; xlsxwriter joins core deps
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:29:13 +00:00
sora
8cd45e4d16 Single-bench runs use the unified Run Summary table (panel behind --verbose); short model names in panel titles; plain-text paths in closing block (OSC8 links unreliable across terminals)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:25:56 +00:00
sora
1ef230f4c1 Run Plan Samples row: show the actual sampling config instead of the confusing placeholder
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:23:49 +00:00
sora
e9c0b5be77 Fail-fast endpoint probe (English, full curl hint, red panel on failure); slim run narration (drop duplicate generating/materializing lines); probe success line
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:21:27 +00:00
sora
044523f97e README: cache-dir default + directory layout tree in cache section
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:09:41 +00:00
sora
3a1bfb9fde Simplify closing block to one clean status+directory tree; drop lat/trunc columns from summary
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:08:21 +00:00
sora
ed36fda365 Auto-save results by default (evalharness-results/<stamp>-<model>/); final notice: run finished + saved location with clickable links
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:05:29 +00:00
sora
c1896e0a63 Center run plan, result panel, and Run Summary table; add lat p50/p90 + truncation columns
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 10:03:19 +00:00
sora
b4d39c560e Run Summary: tok in/out columns with per-direction throughput (in/s, out/s), totals; clickable file:// links in artifacts notice; drop note column
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 09:59:02 +00:00
sora
82d9d03b88 Run Summary: tokens/throughput/note columns + totals row; final artifacts notice (where results were saved, or how to save)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 09:49:36 +00:00
sora
075e8728cb Score bars: rich-style half-cell glyphs (━━━╸╌╌) replacing block chars
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 09:30:25 +00:00
sora
5c3d622f41 Rich result panel: metrics+bar with score colors, run stats (wall/model-time/throughput/tokens in-out/tok-s), top+bottom group highlights, perf row
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 09:20:44 +00:00
sora
b6c473ac26 Output polish: 1-based phase indices everywhere, drop [1/1] prefix on single-bench runs, slim progress bar (drop Waiting/Last columns)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 09:16:33 +00:00
sora
2dfb60cdf2 Few-shot split loading goes through cached materialization
Was: raw load_raw_records() hit the hub on EVERY run -- offline machines
stalled in 5x HF retries then silently degraded to 0-shot (changing the
benchmark's default contract, e.g. gsm8k 4-shot). Now the few-shot split
is a proper Dataset entry: first use downloads+cache, every later run is
a pure cache hit (verified: second run with HF_HUB_OFFLINE=1 loads
4-shot from cache, zero network lines, acc unchanged).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 07:47:48 +00:00
sora
9991c15816 README rewritten in evalscope style (numbered flow, code-first, 289->190 lines); config entry points: --hf-endpoint flag, ckpt follows cache root, EVALHARNESS_DOCKER_MIRRORS override
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 07:27:19 +00:00
sora
07bc56f423 Package *.txt/*.md data files (simpleqa grader prompt crashed import on fresh installs)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 06:54:21 +00:00
sora
5bb4b75b07 Rename --judge to --judge-model (alias kept) for symmetry with --model
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 06:52:31 +00:00
sora
c78b0d6f0f Add --api-key/--judge-api-key: explicit keys override env resolution, never serialized
Explicit key flows only into request headers (adapter attribute / pool
member), so it cannot leak into the spec string, EvalReport, or logs --
verified by scanning a report produced with a sentinel key. Two-key
setups run twice with different --api-key, or use per-host env vars.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 06:50:18 +00:00
sora
ad1cd18f04 Add --judge-provider flag; document key resolution rules (env per host, judge included)
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 06:45:26 +00:00
sora
08605d9ab2 CLI flag symmetry: --judge-api-url split; mock-boxed hyphen names
- --judge now accepts a bare model name paired with --judge-api-url,
  mirroring --model/--api-url; full legacy specs keep working
  (_compose_judge_spec, verified: name+url -> spec, spec passthrough,
  empty -> None; end-to-end on simple_qa with a live judge endpoint)
- mock adapter spellings: mock-boxed / mock-oracle / mock-fc preferred,
  colon forms still accepted; bare 'mock' stays echo
- fix mock adapter singleton mode pollution: resolve_adapter memoizes
  one instance, so mock-boxed then mock in one process leaked the
  boxed mode into the echo run -- each mock spec now builds a fresh
  instance
- README: mock-boxed in examples, judge flags row updated

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 06:43:27 +00:00
sora
ea93602dfa Unified, nicer result tables + conda env setup in README
- cli: rich Run Summary table for multi-benchmark runs (green/red rows,
  fallback to aligned plain text); unified _fmt_score (fractions render
  as percentages everywhere -- was 1.0 in summary vs 100.0% in detail);
  fix the stray "summary csv -> None/viz/..." print without --out-dir;
  summary.md upgraded to a proper table with model/timestamp/ok-count
  header -- one table for a whole N-benchmark run
- text renderer: single-bench headline deduped (dataset==recipe) and
  compacted to one facts line; adaptive metric-name column (long names
  no longer break alignment)
- md_compare: auto-switches to one-row-per-benchmark when comparing
  different benchmarks with different metrics; same-bench model
  comparison gains baseline delta markers (+/- percentage points)
- README: conda create/activate in the install block

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 06:30:22 +00:00
sora
27cf8b3c7e Usability round: progress plugin, CLI provider flags, top-level run(), vendored BFCL checker
- progress/: Rich per-sample terminal progress plugin (Run Plan panel,
  in-flight/rate/ETA bar); shared console + log-through-live to avoid
  interleaved writes, rollback() pairs begin_sample on the retry path,
  begin moved inside the semaphore (in-flight = actually generating),
  graceful degradation when rich is absent
- cli.py: --provider/--api-url/--model composition (openai-chat |
  openai-pool), --disable-thinking/--perf/--textools as first-class
  flags, per-bench phase lines and done/failed result lines
- __init__: top-level run()/arun() entries (event-loop safe for notebooks)
- third_party/bfcl: vendored official BFCL ast_checker + type mappings
  (Apache-2.0, provenance in __init__.py); imports rerouted locally,
  underscore_to_dot parameterized; verified bit-identical with the
  bfcl-eval package on 100 real rows -- removes the heavy extra
  (pinned numpy + cloud SDK wall) from the install path
- runner: progress/status hooks through generate+evaluate, checkpoint
  key scheme fix (empty-store falsy bug), tiered retry backoff,
  multi-segment pool {range} expansion fix, adapter-instance passthrough
- pyproject: tree_sitter family joins core deps; [bfcl] extra retired
- README: rewritten (zh) -- install/quickstart/flags reference/bench
  table/reliability/extension/architecture/validation

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-10 05:46:45 +00:00
sora
46bef7d3dd dp4-flash 28-bench alignment: renderer plugin layer, exec_workers, gen_profiles, AIMD pool, BCB/LCB/bfcl/gfc judge fixes
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-08 05:55:04 +00:00
bee997423a GPQA 0.15->0.55: (1) per-bench prompt_style cot_letter (es GPQA CoT template, matches its 'Think step by step' contract), (2) mcq_letter extractor case-insensitive answer-tail (ANSWER: vs answer), (3) deterministic choice shuffle 2026-08-28 18:01:16 +00:00
60b2bfc0dc GPQA deterministic per-question choice shuffle (es-adapter parity: sha256(question) seed, position-bias protection) — was fixed-A; lb2 subset grouping aligned to es (length field, 60 samples) 2026-08-28 16:24:11 +00:00
f7c7536400 Fix images_for_samples export (swe prefetch import error) 2026-08-27 15:27:30 +00:00
da989ea665 Align with local evalscope run.py (full read-through): (1) shuffle+seed42 sample selection identical to es _shuffle_in_place -- same exact sample subset both frameworks; (2) official MATH_PROMPT_TEMPLATE CoT boxed suffix on 7 math benches via DatasetSpec.prompt_suffix; (3) per-bench gen_config (temp/max_tokens from dpv4 yaml) on DatasetSpec, default-merged into gen_kwargs 2026-08-27 11:25:17 +00:00
7ce04b8ac6 cmmlu few_shot_num 5->0 (es code default is 0-shot despite docstring claiming 5); 28-bench parity check all green 2026-08-27 06:43:09 +00:00
e11cae038b Parity pre-flight check (truncation/few-shot/judge/no-think endpoints vs es run.py); bbh few_shot_num=3 fixed (was 0, es/paper default 3-shot CoT) 2026-08-27 06:37:57 +00:00
e32da10ce9 longbench_v2 chain of fixes: reasoning_content output fallback (Qwen3 thinking channel), nothink soft switch /no_think (template-400 immune), truncation input+output budget, adaptive context shrink on server 400 (cross-tokenizer margin, body-aware detection), pool fails over on 4xx 2026-08-27 06:27:59 +00:00
c4473a1e1c Token-level middle truncation (ported from evalside run.py: head+tail 128k, mrcr message-window); max_input_tokens param; perf fields (ttft/itl/status/retries) verified persisted in checkpoints 2026-08-27 03:23:33 +00:00
3c63338ac1 Excel renderer (xlsxwriter, 4 sheets: Summary dashboard with 21 columns, Perf detail, Categories, Samples drill-down); !perf spec flag; viz --style excel 2026-08-27 02:56:07 +00:00
e77ea4ce5c !perf spec flag; perf_stats full dashboard columns (success_rate, latency/ttft/tpot mean+P90+P99, tokens mean/total, output TPS, request QPS); summary.csv perf columns aligned 2026-08-27 02:49:55 +00:00
f2a914d0ff Performance profile: TTFT/ITL via SSE streaming (collect_perf flag), retries/http_status per request, pool success/retry/failure rates, perf_stats aggregator (P50/P95/P99 latency+ttft, tokens, retry_rate) in metric_groups['perf']; verified on fake SSE server 2026-08-27 02:45:51 +00:00
456d304a69 Fix numeric normalization in math_equal: strip $, commas, markdown (**), trailing units ('540 meters') — gsm8k 0.45->0.80 on ladder20 cross-check; winogrande cross-scoring 20/20 agreement (delta = generation variance) 2026-08-26 17:15:13 +00:00
111336cbee ladder20 complete 28/28 (Qwen3-8B pool): fixes en route — tau2 off-loop executor, double-encoded tool args, shared adapter cache; swe real-model 0.0 (oracle path verified 1.0) 2026-08-26 10:37:54 +00:00
0e1e31ba10 swe_bench_verified end-to-end verified (oracle patch -> official sweb image -> resolved); image naming mapped to local swebench/ set; ladder2 complete 28/28 2026-08-26 06:40:55 +00:00
3d16e9647a Tool-call parsing: Qwen3 native <tool_call> XML fallback in _parse (parser-agnostic, zero overhead when server converts properly) 2026-08-26 06:29:49 +00:00
7114564301 Multi-endpoint model pool (openai-pool/{lo..hi} round-robin with failover), nothink/textools spec flags (chat_template_kwargs enable_thinking=false; text-protocol tool calls for backends without --enable-auto-tool-choice), global cross-bench queue in ladder runs 2026-08-26 06:26:52 +00:00