- ReasoningModel path
- Trainer path
op.reasoning.fit() is the fastest path to a model that produces both predictions and feature-level explanations. The same model-family × hyperparameter × metric search runs.model.explain(), model.get_global_drivers(), or model.scenario().How the Trainer works
Trainer is an orchestrator that coordinates a search over model families × hyperparameters × metrics. When you call run():
- All candidate model families are tuned in parallel, not one at a time.
- Each family’s hyperparameters are searched with the strategy you select.
- When you pass multiple metrics, the search explores the weighting between them rather than treating one as primary, so you don’t have to guess the right trade-off up front.
- Parallelism and per-trial timeouts are managed server-side; there are no SDK-level knobs.
op.reasoning.fit() runs this same search and returns a ReasoningModel.
Building a Dataset for training
Useop.LocalDataset.upload() to connect datasets that live locally on your machine to our platform. This method it sends your file to OuterProduct via a presigned URL and returns a server-backed Dataset the trainer reads at training time.
Each column carries a
Column schema. The schema is inferred automatically by default; override it via the columns= argument when needed. The target column is always specified at fit time via the task config (e.g. op.Binclass(label_column=...)), not on the dataset itself.Default training call
The smallest valid call accepts a dataset and the target column name:Choosing model types
Passmodel_types as a list of string identifiers resolved server-side. If you omit it, OuterProduct selects a curated set based on your dataset. All listed families are tuned together in the same search.
Metrics
Pass a singleop.Metric() or a list. With a single metric, training optimizes it directly. With multiple metrics, the search explores all weightings between them and returns the best model found across the Pareto frontier that trades off the listed metrics.
Search strategy
Trainer.run() accepts a strategy string. Use "random" for fast (parallel) exploration or "optuna" for adaptive tuning (in serial).
n_trials: per-family trial budget.grid_size: resolution of the metric-weighting sweep when you pass multiple metrics.
op.reasoning.fit(), control search depth via n_hyperopt_steps:
Jobs API
run() and fit() submit work and return a job handle immediately; neither call blocks. Retrieve the trained model when you need it.
.wait() is the blocking convenience used throughout these examples. Use .status() or .results() to poll or fetch the outcome without blocking your process.Distillation
Pass ateacher to train a student model that mimics an external model’s predictions. The teacher can be a trained Model or a Predictor wrapping an HTTP endpoint.
op.reasoning.fit():