TimerS1Forecaster
Timer-S1 forecaster via Hugging Face transformers.
This forecaster wraps Timer-S1 prediction models [1], [2] from Hugging Face and exposes them through the sktime forecasting interface.
The primary workflow is fit for zero-shot inference setup, which loads the model and stores history. It does not train or fine-tune model weights. Passing model_path=None initializes a Timer-S1 model from config instead of loading pretrained weights. These random weights cannot be trained through this estimator at the moment and are mainly useful for tests or local experimentation.
Schnellstart
from sktime.forecasting.timer_s1 import TimerS1Forecaster
estimator = TimerS1Forecaster(model_path='bytedance-research/Timer-S1', config=None, device_map='cpu', dtype=None, quantization_config=None, forward_kwargs=None, deterministic=False)Parameter(7)
- model_pathstr, default=”bytedance-research/Timer-S1”
Hugging Face repository identifier or local path to a Timer-S1 checkpoint. If
None, a model is created fromconfig.- configTimerS1Config or dict, optional (default=None)
Model configuration used when
model_path=None. If provided as adict, it is converted withTimerS1Config.from_dict. IfNoneandmodel_path=None, the defaultTimerS1Configis used. This path creates random weights; the estimator does not currently provide training for those weights.- device_mapstr, dict, int, or torch.device, default=”cpu”
Device placement following the
transformersdevice_mapnaming convention, for example"cpu","cuda","cuda:0", or"auto".- dtypetorch.dtype or str, optional (default=None)
Data type used for model loading, following the
transformersdtypeconvention, for exampletorch.float16,torch.bfloat16, or"auto".- quantization_configtransformers.quantizers.HfQuantizer, optional
Valid quantization configuration object compatible with
transformers.PreTrainedModel.from_pretrained[3].- forward_kwargsdict, optional (default=None)
Additional keyword arguments forwarded to
model.generate(...)duringpredictandpredict_quantiles.- deterministicbool, default=False
Whether point predictions should reset the
transformersrandom seed before generation. Currently this is applied in predict methods.
Beispiele
Simple zero-shot forecasting with the default Timer-S1 checkpoint:
>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.timer_s1 import TimerS1Forecaster
>>> y = load_airline ()
>>> # By default, loads bytedance-research/Timer-S1.
>>> forecaster = TimerS1Forecaster ()
>>> forecaster. fit (y)
>>> y_pred = forecaster. predict (fh = [1, 2, 3 ]) Reduced-memory inference for the 8-billion-parameter model:
>>> import torch
>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.timer_s1 import TimerS1Forecaster
>>> from transformers import BitsAndBytesConfig
>>> y = load_airline ()
>>> forecaster = TimerS1Forecaster (
... model_path = "bytedance-research/Timer-S1",
... forward_kwargs = { "revin": True },
... device_map = "auto",
... dtype = torch. bfloat16,
... quantization_config = BitsAndBytesConfig (load_in_8bit = True),
... )
>>> forecaster. fit (y)
>>> y_pred = forecaster. predict (fh = [1, 2, 3 ]) Loading a quantized smaller model directly:
>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.timer_s1 import TimerS1Forecaster
>>> y = load_airline ()
>>> forecaster = TimerS1Forecaster (
... model_path = "geetu040/Timer-S1-quantized-4bit",
... )
>>> forecaster. fit (y)
>>> y_pred = forecaster. predict (fh = [1, 2, 3 ]) Randomly initialized local model, useful for tests or local experimentation. This model is not trained by fit; the weights stay random and should not be used as a trained forecaster:
>>> from sktime.forecasting.timer_s1 import TimerS1Forecaster
>>> forecaster = TimerS1Forecaster (
... model_path = None,
... config = {
... "hidden_size": 16,
... "intermediate_size": 16,
... "num_attention_heads": 4,
... "num_experts": 4,
... "num_hidden_layers": 1,
... "num_mtp_tokens": 1,
... },
... deterministic = True,
... ) Quantile prediction:
>>> from sktime.datasets import load_airline
>>> from sktime.forecasting.timer_s1 import TimerS1Forecaster
>>> y = load_airline ()
>>> forecaster = TimerS1Forecaster (
... model_path = "geetu040/Timer-S1-quantized-4bit",
... )
>>> forecaster. fit (y)
>>> y_pred = forecaster. predict_quantiles (
... fh = [1, 2, 3 ],
... alpha = [0.1, 0.5, 0.9 ],
... )Referenzen
Liu, Y., Su, X., Wang, S., Zhang, H., Liu, H., Wang, Y., Ye, Z., Xiang, Y., Wang, J., and Long, M. (2026). Timer-S1: A Billion-Scale Time Series Foundation Model with Serial Scaling. arXiv. https://arxiv.org/abs/2603.04791
Timer-S1 model card: https://huggingface.co/bytedance-research/Timer-S1
Quantization docs: https://huggingface.co/docs/transformers/en/main_classes/quantization