Back to models
Forecaster

HFTransformersForecaster

Forecaster that uses a huggingface model for forecasting.

Quickstart

python
from sktime.forecasting.hf_transformers import HFTransformersForecaster

estimator = HFTransformersForecaster(model_path: str=None, fit_strategy='minimal', validation_split=0.2, config=None, training_args=None, compute_metrics=None, deterministic=False, callbacks=None, peft_config=None)

Parameters(9)

model_pathstr or PreTrainedModel

Path to the huggingface model to use for forecasting. Currently, Informer, Autoformer, and TimeSeriesTransformer are supported. This can be one of the following: - A string specifying the Hugging Face model name or path

(e.g., “huggingface/autoformer-tourism-monthly”).

  • An instance of a PreTrainedModel, allowing manual initialization and configuration.

fit_strategystr, default=”minimal”

Strategy to use for fitting (fine-tuning) the model. This can be one of the following:

  • “minimal”: Fine-tunes only a small subset of the model parameters, allowing for quick adaptation with limited computational resources.

  • “full”: Fine-tunes all model parameters, which may result in better performance but requires more computational power and time.

  • “peft”: Applies Parameter-Efficient Fine-Tuning (PEFT) techniques to adapt the model with fewer trainable parameters, saving computational resources.

    Note: If the ‘peft’ package is not available, a ModuleNotFoundError will be raised, indicating that the ‘peft’ package is required. Please install it using pip install peft to use this fit strategy.

validation_splitfloat, default=0.2
Fraction of the data to use for validation
configdict, default={}
Configuration to use for the model. See the transformers documentation for details.
training_argsdict, default={}
Training arguments to use for the model. See transformers.TrainingArguments for details. Note that the output_dir argument is required.
compute_metricslist, default=None
List of metrics to compute during training. See transformers.Trainer for details.
deterministicbool, default=False
Whether the predictions should be deterministic or not.
callbackslist, default=[]
List of callbacks to use during training. See transformers.Trainer
peft_configpeft.PeftConfig, default=None
Configuration for Parameter-Efficient Fine-Tuning. When fit_strategy is set to “peft”, this will be used to set up PEFT parameters for the model. See the peft documentation for details.

Examples

Using a Pretrained Model from Hugging Face
>>> from sktime.forecasting.hf_transformers import HFTransformersForecaster
>>> from sktime.datasets import load_airline
>>> y = load_airline ()
>>> forecaster = HFTransformersForecaster (
... model_path = "huggingface/autoformer-tourism-monthly",
... training_args = {
... "num_train_epochs": 20,
... "output_dir": "test_output",
... "per_device_train_batch_size": 32,
... },
... config = {
... "lags_sequence": [1, 2, 3 ],
... "context_length": 2,
... "prediction_length": 4,
... "use_cpu": True,
... "label_length": 2,
... },
... )
>>> forecaster. fit (y)
>>> fh = [1, 2, 3 ]
>>> y_pred = forecaster. predict (fh) Using PEFT for Fine-Tuning
>>> from sktime.forecasting.hf_transformers import HFTransformersForecaster
>>> from sktime.datasets import load_airline
>>> from peft import LoraConfig
>>> y = load_airline ()
>>> forecaster = HFTransformersForecaster (
... model_path = "huggingface/autoformer-tourism-monthly",
... fit_strategy = "peft",
... training_args = {
... "num_train_epochs": 20,
... "output_dir": "test_output",
... "per_device_train_batch_size": 32,
... },
... config = {
... "lags_sequence": [1, 2, 3 ],
... "context_length": 2,
... "prediction_length": 4,
... "use_cpu": True,
... "label_length": 2,
... },
... peft_config = LoraConfig (
... r = 8,
... lora_alpha = 32,
... target_modules = ["q_proj", "v_proj" ],
... lora_dropout = 0.01,
... )
... )
>>> forecaster. fit (y)
>>> fh = [1, 2, 3 ]
>>> y_pred = forecaster. predict (fh) Using an Initialized Model
>>> from sktime.datasets import load_airline
>>> from transformers import AutoformerConfig, AutoformerForPrediction
>>> from sktime.forecasting.hf_transformers import HFTransformersForecaster
>>> y = load_airline ()
>>> # Define model configuration
>>> config = AutoformerConfig (
... num_dynamic_real_features = 0,
... num_static_real_features = 0,
... num_static_categorical_features = 0,
... num_time_features = 0,
... context_length = 32,
... prediction_length = 8,
... lags_sequence = [1, 2, 3 ],
... )
>>> # Initialize the model
>>> model = AutoformerForPrediction (config)
>>> # Initialize the forecaster with the model
>>> forecaster = HFTransformersForecaster (
... model_path = model,
... fit_strategy = "minimal",
... training_args = {
... "num_train_epochs": 10,
... "output_dir": "output",
... "per_device_train_batch_size": 4
... },
... )
>>> forecaster. fit (y)
>>> fh = [1, 2, 3 ]
>>> y_pred = forecaster. predict (fh)