🚀 クロノス-T5 (Small)
クロノスは、言語モデルアーキテクチャに基づく事前学習済みの時系列予測モデル群です。時系列データをスケーリングと量子化してトークン列に変換し、クロスエントロピー損失を用いて言語モデルを学習させます。学習後は、過去のデータをもとに複数の未来の軌道をサンプリングすることで確率的な予測を行います。クロノスモデルは、公開されている大量の時系列データと、ガウス過程を用いて生成された合成データを使って学習されています。
🚀 クイックスタート
最新情報
- 🚀 2025年2月14日更新: Chronos-BoltとオリジナルのChronosモデルがAmazon SageMaker JumpStartで利用可能になりました!チュートリアルノートブックを参照して、数行のコードでChronosエンドポイントを本番環境で展開する方法を学びましょう。
- 🚀 2024年11月27日更新: Chronos-Bolt⚡️モデルをリリースしました。これは同サイズのオリジナルChronosモデルよりも精度が高く(誤差が5%低い)、最大250倍高速で、20倍メモリ効率が良いです。新しいモデルはこちらで確認できます。
詳細情報
クロノスモデル、学習データと手順、実験結果の詳細については、論文 Chronos: Learning the Language of Time Series を参照してください。
図1: クロノスの概要。(左) 入力時系列データをスケーリングと量子化してトークン列を取得します。(中央) トークンを言語モデル(エンコーダ-デコーダまたはデコーダのみのモデル)に入力し、クロスエントロピー損失を用いて学習させます。(右) 推論時には、モデルからトークンを自己回帰的にサンプリングし、数値に戻します。複数の軌道をサンプリングして予測分布を得ます。
✨ 主な機能
アーキテクチャ
このリポジトリのモデルは T5アーキテクチャ に基づいています。唯一の違いは語彙サイズです。Chronos-T5モデルは4096種類のトークンを使用しており、オリジナルのT5モデルの32128種類に比べてパラメータ数が少なくなっています。
📦 インストール
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-small",
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モデルがあなたの研究に役立った場合は、関連する論文を引用していただけると幸いです。
@article{ansari2024chronos,
title={Chronos: Learning the Language of Time Series},
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},
journal={Transactions on Machine Learning Research},
issn={2835-8856},
year={2024},
url={https://openreview.net/forum?id=gerNCVqqtR}
}
セキュリティ
詳細については CONTRIBUTING を参照してください。
📄 ライセンス
このプロジェクトはApache-2.0ライセンスの下で公開されています。