Kumo and TabICLv2¶
Kumo and TabICLv2 are separate optional algorithms in Compete mode.
Both use NVIDIA's structured-data-models (SDM)
backend and support binary classification, multiclass classification, and regression.
Kumo supports small, medium, and large tabular models, with small as the default.
The relational model is not included.
Installation¶
Requires Python 3.11+. Install CPU or CUDA PyTorch as described in Installation, then install MLJAR from source:
python -m pip install "mljar-supervised[tfm] @ git+https://github.com/mljar/mljar-supervised.git"
python -m pip install "git+https://github.com/NVIDIA/structured-data-models.git@b97cb914e2bdcf0d165fc2c83b5fdf795aad6a69"
[kumo] and [tabiclv2] are aliases for the same supporting dependencies.
[all] includes them too. The separate pinned SDM installation is required:
these extras do not install SDM's placeholder PyPI release. SDM is an evolving
backend; this integration checks the tested version instead of accepting an
untested Git revision. Standard MLJAR installation does not install these models.
The commands above target the source branch; a published release must contain
this integration before its extras are usable.
Usage¶
from supervised import AutoML
model = AutoML(
mode="Compete",
algorithms=["Kumo", "TabICLv2"],
custom_params={
"kumo": {"device": "auto", "size": "medium", "max_context_size": 4096},
"tabiclv2": {"device": "auto", "max_context_size": 4096},
},
)
model.fit(X_train, y_train)
When the tested backend and CUDA are available, automatic Compete selection
includes both algorithms. CPU use requires explicit algorithm selection.
device="auto" uses CUDA when available, otherwise CPU; explicit cpu, cuda,
and cuda:<index> are supported. This first version does not fine-tune weights.
What gets tuned¶
num_estimators controls the number of transformed context views combined into
one prediction. It does not train that many independent neural networks.
max_context_size caps how many labeled training rows each candidate retains.
Kumo's size selects a pretrained architecture; TabICLv2 has a fixed architecture.
The following lists are MLJAR's search space. SDM preprocessing stays at its backend defaults; normalization, feature/class permutations, and softmax temperature are not separate tuning parameters in this integration.
| Parameter | Allowed search values | Default |
|---|---|---|
num_estimators |
[4, 8, 16] |
8 |
max_context_size |
[1024, 4096, 8192] |
4096 |
size (Kumo only) |
["small", "medium", "large"] |
"small" |
Parameters supplied in custom_params are fixed values and are removed from
search variation. For example:
custom_params = {
"kumo": {"size": "large", "num_estimators": 8, "device": "cuda"},
"tabiclv2": {"num_estimators": 8, "device": "cuda"},
}
Here context size can still vary. To use all registered search values, omit those
fixed overrides. Resource settings (device, prediction batch size, and memory
budgets) are controls, not accuracy-tuning parameters.
Input and resource limits¶
Kumo tuning can try all three sizes. Fix custom_params={"kumo": {"size": "large"}}
to use only large (likewise for medium or small). Larger models require more memory;
the resource checks account for both checkpoint size and larger working buffers.
Candidates that exceed the budget fail without silently changing size.
Fixed overrides may use any positive integer context/ensemble size, subject to
memory admission. predict_batch_size defaults to 128. Estimators execute
sequentially and use uncached context inference to bound memory. There are no
learning-rate, depth, epoch, or ordinary early-stopping settings.
Only a reproducible sample of training-fold rows becomes labeled context; each class is represented. Preprocessing uses that context only. Reports record the original training rows, retained context rows, checkpoint identity, and resource estimates. A million-row input does not mean a million-row context.
Numerical, categorical, missing, and unseen categorical values are supported. Numerical missing values use context means with missing indicators; constant columns are handled by SDM; entirely constant contexts are rejected. Sparse inputs and sample weights are rejected. Weighted fairness/boost-on-errors candidates skip these algorithms with a warning. Kumo rejects more than 500 effective columns, including generated indicators and category-count features, rather than silently truncating them.
Memory admission defaults to 60% of available RAM and 70% of free VRAM. Fixed
memory_limit_gb, gpu_memory_limit_gb, memory_fraction, and
gpu_memory_fraction overrides are available. Estimates are conservative
heuristics, not guaranteed maximum dataset sizes. Reduce context or query batch
size if a candidate exceeds its budget. Prediction time grows with query rows
and context size. Deadlines are checked between query/estimator batches;
an individual kernel or download cannot be interrupted by these checks.
Classification returns probabilities in MLJAR class order. Regression returns the mean of the predicted quantiles, following NVIDIA's benchmark adapter. Sampled permutation importance is supported; SHAP is disabled.
Downloads, licenses, and portable models¶
Installing packages does not download model weights. First fit downloads only the required size/task checkpoint from Hugging Face, pinned to these revisions:
| Model | Repository | Revision | Weight license |
|---|---|---|---|
| Kumo | nvidia/Kumo-Tabular | 3c3e10bbdb590ace29e7026847f92db3c603096d |
OpenMDW-1.1 |
| TabICLv2 | jingang/TabICL | 4dcd344ece2c00be9e831fdd35bed57b5ad83e19 |
BSD-3-Clause |
Both licenses permit commercial use subject to their terms. SDM code has its own
Apache/BSD notices. Shared weights, model cards, and license notices are copied
into sdm_weights in the results directory, with separate Kumo size subdirectories.
Retain this directory when moving or sharing results. Redistribution of these weights requires retaining the notices.
Saved learners contain selected training rows and labels as context. Your
data is processed locally and is not uploaded to Hugging Face. Reload uses the
saved weights without network access. Set local_files_only=True to require
cached checkpoints for initial fitting; cache_dir selects the HF cache.
Pre-download by running a small fit for each task/model with internet access.
Synthetic examples¶
The runnable sklearn example
uses make_classification for binary/multiclass tasks and make_friedman1 for
regression. It adds categorical values and missing data, holds out a test set,
and verifies saved-model reload. Run it from a repository checkout:
python examples/scripts/sdm_synthetic.py --device cuda --rows 1000
# CPU:
python examples/scripts/sdm_synthetic.py --device cpu --rows 300
The example compares both algorithms on held-out synthetic data, verifies reload, and writes a JSON summary. These checks validate integration, not TabArena rank.