Skip to content

Timings Report Notebook

notebooks/generic/timings_report_mo.py is a marimo report for experiment timing sidecars. It scans exports/**/timings.json, parses the repository's export path convention, and renders a sorted table.

The expected path layout is:

  • exports/<family>/<environment>/<objective>/<num_agents>/<algorithm>/timings.json

The report also tolerates older/direct sidecars without an algorithm directory:

  • exports/<family>/<environment>/<objective>/<num_agents>/timings.json

Rows are sorted by environment, experiment/objective, number of agents, and algorithm. Stage columns are discovered from the JSON files and ordered with the known temporal-game stages first: training, checkpoint save, NashConv, and AlphaRank. Stage values are shown as hours (runs) so multi-seed timings remain compact while still showing how many entries contributed to the total.

The report loads a sibling timings_hardware.json, resolves the current runs' hardware_id values, and displays the enforced memory allocation, accessible CPU topology and clock source, and visible GPU model, VRAM, and bandwidth. Multiple hardware IDs remain visible instead of being collapsed. Older timing files without hardware IDs continue to show their embedded RAM fields as legacy metadata.

The notebook reads the same timing JSON structure produced by src.experiments.experiment_timings.record_timing(...): each top-level key is a stage, and each stage may include total_seconds and a runs list whose entries reference hardware records. For indexed stages, the report treats entries after the latest run_idx == 0 as the current batch; for unindexed single-shot stages, it reports the latest entry.