Conversation
|
Job PR-5834-192bb26 is done. |
c32816c to
4ae1f85
Compare
4ae1f85 to
b0461f8
Compare
Addresses autogluon#4505 complaint that AG NNs lag LAMA NNs and force a second stack: vendor LightAutoML DenseLight architecture in-tree with an AutoGluon training loop (no lightautoml dependency). Opt-in via hyperparameters key DENSELIGHT / extra [denselight].
Declare valid_raw_types via auxiliary params, document key and class-key usage, and sync memory-estimate defaults with LAMA hidden sizes.
CI test_tabular failed because DenseLightModel was registered in ag_model_registry but missing from EXPECTED_MODEL_* fixtures in test_model_registry.py.
- Rename LAMA references to LightAutoML (codespell false positive LAMA→LLAMA) - Regenerate uv.lock so denselight optional extra is locked
LAMA is LightAutoML, not Llama. Restore LAMA wording and add `lama` to codespell ignore lists so CI does not rewrite it to LLAMA.
|
Rebased onto current The only real conflict was
|
b0461f8 to
bf171c2
Compare
|
Will plan to take a look at this at some point, but probably not until we are close to the next release. Thanks for the contrib! |
|
FYI: we investigated DenseLight on the TabArena side before, and it did not look very promising; see autogluon/tabarena#101 for the thread. RealMLP and TabM seem to be more competitive choices. Maybe you can pick up this issue and see whether DenseLight can be improved on TabArena first, before integrating it into AutoGluon. It could be that the code and implementation I used back then were sub-optimal. |
|
Hi @LennartPurucker, this is really informative. I will have a look at your issue and test DenseLight against TabArena first and we will see. |
|
Hi @LennartPurucker — we followed up on this. We re-ran TabArena-Lite with a vendored LAMA DenseLight (CatEmbedder + SWA trainer, LAMA Lite Elo:
Your earlier read still holds: even with the real LAMA stack, DenseLight is not competitive as a TabArena method — well below TabM / RealMLP, and also below AutoGluon’s existing TorchMLP / FastAI on this Lite board. #4505 was a different question (Kaggle: LAMA NNs helping a blend vs AG’s NNs). This PR is still opt-in and not in default presets. @Innixma @LennartPurucker — given that, is it still worth keeping DenseLight as a useful extra NN in AutoGluon for ensemble diversity, or should we close / hold this until there’s evidence it actually helps |
With TabArena and your local results, you can simulate this as well and see whether blending would ever pick it up. @Innixma might be able to share more information on this, or Claude can find it, hopefully. On a side note, IMO, we could always add it to TabArena, which would then exist as a tested and benchmarked model that someone could easily pull into AutoGluon as a custom model via the hyperparameters. I usually add models to TabArena regardless of final performance. But IMO, it would be important if we could pip install the standalone model for this. I got the impression that its usage would otherwise always be a bit obscure. Do you know if this would be possible? |
Issue #, if available: Addresses #4505 (NN half)
Description
Kaggle feedback (tilii7 / #4505): AutoGluon NNs are diverse vs trees but not competitive enough with LAMA-based NNs, so users run LightAutoML beside AG. This PR adds LAMA’s strong tabular NN (DenseLight) natively so that path lives in one package.
Architecture is from LightAutoML (Apache-2.0); training, preprocess, bagging, and device handling are AutoGluon-native. There is no
lightautomldependency.Follows the custom model tutorial contract pointed at in #4505 (
AbstractModel/AbstractTorchModel,_fit,_preprocess, defaults,valid_raw_types), then registers in-tree asDENSELIGHT.Implementation notes
DENSELIGHT(DenseLightModel→AbstractTorchModel).concat_input(input concatenated into later hidden blocks), LAMA-leaning defaults (hidden_size=[512, 750], quantile numericals, early stopping).valid_raw_typesfor bool/int/float/category (tutorial-style).time_limit, CPU/GPU, save/load via torch base.pip install "autogluon.tabular[denselight]"(torch only).FitHelper.verify_model+ auxiliary-params check.Usage
Out of scope (follow-ups)