datasets:
- autogluon/chronos_datasets
- Salesforce/lotsa_data
pipeline_tag: time-series-forecasting
library_name: tirex-2
license: apache-2.0
TiRex-2
This repository provides the pretrained TiRex-2 model and inference code for zero-shot multivariate forecasting with past and future-known covariates, as introduced in TiRex-2: Generalizing TiRex to Multivariate Data and Streaming.
TiRex-2 is a pretrained time series foundation model that forecasts one or many target variates directly from their history, optionally conditioned on past and future-known covariates. A single checkpoint serves both univariate and multivariate forecasting and operates in a streaming fashion as new observations arrive — all zero-shot, with no task-specific training or fine-tuning.
Key facts
Zero-shot multivariate forecasting: TiRex-2 forecasts multiple target variates out of the box, without training or fine-tuning on you data.
Past and future-known covariates: TiRex-2 natively conditions on past covariates and future-known covariates, such as calendar features, holidays, promotions, or scheduled interventions.
Small active footprint: TiRex-2 activates 38.4M parameters in univariate mode and an additional 44.1M parameters for multivariate forecasting.
Getting started
📖 For a detailed guide — including pip installation, a Google Colab demo, covariate examples, and benchmark reproduction — see our GitHub repository.
The environment is managed by Pixi. Run the following to install it on your machine
curl -fsSL https://pixi.sh/install.sh | sh
git clone https://github.com/NX-AI/tirex-2 && cd tirex-2
# activate the cpu-only env
eval "$(pixi shell-hook -e example)" # to execute on GPUs use `example-cu128` or `example-cu126`
Minimal usage predicting a simple sine wave:
import matplotlib.pyplot as plt, torch
from tirex2 import TimeseriesType, load_model
model = load_model("NX-AI/TiRex-2", device="cpu") # use `device="cuda"` if cuda is available
y = torch.sin(torch.arange(160).float() / 8)
ts = TimeseriesType(target=y[:128].unsqueeze(0), past_covariates=None, future_covariates=None)
forecast = model.forecast([ts], prediction_length=32, output_type="numpy")[0][0]
We provide predefined Pixi tasks showcasing examplary forecasts. These run in the CPU-only example environment by default:
pixi run minimalruns above code and creates a plot of the forecast.pixi run comparisonshowcases the additional benefit of future known covariates in forecasting a target.
For a more interactive demo of TiRex-2, we also provide a quick-start notebook.
Cite
If you use TiRex-2 in your research, please cite our work:
@misc{podest2026tirex2generalizingtirexmultivariate,
title={TiRex-2: Generalizing TiRex to Multivariate Data and Streaming},
author={Patrick Podest and Marco Pichler and Elias Bürger and Levente Zólyomi and Bernhard Voggenberger and Wilhelm Berghammer and Daniel Klotz and Sebastian Böck and Günter Klambauer and Sepp Hochreiter},
year={2026},
eprint={2607.01204},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2607.01204},
}
Other versions:
Alongside this pretrained checkpoint, we release decontaminated versions to enable fair zero-shot evaluation on specific benchmarks by excluding their data from pretraining:
- TiRex-2-g: excludes any overlap with the GiftEval datasets (pretrain and evaluation) from pretraining.
- TiRex-2-gp: includes the GiftEval-Pretrain collection in the pretraining corpus (for comparison against TiRex-2-g).
- TiRex-2-f: excludes all fev-bench eval datasets from pretraining, using the same approach as for GiftEval.