output_transform
. Ce correctif simple améliore considérablement les performances globales de Chronos. Nous mettrons à jour les résultats dans la prochaine révision sur ArXiv.pipeline.embed
pour extraire les intégrations d'encodeurs de Chronos.Chronos est une famille de modèles de prévision de séries chronologiques pré-entraînés basés sur des architectures de modèles de langage. Une série temporelle est transformée en une séquence de jetons via la mise à l'échelle et la quantification, et un modèle de langage est formé sur ces jetons à l'aide de la perte d'entropie croisée. Une fois entraînées, les prévisions probabilistes sont obtenues en échantillonnant plusieurs trajectoires futures compte tenu du contexte historique. Les modèles Chronos ont été formés sur un vaste corpus de données de séries chronologiques accessibles au public, ainsi que sur des données synthétiques générées à l'aide de processus gaussiens.
Pour plus de détails sur les modèles Chronos, les données et procédures de formation, ainsi que les résultats expérimentaux, veuillez vous référer à l'article Chronos : Apprendre le langage des séries temporelles.
Fig. 1 : Représentation de haut niveau de Chronos. ( Gauche ) La série temporelle d'entrée est mise à l'échelle et quantifiée pour obtenir une séquence de jetons. ( Centre ) Les jetons sont introduits dans un modèle de langage qui peut être soit un modèle d'encodeur-décodeur, soit un modèle de décodeur uniquement. Le modèle est entraîné en utilisant la perte d'entropie croisée. ( À droite ) Lors de l'inférence, nous échantillonnons de manière autorégressive les jetons du modèle et les mappons à des valeurs numériques. Plusieurs trajectoires sont échantillonnées pour obtenir une distribution prédictive.
Les modèles de ce référentiel sont basés sur l'architecture T5. La seule différence réside dans la taille du vocabulaire : les modèles Chronos-T5 utilisent 4 096 jetons différents, contre 32 128 pour les modèles T5 d'origine, ce qui entraîne moins de paramètres.
Modèle | Paramètres | Basé sur |
---|---|---|
chronos-t5-tiny | 8M | t5-efficace-minuscule |
chronos-t5-mini | 20M | t5-efficace-mini |
chronos-t5-petit | 46M | t5-efficace-petit |
chronos-t5-base | 200M | base-efficace t5 |
chronos-t5-large | 710M | t5-efficace-grand |
La figure suivante présente les performances remarquables des modèles Chronos sur 27 ensembles de données par rapport à des modèles locaux, des modèles spécifiques à des tâches et d'autres modèles pré-entraînés. Pour plus de détails sur la configuration de l’évaluation et d’autres résultats, veuillez vous référer au document.
Fig. 2 : Performances de différents modèles sur Benchmark II, comprenant 27 ensembles de données non vus par les modèles Chronos lors de l'entraînement. Ce benchmark fournit un aperçu des performances zéro des modèles Chronos par rapport à des modèles statistiques locaux, qui ajustent les paramètres individuellement pour chaque série temporelle, des modèles spécifiques à une tâche formés sur chaque tâche et des modèles pré-entraînés formés sur un large corpus de séries chronologiques. Modèles pré-entraînés (Autre) indique que certains (ou tous) des ensembles de données de Benchmark II peuvent avoir été dans le corpus de formation de ces modèles. Les mesures de prévision probabilistes (WQL) et ponctuelles (MASE) ont été normalisées à l'aide des scores de la ligne de base saisonnière naïve et agrégées via une moyenne géométrique pour obtenir l'Agg. WQL relatif et MASE, respectivement.
Pour effectuer une inférence avec des modèles Chronos, installez ce package en exécutant :
pip install git+https://github.com/amazon-science/chronos-forecasting.git
Conseil
La manière recommandée d'utiliser Chronos pour les cas d'utilisation en production consiste à utiliser AutoGluon, qui s'intègre à d'autres modèles statistiques et d'apprentissage automatique pour la prévision de séries chronologiques ainsi que des déploiements transparents sur AWS avec SageMaker ?. Consultez le tutoriel AutoGluon Chronos.
Un exemple minimal montrant comment effectuer des prévisions à l'aide des modèles Chronos :
import pandas as pd # requires: pip install pandas
import torch
from chronos import ChronosPipeline
pipeline = ChronosPipeline . from_pretrained (
"amazon/chronos-t5-small" ,
device_map = "cuda" , # use "cpu" for CPU inference and "mps" for Apple Silicon
torch_dtype = torch . bfloat16 ,
)
df = pd . read_csv ( "https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv" )
# context must be either a 1D tensor, a list of 1D tensors,
# or a left-padded 2D tensor with batch as the first dimension
# forecast shape: [num_series, num_samples, prediction_length]
forecast = pipeline . predict (
context = torch . tensor ( df [ "#Passengers" ]),
prediction_length = 12 ,
num_samples = 20 ,
)
Plus d'options pour pipeline.predict
peuvent être trouvées avec :
print ( ChronosPipeline . predict . __doc__ )
Nous pouvons maintenant visualiser la prévision :
import matplotlib . pyplot as plt # requires: pip install matplotlib
import numpy as np
forecast_index = range ( len ( df ), len ( df ) + 12 )
low , median , high = np . quantile ( forecast [ 0 ]. numpy (), [ 0.1 , 0.5 , 0.9 ], axis = 0 )
plt . figure ( figsize = ( 8 , 4 ))
plt . plot ( df [ "#Passengers" ], color = "royalblue" , label = "historical data" )
plt . plot ( forecast_index , median , color = "tomato" , label = "median forecast" )
plt . fill_between ( forecast_index , low , high , color = "tomato" , alpha = 0.3 , label = "80% prediction interval" )
plt . legend ()
plt . grid ()
plt . show ()
Un exemple minimal montrant comment extraire les intégrations d'encodeurs des modèles Chronos :
import pandas as pd
import torch
from chronos import ChronosPipeline
pipeline = ChronosPipeline . from_pretrained (
"amazon/chronos-t5-small" ,
device_map = "cuda" ,
torch_dtype = torch . bfloat16 ,
)
df = pd . read_csv ( "https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv" )
# context must be either a 1D tensor, a list of 1D tensors,
# or a left-padded 2D tensor with batch as the first dimension
context = torch . tensor ( df [ "#Passengers" ])
embeddings , tokenizer_state = pipeline . embed ( context )
Des scripts pour le pré-entraînement, le réglage fin et l'évaluation des modèles Chronos peuvent être trouvés dans ce dossier.
Les ensembles de données utilisés dans l'article Chronos pour le pré-entraînement et l'évaluation (à la fois dans le domaine et zéro-shot) sont disponibles via les dépôts HuggingFace : autogluon/chronos_datasets
et autogluon/chronos_datasets_extra
. Consultez ces dépôts pour obtenir des instructions sur la façon de télécharger et d’utiliser les ensembles de données.
Si vous trouvez les modèles Chronos utiles pour votre recherche, pensez à citer l'article associé :
@article{ansari2024chronos,
author = {Ansari, Abdul Fatir and Stella, Lorenzo and Turkmen, Caner and Zhang, Xiyuan and Mercado, Pedro and Shen, Huibin and Shchur, Oleksandr and Rangapuram, Syama Syndar and Pineda Arango, Sebastian and Kapoor, Shubham and Zschiegner, Jasper and Maddix, Danielle C. and Wang, Hao and Mahoney, Michael W. and Torkkola, Kari and Gordon Wilson, Andrew and Bohlke-Schneider, Michael and Wang, Yuyang},
title = {Chronos: Learning the Language of Time Series},
journal = {arXiv preprint arXiv:2403.07815},
year = {2024}
}
Voir CONTRIBUTION pour plus d'informations.
Ce projet est sous licence Apache-2.0.