monaco-dev-viewer / README.md
timchen0618's picture
Monaco dev viewer β€” initial 12-tab launch
61b5f50 verified
|
Raw
History Blame Contribute Delete
8.02 kB
metadata
title: MoNaCo Dev Viewer
emoji: 🧩
colorFrom: pink
colorTo: indigo
sdk: static
pinned: false
license: apache-2.0

🧩 MoNaCo Dev Viewer

A per-qid web viewer for the 100-question dev subset of the MoNaCo benchmark (paper), mirroring the layout of the sibling open-wikitable-smoke-viewer.

Live: https://timchen0618-monaco-dev-viewer.static.hf.space

12 tabs

# tab contents mean LLM judge score
1 πŸ“‘ Dataset raw monaco question + gold answer + flat list of supporting docs β€”
2 πŸ”§ Unified eval cross-dataset bundle: question + gold answers + gold docs (markdown) β€”
3 πŸ›  Structure per q (was Baseline A) agentic run over per-qid scaffolds (cell 4) 90.48
4 πŸ›  Structure per ds (was Baseline B) agentic run over flat structure corpus (cell 5) 87.94
5 πŸ›  DCI (was Baseline C) agentic run over rawtext corpus (cell 6 v2 rerun) 82.96
6 πŸ€– e2e v0 e2e_pipeline run with on-the-fly per-shape extraction 82.01
7 πŸ€– e2e v2 e2e_pipeline run v2 80.94
8 πŸ€– e2e v3 e2e_pipeline run v3 81.32
9 πŸ— e2e structures v0 for each supporting doc, the 5-shape structures produced by e2e v0 β€”
10 πŸ— e2e structures v2 same for the v2 pipeline β€”
11 πŸ— e2e structures v3 same for the v3 pipeline β€”
12 πŸ“Š Compare 9 cells side-by-side per qid (all 6 baselines + 3 e2e runs) β€”

Scoring column is the LLM judge_score (0.0-1.0) from the AML submit_judge_responses_aml.py protocol with --deterministic-extract auto-enabled for --dataset monaco_dev β€” this is the canonical scoring protocol for MoNaCo. correct = 1 iff judge_score β‰₯ 0.99.

Mean judge_scores are over all 100 qids: qids missing a judge row (judge dropouts) count as judge_score = 0. If you only want the mean over judged qids, use the numbers in information-scaffolds/data_creation/monaco_dev/README.md.

Repo layout

monaco-dev-viewer/
β”œβ”€β”€ index.html                # 12-tab topbar + sidebar + main pane
β”œβ”€β”€ viewer.js                 # single-file frontend (~1250 lines)
β”œβ”€β”€ style.css
β”œβ”€β”€ README.md                 # this file
β”œβ”€β”€ index.json                # πŸ“‘ Dataset  β€” flat array of {qid, question, ...}
β”œβ”€β”€ records/<qid>.json        # πŸ“‘ Dataset per-qid raw docs
β”œβ”€β”€ unified/                  # πŸ”§ Unified eval
β”‚   β”œβ”€β”€ index.json
β”‚   └── records/<qid>.json
β”œβ”€β”€ trajectories/             # πŸ›  Structure per q (cell 4)
β”‚   β”œβ”€β”€ index.json  (wrapped: {meta, rows})
β”‚   └── records/<qid>.json
β”œβ”€β”€ trajectories_corpus/      # πŸ›  Structure per ds (cell 5)
β”œβ”€β”€ trajectories_rawtext/     # πŸ›  DCI (cell 6 v2)
β”œβ”€β”€ trajectories_e2e_v0/      # πŸ€– e2e v0
β”œβ”€β”€ trajectories_e2e_v2/      # πŸ€– e2e v2
β”œβ”€β”€ trajectories_e2e_v3/      # πŸ€– e2e v3
β”œβ”€β”€ e2e_structures_v0/        # πŸ— e2e structures v0
β”œβ”€β”€ e2e_structures_v2/        # πŸ— e2e structures v2
β”œβ”€β”€ e2e_structures_v3/        # πŸ— e2e structures v3
β”œβ”€β”€ compare/                  # πŸ“Š Compare
β”‚   β”œβ”€β”€ index.json  (per-qid {cells:[…], question, gold_answers_length})
β”‚   └── records/<qid>.json
└── scripts/                  # builders (see below)
    β”œβ”€β”€ build_dataset.py
    β”œβ”€β”€ build_unified.py
    β”œβ”€β”€ build_trajectories.py
    β”œβ”€β”€ build_e2e_structures.py
    └── build_compare.py

All shards are small (~5–200 KB); the site is served as static files (no backend). Deep-linkable via URL hash, e.g. #trajectories:42, #compare:1048, #e2e_structures_v0:12.

Reproduction

Run from this directory. Adjust paths if you're mirroring the layout on a different machine.

cd data_visualizer/monaco-dev-viewer

# 1. Dataset  β€” reads $DATA_ROOT/eval/monaco_dev/raw/test_with_chunks.jsonl
python scripts/build_dataset.py

# 2. Unified eval  β€” reads $DATA_ROOT/eval/monaco_dev/unified/test_with_chunks.unified.jsonl
python scripts/build_unified.py

# 3-5. Baseline trajectories (needs pred + judged JSONLs under information-scaffolds/outputs/monaco_dev)
python scripts/build_trajectories.py \
  --predictions ~/projects/information-scaffolds/outputs/monaco_dev/baselines/cell4_agentic_a/named-outputs/response/response \
  --judged      ~/projects/information-scaffolds/outputs/monaco_dev/judges/c4_agentic_a/named-outputs/judged/judged \
  --out         trajectories \
  --label       "structure per q (monaco_dev Β· Baseline A Β· cell4_agentic_a)"

python scripts/build_trajectories.py \
  --predictions ~/projects/information-scaffolds/outputs/monaco_dev/baselines/cell5_agentic_b/named-outputs/response/response \
  --judged      ~/projects/information-scaffolds/outputs/monaco_dev/judges/c5_agentic_b/named-outputs/judged/judged \
  --out         trajectories_corpus \
  --label       "structure per ds (monaco_dev Β· Baseline B Β· cell5_agentic_b)"

python scripts/build_trajectories.py \
  --predictions ~/projects/information-scaffolds/outputs/cell6_v2_reruns/monaco_dev_cell6_v2/named-outputs/response/response \
  --judged      ~/projects/information-scaffolds/outputs/monaco_dev/judges/c6_agentic_c_v2/named-outputs/judged/judged \
  --out         trajectories_rawtext \
  --label       "DCI (monaco_dev Β· Baseline C Β· cell6_agentic_c v2)"

# 6-8. e2e trajectories (predictions + judged live under run_logs/)
for v in v0 v2 v3; do
  python scripts/build_trajectories.py \
    --predictions ~/run_logs/e2e-monaco_dev-comparison/outputs/$v/named-outputs/predictions/predictions \
    --judged      ~/run_logs/e2e-monaco_dev-comparison/judge_outputs/$v/named-outputs/judged/judged \
    --out         trajectories_e2e_$v \
    --label       "e2e $v (monaco_dev)"
done

# 9-11. e2e structures (per-qid supporting docs + 5-shape scaffolds)
for v in v0 v2 v3; do
  python scripts/build_e2e_structures.py \
    --scaffolds-dir ~/run_logs/e2e-monaco_dev-comparison/outputs/$v/named-outputs/scaffolds_dir \
    --out           e2e_structures_$v \
    --label         "e2e $v (monaco_dev)"
done

# 12. Compare β€” reads all 9 (pred, judged) pairs and joins by qid
python scripts/build_compare.py

Local preview

python -m http.server 8877
# then open http://127.0.0.1:8877/

Deploy

HF_TOKEN="$HF_TOKEN" python ~/.copilot/skills/hf-space-push/push_hf_space.py \
    timchen0618/monaco-dev-viewer . \
    --commit-msg "Monaco dev viewer β€” 12 tabs"

The Space is sdk: static, so it redeploys instantly on push (no build step).

Data notes

  • Cell 1 (closed-book) has no outputs/monaco_dev/baselines/cell1_closedbook/ dir; the raw response lives at outputs/monaco_dev_smoke/sincere_pepper_d54pl76cjj/named-outputs/response/response. The compare builder points there directly.
  • Cell 6 (DCI) β€” outputs/monaco_dev/baselines/cell6_agentic_c/ is the broken v1 run (100/100 missing_structures). The good v2 rerun is at outputs/cell6_v2_reruns/monaco_dev_cell6_v2/, judged under outputs/monaco_dev/judges/c6_agentic_c_v2/.
  • Judge dropouts: cell 1 = 4/100 missing Β· cell 2 = 4 Β· cell 3 = 7 Β· cell 4 = 0 Β· cell 5 = 1 Β· cell 6 = 4 Β· e2e v0/v2/v3 = 0. Missing rows score 0.
  • Non-agentic cells 1-3 have no events in the response.jsonl (single LLM call). The trajectory-record renderer collapses to just system prompt + user prompt + model answer + score.

See also

  • Full-benchmark viewer: data_visualizer/monaco-benchmark-viewer/ (~1315 questions, docker-backed).
  • Sibling for open-wikitable dev: data_visualizer/open-wikitable-smoke-viewer/.
  • Authoritative reproduction guide with per-cell judge means: information-scaffolds/data_creation/monaco_dev/README.md.