autofit_profiling

Where the time in one PyAutoFit search.fit goes, and the expectation-propagation / graphical-model baselines. Producer page for the PyAutoPulse instance fit (catalogue.json, profiling-summary@2). Measurements are declared, not judged.

gaussian_x1/nautilus/search_fit

af.Nautilus search.fit (PyAutoFit, checkpointing and output on) · wall 28.41 s (median of 3) · 7501 likelihood calls · cpu/numpy · PyAutoFit 2026.10.12.1 · measured 2026-10-14T09:19:45Z · result row

componentsecondsshare of wall
nn_training11.8743.4 %
checkpoint_io7.0924.5 %
bound_geometry5.6020.4 %
visualisation1.164.1 %
sampler_bookkeeping0.672.3 %
samples_output0.491.7 %
likelihood0.321.1 %
other0.291.0 %
proposal_sampling0.220.8 %

Findings-page shares (sampler_internal_shares, information only): nn_training 51.7 % (Δ -4.7 pp), bound_geometry 25.2 % (Δ -3.4 pp), likelihood 14.3 % (Δ -13.1 pp) — outside ±10 pp.

gaussian_x1/nautilus/bare_sampler

bare nautilus.Sampler (the findings page's measurement; no PyAutoFit, no checkpoint) · wall 22.53 s (median of 3) · 16400 likelihood calls · cpu/numpy · PyAutoFit 2026.10.12.1 · measured 2026-10-14T09:19:45Z · result row

componentsecondsshare of wall
nn_training12.1153.8 %
bound_geometry5.8025.3 %
likelihood2.6611.6 %
proposal_sampling1.315.7 %
sampler_bookkeeping0.703.1 %
other0.000.0 %
checkpoint_io0.000.0 %

Findings-page shares (shares_of_wall, reproduction gate): nn_training 51.7 % (Δ +2.1 pp), bound_geometry 25.2 % (Δ +0.1 pp), likelihood 14.3 % (Δ -2.7 pp) — within ±10 pp.

EP / graphical-model baselines (gaussian_1d_ep)

N 1-D Gaussians sharing one centre, fitted by expectation propagation (factor_graph.optimise, per-factor DynestyStatic + Laplace cavity) and by one joint DynestyStatic graphical fit. One fresh-process fit per cell, reproduced against the committed autofit_workspace_developer baselines with the runtime-drift-2x-1ms rule (producer note, not a Pulse comparison).

cellwall scommitted sratiodriftpeak RSS MiBtruth logL sumsanity (committed)
gaussian_1d_ep/ep/N10152.9566.90.27improved403-472.253 (match yes)PASS (PASS)
gaussian_1d_ep/ep/N337.1251.90.15improved353-128.397 (match yes)PASS (PASS)
gaussian_1d_ep/ep/N30842.81758.70.48improved642-1500.561 (match yes)FAIL (FAIL)
gaussian_1d_ep/graphical/N107.150.70.14improved446-472.253 (match yes)PASS (PASS)
gaussian_1d_ep/graphical/N36.022.80.26improved420-128.397 (match yes)PASS (PASS)
gaussian_1d_ep/graphical/N3019.0132.80.14improved515-1500.561 (match yes)FAIL (FAIL)

cpu/jax/float64 · PyAutoFit df6d218f10 · host DESKTOP-H143S82.

Analytic Gaussian benchmark (closed form vs EP vs graphical)

analytic Gaussian parity: closed form | minimal EP | autofit graphical | autofit EP · wall 130.0 s · peak RSS 332 MiB · PARITY PASS (41/41) · sigma_q95 12.1536 (banked 12.15, match yes) · result row

legcolumncells passedmax amax bcolumn s
Aminimal EP6/60.0000.0000.0
Aautofit graphical6/60.0650.05824.5
Aautofit EP6/60.0000.0001.9
Bminimal EP7/70.0780.1460.0
Bautofit graphical7/70.0500.04144.4
Bautofit EP7/70.0790.14656.8

Parked, not run: graphical/analytic_gaussian_priors.py (NEEDS_FIX 2026-09-30 - moments projection (PyAutoFit#1656) passes the gaussian and truncated scatter families (16/16 each) but the loggaussian family misses 11/16: log-space scatter comes back at log sigma 3.28 vs mode 1.53 / reference 1.83 - TransformedMessage moments path suspected; see PyAutoMind draft/bug/autofit/ep_moments_loggaussian_transformed_scatter.md).

Limitations

Rendered from 9 result rows by build_catalogue.py; evidence updated 2026-10-14T14:45:45Z.