output_transform
“ behoben. Diese einfache Lösung verbessert die Gesamtleistung von Chronos erheblich. Wir werden die Ergebnisse in der nächsten Überarbeitung auf ArXiv aktualisieren.pipeline.embed
zum Extrahieren von Encoder-Einbettungen aus Chronos.Chronos ist eine Familie vorab trainierter Zeitreihen-Prognosemodelle, die auf Sprachmodellarchitekturen basieren. Eine Zeitreihe wird durch Skalierung und Quantisierung in eine Folge von Token umgewandelt und anhand des Kreuzentropieverlusts wird ein Sprachmodell auf diesen Token trainiert. Nach dem Training werden probabilistische Prognosen durch die Stichprobe mehrerer zukünftiger Trajektorien im historischen Kontext erstellt. Chronos-Modelle wurden auf einem großen Korpus öffentlich verfügbarer Zeitreihendaten sowie auf synthetischen Daten trainiert, die mithilfe von Gaußschen Prozessen generiert wurden.
Einzelheiten zu Chronos-Modellen, Trainingsdaten und -verfahren sowie experimentellen Ergebnissen finden Sie im Artikel Chronos: Learning the Language of Time Series.
Abb. 1: Übersichtsdarstellung von Chronos. ( Links ) Die Eingabezeitreihe wird skaliert und quantisiert, um eine Folge von Token zu erhalten. ( Mitte ) Die Token werden in ein Sprachmodell eingespeist, das entweder ein Encoder-Decoder-Modell oder ein Nur-Decoder-Modell sein kann. Das Modell wird mithilfe des Kreuzentropieverlusts trainiert. ( Rechts ) Während der Inferenz tasten wir autoregressiv Token aus dem Modell ab und ordnen sie wieder numerischen Werten zu. Mehrere Trajektorien werden abgetastet, um eine Vorhersageverteilung zu erhalten.
Die Modelle in diesem Repository basieren auf der T5-Architektur. Der einzige Unterschied besteht in der Vokabulargröße: Chronos-T5-Modelle verwenden 4096 verschiedene Token, verglichen mit 32128 bei den ursprünglichen T5-Modellen, was zu weniger Parametern führt.
Modell | Parameter | Bezogen auf |
---|---|---|
Chronos-T5-Tiny | 8M | t5-effizient-winzig |
Chronos-T5-Mini | 20M | t5-effizienter-mini |
Chronos-T5-Klein | 46M | t5-effizient-klein |
Chronos-T5-Basis | 200M | t5-effiziente-Basis |
Chronos-t5-groß | 710M | t5-effizient-groß |
Die folgende Abbildung zeigt die bemerkenswerte Zero-Shot- Leistung von Chronos-Modellen bei 27 Datensätzen im Vergleich zu lokalen Modellen, aufgabenspezifischen Modellen und anderen vorab trainierten Modellen. Einzelheiten zum Evaluierungsaufbau und anderen Ergebnissen finden Sie im Dokument.
Abb. 2: Leistung verschiedener Modelle bei Benchmark II, bestehend aus 27 Datensätzen, die von Chronos-Modellen während des Trainings nicht gesehen wurden . Dieser Benchmark bietet Einblicke in die Zero-Shot-Leistung von Chronos-Modellen im Vergleich zu lokalen statistischen Modellen, die Parameter für jede Zeitreihe individuell anpassen, aufgabenspezifischen Modellen, die für jede Aufgabe trainiert wurden , und vorab trainierten Modellen, die für einen großen Korpus von Zeitreihen trainiert wurden. „Vorab trainierte Modelle (Sonstige)“ weist darauf hin, dass einige (oder alle) der Datensätze in Benchmark II möglicherweise im Trainingskorpus dieser Modelle enthalten waren. Die probabilistischen (WQL) und punktuellen (MASE) Prognosemetriken wurden unter Verwendung der Ergebnisse der saisonalen naiven Basislinie normalisiert und über ein geometrisches Mittel aggregiert, um die Agg zu erhalten. Relative WQL bzw. MASE.
Um eine Inferenz mit Chronos-Modellen durchzuführen, installieren Sie dieses Paket, indem Sie Folgendes ausführen:
pip install git+https://github.com/amazon-science/chronos-forecasting.git
Tipp
Die empfohlene Art der Verwendung von Chronos für Produktionsanwendungsfälle ist AutoGluon, das Funktionen zur Verknüpfung mit anderen statistischen und maschinellen Lernmodellen für Zeitreihenprognosen sowie nahtlose Bereitstellungen auf AWS mit SageMaker bietet. Schauen Sie sich das AutoGluon Chronos-Tutorial an.
Ein minimales Beispiel, das zeigt, wie man Prognosen mit Chronos-Modellen durchführt:
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 ,
)
Weitere Optionen für pipeline.predict
finden Sie unter:
print ( ChronosPipeline . predict . __doc__ )
Wir können nun die Prognose visualisieren:
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 ()
Ein minimales Beispiel, das zeigt, wie Encoder-Einbettungen aus Chronos-Modellen extrahiert werden:
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 )
In diesem Ordner finden Sie Skripte für das Vortraining, die Feinabstimmung und die Bewertung von Chronos-Modellen.
Datensätze, die im Chronos-Artikel für das Vortraining und die Auswertung verwendet werden (sowohl in der Domäne als auch im Zero-Shot), sind über die HuggingFace-Repos verfügbar: autogluon/chronos_datasets
und autogluon/chronos_datasets_extra
. Schauen Sie sich diese Repos an, um Anweisungen zum Herunterladen und Verwenden der Datensätze zu erhalten.
Wenn Sie Chronos-Modelle für Ihre Forschung nützlich finden, ziehen Sie bitte in Betracht, den zugehörigen Artikel zu zitieren:
@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}
}
Weitere Informationen finden Sie unter BEITRAGEN.
Dieses Projekt ist unter der Apache-2.0-Lizenz lizenziert.