Skip to content

Which models can run on your data

Before writing a config, coremat recommend lists the models that can run on your dataset and hardware, fastest first.

It answers two questions and no others. What runs follows from hard limits only: a GPU for the Torch MLPs, GPU memory for TabPFN v3, TabPFN's documented limit of 500 features, and more rows than features for OLS (otherwise its solution is not unique). How fast is the measured time of one fit and one prediction at your row count. It does not say which model will predict best on your data — that is what the run itself answers, and why COREMat trains several models side by side.

CLI usage

coremat recommend --n-samples 5000 --n-features 40 --gpu-vram-gb 8

Output (shortened):

Models that can run here (fastest first):
  (time: one fit + predict with default parameters, speed measurement of 2026-09; an order, not a forecast of a run's duration)
  1. lin__ols                            — runs here; ~0.0012 s per fit + predict at ~3200 rows (cpu, measured)
  2. lin__ridge                          — runs here; ~0.0012 s per fit + predict at ~3200 rows (cpu, measured)
  ...
  33. ens__xgb__absolute                 — runs here; time not measured

Use with: models=ModelsConfig(selected=["lin__ols", "lin__ridge", ...])

Parameters

Flag Type Default Description
--n-samples int required Number of rows in your dataset
--n-features int required Number of input features
--gpu-vram-gb float CPU only Available GPU VRAM in GB

Python API

from coremat import recommend, RecommendResult

result: RecommendResult = recommend(n_samples=5000, n_features=40, gpu_vram_gb=8.0)

print(result.model_ids)      # the models that can run, fastest first
print(result.rationale)      # dict[model_id, estimated time and device]

The model_ids list drops directly into ModelsConfig:

from coremat import ModelsConfig

models_cfg = ModelsConfig(selected=result.model_ids[:3])

Where the times come from

From a speed measurement in September 2026: every zoo model, 32 to 4096 rows, CPU and CUDA, the median over seeds at the fastest thread count. Between the measured row counts the time is interpolated on a log scale, beyond them the last segment is extended. With a GPU, the faster of CPU and CUDA counts — what device: auto would pick. The times are read at the size of the innermost fit (cv_shrinkage, 0.64 of the rows at the 5×5 default).

Read them as an order, not a forecast. A run costs many fits — folds, trials, rounds — with searched parameters, plus the explanations, which call predict many times (TabPFN on a CPU falls further behind there). Models added after the measurement have no time and are listed last.

When nothing can run

If no model passes the limits, recommend warns with the reason for each model and returns an empty list — it does not offer models that cannot run.