output_transform
のビン インデックスの off-by-one エラーを修正しました。この簡単な修正により、Chronos の全体的なパフォーマンスが大幅に向上します。 ArXiv の次のリビジョンで結果を更新します。pipeline.embed
を備えた v1.1.0 がリリースされました。Chronos は、言語モデル アーキテクチャに基づいた事前トレーニングされた時系列予測モデルのファミリーです。時系列はスケーリングと量子化によって一連のトークンに変換され、言語モデルはクロス エントロピー損失を使用してこれらのトークンに対してトレーニングされます。トレーニングが完了すると、歴史的コンテキストを考慮して複数の将来の軌跡をサンプリングすることで確率的予測が得られます。クロノス モデルは、ガウス プロセスを使用して生成された合成データだけでなく、公的に利用可能な時系列データの大規模なコーパスでトレーニングされています。
Chronos モデル、トレーニング データと手順、実験結果の詳細については、論文「Chronos: Learning the Language of Time Series」を参照してください。
図 1: クロノスの概要図。 (左) 入力時系列はスケーリングおよび量子化されて、一連のトークンが取得されます。 (中央) トークンは、エンコーダー/デコーダーまたはデコーダーのみのモデルのいずれかである言語モデルに供給されます。モデルはクロスエントロピー損失を使用してトレーニングされます。 (右) 推論中に、モデルから自己回帰的にトークンをサンプリングし、それらを数値にマッピングし直します。予測分布を取得するために複数の軌跡がサンプリングされます。
このリポジトリのモデルは、T5 アーキテクチャに基づいています。唯一の違いは語彙サイズです。Chronos-T5 モデルでは 4096 個の異なるトークンが使用されていますが、元の T5 モデルでは 32128 個であり、その結果パラメーターが少なくなります。
モデル | パラメータ | に基づく |
---|---|---|
chronos-t5-tiny | 8M | t5-効率的-小さな |
クロノス-T5-ミニ | 20M | t5-効率的-ミニ |
chronos-t5-small | 46M | t5-効率的-小さい |
クロノス-t5-ベース | 200M | t5-効率的なベース |
クロノス-t5-ラージ | 710M | t5-効率的-大規模 |
次の図は、ローカル モデル、タスク固有のモデル、およびその他の事前トレーニング済みモデルと比較した、27 のデータセット上の Chronos モデルの驚くべきゼロショットパフォーマンスを示しています。評価設定およびその他の結果の詳細については、論文を参照してください。
図 2: Benchmark II でのさまざまなモデルのパフォーマンス。トレーニング中に Chronos モデルでは見られなかった27 個のデータセットで構成されます。このベンチマークは、各時系列に個別にパラメーターを適合させるローカル統計モデル、各タスクでトレーニングされたタスク固有のモデル、および大規模な時系列コーパスでトレーニングされた事前トレーニング モデルに対する Chronos モデルのゼロショット パフォーマンスに関する洞察を提供します。事前トレーニング済みモデル (その他) は、ベンチマーク II のデータセットの一部 (またはすべて) がこれらのモデルのトレーニング コーパスに含まれている可能性があることを示します。確率的 (WQL) およびポイント (MASE) 予測メトリクスは、Seasonal Naive ベースラインのスコアを使用して正規化され、幾何平均によって集計されて Agg が得られました。それぞれ相対 WQL と MASE。
Chronos モデルを使用して推論を実行するには、次を実行してこのパッケージをインストールします。
pip install git+https://github.com/amazon-science/chronos-forecasting.git
ヒント
実稼働ユースケースで Chronos を使用する推奨される方法は、AutoGluon を使用することです。AutoGluon は、時系列予測のための他の統計および機械学習モデルとのアンサンブル機能や、SageMaker を使用した AWS へのシームレスなデプロイメントを特徴としています。 AutoGluon Chronos チュートリアルを確認してください。
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 ,
)
pipeline.predict
のその他のオプションは、次のコマンドで見つけることができます。
print ( ChronosPipeline . predict . __doc__ )
これで、予測を視覚化できるようになりました。
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 ()
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 )
Chronos モデルの事前トレーニング、微調整、評価用のスクリプトは、このフォルダーにあります。
Chronos の論文で事前トレーニングと評価 (ドメイン内とゼロショットの両方) に使用されているデータセットは、HuggingFace リポジトリから入手できます: autogluon/chronos_datasets
およびautogluon/chronos_datasets_extra
。データセットをダウンロードして使用する方法については、これらのリポジトリを確認してください。
Chronos モデルが研究に役立つと思われる場合は、関連する論文を引用することを検討してください。
@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}
}
詳細については、「貢献」を参照してください。
このプロジェクトは、Apache-2.0 ライセンスに基づいてライセンスされています。