Skip to content

feat: add multi-target inference#87

Open
giovp wants to merge 1 commit into
soda-inria:mainfrom
giovp:giovp/parallel-inference
Open

feat: add multi-target inference#87
giovp wants to merge 1 commit into
soda-inria:mainfrom
giovp:giovp/parallel-inference

Conversation

@giovp
Copy link
Copy Markdown

@giovp giovp commented Mar 24, 2026

I've put together this PR to support 2D y arrays in TabICLClassifier and TabICLRegressor for multi-target prediction. Each target is processed independently through the existing single-target pipeline, and results are stacked.

It is useful in some contexts where I can max out GPU memory and do predictions over multiple columns in parallel. I understand the use case might be niche and so it might not be very useful for the project repo.

Thanks again for sharing weights and code!

Support 2D y arrays in TabICLClassifier and TabICLRegressor for
multi-target prediction. Each target is processed independently
through the existing single-target pipeline and results are
stacked.

Also fix stale fitted attributes when re-fitting with a different
n_targets, and ensure cache_mode_ is always initialized.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@jonaslandsgesell
Copy link
Copy Markdown

Looks interesting!

If you are interested in building true joint multi-target regression (also for pre training) feel free to have a look into https://arxiv.org/abs/2601.05683 which describes which family of losses and architectures would be suitable.

Given the joint distribution does not factorize it should help generalization.

@JingangQu
Copy link
Copy Markdown
Collaborator

Hi @giovp,

Thanks a lot for this. You're right that the efficiency here is genuinely different from wrapping TabICLClassifier in sklearn's MultiOutputClassifier by keeping a single model resident on the GPU and reusing the same ensemble-generated X transform across all targets. That said, I'd like to keep TabICLClassifier and TabICLRegressor themselves single-target for now to easy the maintenance. But we could implement separate estimator, eg, TabICLMultiOutputClassifier / TabICLMultiOutputRegressor in its own module.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants