Reclaim trainer-port entropy + close the NGBoost quality-parity gate - #21
Merged
Conversation
Remove maintenance surface with no remaining load-bearing reason, each cut proved against the consumer graph and the existing suites: - Delete DistributionalGBDT._compute_gradients and the NaturalBoost override. The trainer computes gradients through DistributionObjective, so this "override to change the gradient" extension point had zero callers; the natural/ordinary switch is the _use_natural_gradient flag. - Inline the _predict_raw forwarding wrapper into predict_params. - Collapse the duplicate _as_1d helper (byte-identical in _formula.py and _survival.py) into one validate_1d in _validation.py. Net -36 lines and 3 fewer concepts. 102 distributional / formula / survival / persistence / integration tests pass; no observable behavior change. Co-authored-by: Cursor <cursoragent@cursor.com>
OpenML's name->id resolution endpoint returns frequent 503s, which was skipping most UCI quality datasets. Fetch by numeric data_id first (a different, more reliable endpoint) and fall back to name, with retries and backoff; drop the deactivated naval id and let YearPredictionMSD resolve its active version. Add a Modal CPU entrypoint (the quality suite is CPU-only) since Modal's datacenter network to OpenML is reliable. Result: 7 UCI datasets (+ california from the local baseline) are all statistically tied-or-better than NGBoost, closing the overlap-quality gate. Co-authored-by: Cursor <cursoragent@cursor.com>
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Two post-pivot hardening commits.
1. Reclaim entropy left by the unified-trainer port (
66d64ec)Evidence-driven simplification (proved against the consumer graph, no
observable behavior change):
DistributionalGBDT._compute_gradients+ theNaturalBoostoverride(0 callers; the trainer computes gradients via
DistributionObjective, andthe natural/ordinary switch is the
_use_natural_gradientflag)._predict_rawforwarding wrapper._as_1dhelper into onevalidate_1din_validation.py.Net -36 lines, 3 fewer concepts. 102 distributional/formula/survival/
persistence/integration tests pass.
2. Robust quality-suite fetch + closed quality gate (
2d9d44b)OpenML's name->id endpoint 503s frequently, which was skipping most UCI
datasets. Fetch by numeric
data_idfirst (falls back to name, withretries), drop the deactivated
navalid, resolveYearPredictionMSDbyactive version, and add a Modal CPU entrypoint (
::quality).Modal result — OpenBoost vs NGBoost, 20 paired splits, shared 500-tree budget
(NLL, negative delta = OpenBoost better):
Statistically tied-or-better on all 8 (significant wins on kin8nm, protein,
california; no significant loss). Closes acceptance dimension 1 (overlap not
worse than NGBoost). naval/power/year_msd dropped out during an OpenML outage;
they refill on a healthy rerun.
Test plan
ruff check src/openboost/ tests/ benchmarks/Made with Cursor