Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ Pass any Hugging Face `repo_id` (or local checkpoint path) supported by the unde
| <img src="https://timecopilot.s3.amazonaws.com/public/data/images/logos/ibm.png" width="28" alt="IBM"> | [PatchTST-FM](https://arxiv.org/abs/2602.06909) | ✓ | ✓ | ✓ | ✓ | | | CC-BY-NC-SA-4.0 |
| <img src="https://timecopilot.s3.amazonaws.com/public/data/images/logos/thuml.png" width="28" alt="THUML"> | [Sundial](https://arxiv.org/abs/2502.00816) | ✓ | ✓ | ✓ | ✓ | | | Apache-2.0 |
| <img src="https://timecopilot.s3.amazonaws.com/public/data/images/logos/tfc.png" width="28" alt="The Forecasting Company"> | [T0](https://huggingface.co/theforecastingcompany/t0-alpha) | ✓ | ✓ | ✓ | ✓ | ✓ | | Apache-2.0† |
| <img src="https://timecopilot.s3.amazonaws.com/public/data/images/logos/huawei-noah.png" width="28" alt="Huawei Paris Noah's Ark Lab"> | [Tabby](https://arxiv.org/abs/2609.13956) | ✓ | ✓ | ✓ | ✓ | | | CC-BY-NC-4.0 |
| <img src="https://timecopilot.s3.amazonaws.com/public/data/images/logos/priorlabs.png" width="28" alt="Prior Labs"> | [TabPFN](https://arxiv.org/abs/2501.02945) | ✓ | ✓ | ✓ | ✓ | | | TabPFN NC‡ |
| <img src="https://timecopilot.s3.amazonaws.com/public/data/images/logos/tafsut.png" width="28" alt="Tafsut"> | [Tafsut](https://github.com/Tafsut-FM/tafsut) | ✓ | ✓ | ✓ | ✓ | | | MIT |
| <img src="https://timecopilot.s3.amazonaws.com/public/data/images/logos/nx-ai.png" width="28" alt="NX-AI"> | [TiRex](https://arxiv.org/abs/2505.23719) | ✓ | ✓ | ✓ | ✓ | ✓¶ | | Community / Apache-2.0 |
Expand All @@ -103,7 +104,7 @@ Licenses verified against Hugging Face model cards. Check the model card for you
<details><summary><strong>What this means for production</strong></summary>

- **Apache-2.0**, **MIT**: generally fine for commercial production (retain notices; T0† is also gated on Hugging Face: accept terms and set `HF_TOKEN`).
- **CC-BY-NC-4.0** (Moirai), **CC-BY-NC-SA-4.0** (PatchTST-FM r1 checkpoints): **non-commercial** only; not for revenue-generating production without a separate agreement from the rights holder.
- **CC-BY-NC-4.0** (Moirai, Tabby), **CC-BY-NC-SA-4.0** (PatchTST-FM r1 checkpoints): **non-commercial** only; not for revenue-generating production without a separate agreement from the rights holder.
- **Apache-2.0 / OpenMDW 1.0** (Granite PatchTST-FM r2): commercial-friendly; choose either license per the [model card](https://huggingface.co/ibm-granite/granite-timeseries-patchtst-fm-r2).
- **TimesFM 3.0**: weights for `google/timesfm-3.0-pytorch` are [non-commercial](https://huggingface.co/google/timesfm-3.0-pytorch/blob/main/LICENSE); TimesFM 1.0–2.5 checkpoints remain Apache-2.0.
- **TabPFN NC**‡: TabPFN-2.6+ and TabPFN-3 weights are non-commercial; production requires a [Prior Labs commercial license or API](https://docs.priorlabs.ai/models). First LOCAL use requires accepting terms at [ux.priorlabs.ai](https://ux.priorlabs.ai) (`TABPFN_TOKEN`). TabPFN-3 is LOCAL-only today.
Expand All @@ -126,6 +127,7 @@ Some models require specific Python versions (e.g. FlowState 3.11-3.13, TabPFN &
- **PatchTST-FM:** `ibm-research/patchtst-fm-r1`, `ibm-granite/granite-timeseries-patchtst-fm-r1`, `ibm-granite/granite-timeseries-patchtst-fm-r2` (r2 requires `granite-tsfm>=0.3.9`)
- **Sundial:** `thuml/sundial-base-128m`
- **T0:** `theforecastingcompany/t0-alpha`, `theforecastingcompany/t0-beta`, `theforecastingcompany/t0-gamma` (requires `tfc-t0[torch]>=0.6.0`)
- **Tabby:** `paris-noah/Tabby` (requires `trust_remote_code`; CC-BY-NC-4.0)
- **TabPFN:** default `tabpfn-v2-regressor-2noar4o2.ckpt`; TabPFN-3 via `model_path="tabpfn-v3-regressor-v3_20260506_timeseries.ckpt"` (LOCAL, `TABPFN_TOKEN`); or CLIENT mode with a Prior Labs API token
- **Tafsut:** `Tafsut-FM/tafsut-univariate-base`
- **TiRex:** `NX-AI/TiRex`, `NX-AI/TiRex-2`
Expand All @@ -145,6 +147,7 @@ Recent additions and checkpoints (newest first). See the [changelog](https://git

| When | What | Checkpoint / detail |
|------|------|---------------------|
| Oct 2026 | [**Tabby**](https://huggingface.co/paris-noah/Tabby) | `paris-noah/Tabby` — 99 native quantiles; `trust_remote_code`; CC-BY-NC-4.0 |
| Oct 2026 | [**TimeH2O**](https://huggingface.co/h2oai/timeh2o-v1) | `h2oai/timeh2o-v1`, `h2oai/timeh2o-v1-tiny` — requires `h2ofm>=0.43.0` (Python 3.12+); native `X_df`; GIFT-Eval and fev-bench CI ([v0.1.16](https://github.com/TimeCopilot/foundationforecast/blob/main/docs/changelogs/v0.1.16.md)) |
| Oct 2026 | [**Timestral**](https://huggingface.co/collections/mistralai/timestral) | `mistralai/Timestral-{5M,28M,123M,209M}` — requires `timecopilot-timestral>=0.1.0`; native `X_df`; GIFT-Eval and fev-bench CI ([v0.1.15](https://github.com/TimeCopilot/foundationforecast/blob/main/docs/changelogs/v0.1.15.md)) |
| Oct 2026 | [**T0 gamma**](https://huggingface.co/theforecastingcompany/t0-gamma) | `theforecastingcompany/t0-gamma` — requires `tfc-t0[torch]>=0.6.0`; GIFT-Eval and fev-bench CI ([v0.1.14](https://github.com/TimeCopilot/foundationforecast/blob/main/docs/changelogs/v0.1.14.md)) |
Expand Down
11 changes: 11 additions & 0 deletions docs/api/models/foundation/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,17 @@
- plot
- supports_native_futr_exog

::: foundationforecast.models.tabby.Tabby
options:
show_root_heading: true
show_root_full_path: false
members:
- forecast
- cross_validation
- detect_anomalies
- plot
- supports_native_futr_exog

::: foundationforecast.models.tabpfn.TabPFN
options:
show_root_heading: true
Expand Down
1 change: 1 addition & 0 deletions docs/examples/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ For model API details, see the [Model Hub](../model-hub.md).
| [Chronos Family](chronos-family.ipynb) | Forecast with Chronos 1.x and 2.x checkpoints | Python 3.10+ |
| [TimesFM Family](timesfm-family.ipynb) | Forecast with TimesFM 1.0, 2.0, 2.5, and 3.0 with prediction intervals | Python 3.10+ |
| [TiRex Family](tirex-family.ipynb) | Forecast with TiRex 1.0 and 2.0 | Python 3.11+ |
| [Tabby Family](tabby-family.ipynb) | Cross-validate Tabby (`paris-noah/Tabby`) with its published GIFT-Eval inference settings | Python 3.10+ |
| [TabPFN Family](tabpfn-family.ipynb) | Forecast with TabPFN-2 and TabPFN-3 (LOCAL) | Python 3.10–3.12; `TABPFN_TOKEN` |
| [Toto Family](toto-family.ipynb) | Forecast with Toto 1.0 and 2.0 | Python 3.10+ |
| [PatchTST-FM Family](patchtst-fm-family.ipynb) | Forecast with IBM Research and Granite PatchTST-FM r1/r2 | Python 3.11–3.13; GPU recommended |
Expand Down
871 changes: 871 additions & 0 deletions docs/examples/tabby-family.ipynb

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions docs/exogenous-variables.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ FoundationForecast uses **`supports_native_futr_exog()`** on the forecaster inst
| **Moirai** | any | No | Use `exog_strategy=False` in multi-model runs |
| **PatchTST-FM** | any | No | Use `exog_strategy=False` in multi-model runs |
| **Sundial** | any | No | Use `exog_strategy=False` in multi-model runs |
| **Tabby** | any | No | Use `exog_strategy=False` in multi-model runs |
| **TabPFN** | any | No | Use `exog_strategy=False` in multi-model runs |
| **T0** | `theforecastingcompany/t0-alpha`, `theforecastingcompany/t0-beta`, `theforecastingcompany/t0-gamma` | Yes | `future_covariates` in `tfc-t0` |
| **Tafsut** | any | No | Use `exog_strategy=False` in multi-model runs |
Expand Down
2 changes: 1 addition & 1 deletion docs/forecasting-parameters.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ request the median.

### Interpolation on fixed-knot models

Some models (TiRex, TimesFM, TabPFN, FlowState, Tafsut, Toto 2.0, …) predict a
Some models (TiRex, TimesFM, TabPFN, Tabby, FlowState, Tafsut, Toto 2.0, …) predict a
fixed set of native quantile **knots** internally. When you request levels or
quantiles that do not exactly match those knots, the library linearly
interpolates between adjacent knots.
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Some models are gated by Python version:

| Model | Python requirement |
|-------|-------------------|
| Chronos, Moirai, TimesFM, Toto, TimeGPT, Sundial, Tafsut | 3.10+ |
| Chronos, Moirai, TimesFM, Toto, TimeGPT, Sundial, Tafsut, Tabby | 3.10+ |
| TiRex / TiRex-2 | 3.11+ |
| T0, FlowState, PatchTST-FM | 3.11 – 3.13 |
| TabPFN | 3.10 – 3.12 |
Expand Down
2 changes: 1 addition & 1 deletion docs/getting-started/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
## What you can do

- Run multiple pretrained foundation models with one interface via [`FoundationForecast`](../api/forecaster.md).
- Compare Chronos, Moirai, TimesFM, Toto, TiRex, TimeGPT, FlowState, Tafsut, and more side by side.
- Compare Chronos, Moirai, TimesFM, Toto, TiRex, TimeGPT, FlowState, Tafsut, Tabby, and more side by side.
- Finetune supported models (Chronos 2, TimeGPT) on your own data.
- Detect anomalies using cross-validated z-score tests on any forecaster.

Expand Down
1 change: 1 addition & 0 deletions docs/model-hub.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ Below is the list of available foundation models. Click a model name for API det
- [PatchTST-FM](api/models/foundation/models.md#foundationforecast.models.patchtst_fm.PatchTSTFM) ([arXiv:2602.06909](https://arxiv.org/abs/2602.06909)) — Python 3.11–3.13; [`ibm-research/patchtst-fm-r1`](https://huggingface.co/ibm-research/patchtst-fm-r1), [`ibm-granite/granite-timeseries-patchtst-fm-r1`](https://huggingface.co/ibm-granite/granite-timeseries-patchtst-fm-r1) (CC-BY-NC-SA-4.0), and [`ibm-granite/granite-timeseries-patchtst-fm-r2`](https://huggingface.co/ibm-granite/granite-timeseries-patchtst-fm-r2) (Apache-2.0 / OpenMDW 1.0; requires `granite-tsfm>=0.3.9`)
- [Sundial](api/models/foundation/models.md#foundationforecast.models.sundial.Sundial) ([arXiv:2502.00816](https://arxiv.org/pdf/2502.00816))
- [T0](api/models/foundation/models.md#foundationforecast.models.t0.T0) ([t0-alpha](https://huggingface.co/theforecastingcompany/t0-alpha), [t0-beta](https://huggingface.co/theforecastingcompany/t0-beta), [t0-gamma](https://huggingface.co/theforecastingcompany/t0-gamma); requires `tfc-t0[torch]>=0.6.0`) — Python 3.11–3.13
- [Tabby](api/models/foundation/models.md#foundationforecast.models.tabby.Tabby) ([arXiv:2609.13956](https://arxiv.org/abs/2609.13956), [`paris-noah/Tabby`](https://huggingface.co/paris-noah/Tabby)) — 99 native quantiles (0.01–0.99); `trust_remote_code`; [CC BY-NC 4.0](https://creativecommons.org/licenses/by-nc/4.0/)
- [TabPFN](api/models/foundation/models.md#foundationforecast.models.tabpfn.TabPFN) ([arXiv:2501.02945](https://arxiv.org/abs/2501.02945)) — Python 3.10–3.12; TabPFN-2 (default) and TabPFN-3 via `model_path`; TabPFN-3 is LOCAL-only; weights use the [TabPFN NC license](https://ux.priorlabs.ai) (`TABPFN_TOKEN`)
- [Tafsut](api/models/foundation/models.md#foundationforecast.models.tafsut.Tafsut) ([GitHub](https://github.com/Tafsut-FM/tafsut))
- [TiRex / TiRex-2](api/models/foundation/models.md#foundationforecast.models.tirex.TiRex) ([arXiv:2505.23719](https://arxiv.org/abs/2505.23719), [arXiv:2607.01204](https://arxiv.org/abs/2607.01204)) — Python 3.11+
Expand Down
3 changes: 3 additions & 0 deletions experiments/gift-eval/configs/ci_subset.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -50,3 +50,6 @@ jobs:
- model_key: h2oai--timeh2o-v1
dataset_name: m4_weekly
term: short
- model_key: paris-noah--Tabby
dataset_name: m4_weekly
term: short
10 changes: 10 additions & 0 deletions experiments/gift-eval/configs/models.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,16 @@ models:
clip_nonnegative: true
snap_integer: true

paris-noah--Tabby:
class: foundationforecast.models.tabby.Tabby
reference_slug: Tabby
kwargs:
repo_id: paris-noah/Tabby
alias: Tabby
context_length: 8096
batch_size: 64
precision: bf16

thuml--sundial-base-128m:
class: foundationforecast.models.sundial.Sundial
reference_slug: sundial_base_128m
Expand Down
11 changes: 11 additions & 0 deletions experiments/gift-eval/tests/test_models_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,3 +67,14 @@ def test_model_python_defaults_unless_overridden():

assert model_python("h2oai--timeh2o-v1", default="3.11") == "3.12"
assert model_python("mistralai--Timestral-209M", default="3.11") == "3.11"


def test_tabby_registered_with_leaderboard_settings():
models = load_models_config()
entry = models["paris-noah--Tabby"]
assert entry["class"] == "foundationforecast.models.tabby.Tabby"
assert entry["reference_slug"] == "Tabby"
kwargs = entry["kwargs"]
assert kwargs["repo_id"] == "paris-noah/Tabby"
assert kwargs["context_length"] == 8096
assert kwargs["precision"] == "bf16"
2 changes: 2 additions & 0 deletions foundationforecast/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
Chronos,
ChronosFinetuningConfig,
Moirai,
Tabby,
TimeGPT,
TimeGPTFinetuningConfig,
TimesFM,
Expand All @@ -19,6 +20,7 @@
"Chronos",
"ChronosFinetuningConfig",
"Moirai",
"Tabby",
"TimeGPT",
"TimeGPTFinetuningConfig",
"TimesFM",
Expand Down
2 changes: 2 additions & 0 deletions foundationforecast/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from .chronos import Chronos, ChronosFinetuningConfig
from .moirai import Moirai
from .tabby import Tabby
from .tafsut import Tafsut
from .timegpt import TimeGPT, TimeGPTFinetuningConfig
from .timesfm import TimesFM
Expand All @@ -12,6 +13,7 @@
"Chronos",
"ChronosFinetuningConfig",
"Moirai",
"Tabby",
"Tafsut",
"TimeGPT",
"TimeGPTFinetuningConfig",
Expand Down
Loading
Loading