Timings Report Notebook¶
notebooks/generic/timings_report_mo.py is a marimo report for export timing
sidecars. It scans exports/**/timings.json at runtime, splits rows by the
first export path component, and displays separate tables for matrix and
gridworlds.
Each row represents one timings.json file. The export label is the environment
name plus any variant path below it, for example congestion/6 or pursuit/3.
Stage columns are discovered from the JSON files and ordered with the common
training, world-model, and opponent-model stages first. Values are rendered as
hours (runs). Indexed stages start at the last run_idx == 0, and
single-shot stages use the latest run entry.
The report also loads a sibling timings_hardware.json when present. Hardware
IDs are collected from the same current run batch used for duration totals, then
resolved into:
- allocated RAM, including whether it came from cgroup or scheduler detection;
- affinity-accessible CPU model, physical cores, and logical threads;
- visible GPU model, VRAM, and peak memory bandwidth.
When a timing entry has no resolvable hardware sidecar, the report labels its hardware as unavailable.
True Shielding timings are intentionally filtered out by stage key before the
tables are built. The filter currently excludes stage names containing
true_shield or true shielding, which covers ippo_true_shielded and
ippo_true_shielded_setup while preserving learned shielding timings such as
ippo_shielded.