Replies: 3 comments
|
First Rust-level repro (n=600, single s(x,k=12), REML+double penalty), exact issue DGP: RECORD poisson: reml_score=-1121.88 edf=6.71 outer_cost_evals=63 inner_pirls_solves=97 grad_norm=1.3e-6 converged=TRUE Two findings:
|
Root cause nailed + fix shipped (PR #1730)The actionable Gamma bugThe Gamma Mechanism (verified, not theorized): The in-loop cost-stall guard decides But the authoritative gradient — re-measured at the shipped β after the accept-fit re-estimates the Gamma shape ( Disproven dead-ends: (1) re-measuring the gradient inside the bridge at stall-time reproduces the noisy Fix (two coordinated edits)
Verification
Out of scope (→ #1033)The dominant family-agnostic cost — the seed-grid prepass + multistart's ~80 full-n inner solves for a single smooth (mgcv ~8) — is the larger share of the 7–28x and is load-bearing (#1266/#1548/#1464/#1426). Deferred to #1033. |
|
✅ SHIPPED — PR #1730 squash-merged to main as Fix (part B, the actionable Gamma-specific bug): The Gamma Two-part fix:
Result: gamma Part A (dominant, family-agnostic ~80 prepass+multistart solves) deferred to #1033 — every probe is load-bearing (#1266/#1548/#1464/#1426). Zero regressions vs baseline main (failure-set diff empty; the 14 full-suite failures are all pre-existing — GPU SIGTERM timeouts + R/mgcv-absent + numerical-tolerance tests, byte-for-byte identical on clean origin/main). |
Uh oh!
There was an error while loading. Please reload this page.
Starting investigation of #1690. Poisson 1-D s(x) ~28x slower than mgcv, Gamma ~7x, at equal RMSE. n=600, single smooth. Both REML + double penalty (select=TRUE).
Prior art: #1575 (binomial) traced the same family of problem to the outer-loop work count (seed-grid prepass ~20 full-n solves + multistart + ARC Newton) and the default-ON Firth path. Poisson/Gamma do NOT pay Firth, so the residual here should be dominated by the seed-grid/multistart scaffolding (#1033 territory) plus any family-specific overhead. The 4x Poisson-vs-Gamma gap is the interesting clue — investigating what differs.
Will profile the actual Rust path and look for correctness-preserving levers.
All reactions