🚀 Chronos-T5 (Tiny)
Chronosは、言語モデルアーキテクチャに基づく事前学習済み時系列予測モデルのファミリーです。時系列は、スケーリングと量子化を通じてトークンのシーケンスに変換され、言語モデルはこれらのトークンに対して交差エントロピー損失を使用して学習されます。学習後、過去のコンテキストを元に複数の未来の軌道をサンプリングすることで、確率的な予測が得られます。Chronosモデルは、公開されている大量の時系列データと、ガウス過程を使用して生成された合成データで学習されています。
🚀 2025年2月14日更新: Chronos-Boltと元のChronosモデルが、Amazon SageMaker JumpStartで利用可能になりました!チュートリアルノートブックを参照して、数行のコードでChronosエンドポイントを本番環境でデプロイする方法を学んでください。
🚀 2024年11月27日更新: 我々はChronos-Bolt⚡️モデルをリリースしました。これらのモデルは、同じサイズの元のChronosモデルよりも精度が高く(誤差が5%低い)、最大250倍高速で、メモリ効率が20倍向上しています。新しいモデルはこちらで確認できます。
Chronosモデル、学習データと手順、および実験結果の詳細については、論文Chronos: Learning the Language of Time Seriesを参照してください。
図1: Chronosの概要。(左) 入力時系列をスケーリングと量子化してトークンのシーケンスを取得する。(中央) トークンを言語モデル(エンコーダ-デコーダまたはデコーダのみのモデル)に入力する。モデルは交差エントロピー損失を使用して学習される。(右) 推論時には、モデルからトークンを自己回帰的にサンプリングし、数値にマッピングし直す。複数の軌道をサンプリングして予測分布を取得する。
🚀 クイックスタート
モデルの推論を行うには
Chronosモデルで推論を行うには、GitHubのコンパニオンリポジトリのパッケージを次のコマンドでインストールします。
pip install git+https://github.com/amazon-science/chronos-forecasting.git
推論の最小限のサンプルコード
Chronosモデルを使用して推論を行う最小限の例を次に示します。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import torch
from chronos import ChronosPipeline
pipeline = ChronosPipeline.from_pretrained(
"amazon/chronos-t5-tiny",
device_map="cuda",
torch_dtype=torch.bfloat16,
)
df = pd.read_csv("https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv")
context = torch.tensor(df["#Passengers"])
prediction_length = 12
forecast = pipeline.predict(context, prediction_length)
forecast_index = range(len(df), len(df) + prediction_length)
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は、言語モデルアーキテクチャに基づく事前学習済みの時系列予測モデルです。時系列データをトークン化し、言語モデルを学習させることで、高精度な確率的予測が可能です。
📦 インストール
Chronosモデルを使用するには、次のコマンドを実行してパッケージをインストールします。
pip install git+https://github.com/amazon-science/chronos-forecasting.git
💻 使用例
基本的な使用法
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import torch
from chronos import ChronosPipeline
pipeline = ChronosPipeline.from_pretrained(
"amazon/chronos-t5-tiny",
device_map="cuda",
torch_dtype=torch.bfloat16,
)
df = pd.read_csv("https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv")
context = torch.tensor(df["#Passengers"])
prediction_length = 12
forecast = pipeline.predict(context, prediction_length)
forecast_index = range(len(df), len(df) + prediction_length)
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モデル、学習データと手順、および実験結果の詳細については、論文Chronos: Learning the Language of Time Seriesを参照してください。
🔧 技術詳細
アーキテクチャ
このリポジトリのモデルは、T5アーキテクチャに基づいています。唯一の違いは語彙サイズです。Chronos-T5モデルは4096種類のトークンを使用しており、元のT5モデルの32128種類よりも少なく、パラメータ数も少なくなっています。
📄 ライセンス
このプロジェクトは、Apache-2.0ライセンスの下でライセンスされています。
📖 引用
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 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}
}
🔒 セキュリティ
詳細については、CONTRIBUTINGを参照してください。