🚀 クロノス-T5 (Large)
Chronosは、言語モデルアーキテクチャに基づく事前学習済みの時系列予測モデルのファミリーです。時系列データは、スケーリングと量子化を通じてトークン列に変換され、それらのトークンを用いて言語モデルが交差エントロピー損失を使って学習されます。学習後、過去のコンテキストを元に複数の未来軌道をサンプリングすることで確率的な予測が得られます。Chronosモデルは、公開されている大量の時系列データコーパスと、ガウス過程を用いて生成された合成データを使って学習されています。
Chronosモデル、学習データと手順、および実験結果の詳細については、論文 Chronos: Learning the Language of Time Series を参照してください。
図1: Chronosの概要図。(左) 入力時系列データをスケーリングと量子化してトークン列を得る。(中央) トークンをエンコーダ-デコーダまたはデコーダのみの言語モデルに入力する。モデルは交差エントロピー損失を使って学習される。(右) 推論時には、モデルからトークンを自己回帰的にサンプリングし、数値にマッピングし直す。複数の軌道をサンプリングして予測分布を得る。
🚀 クイックスタート
このセクションでは、Chronos-T5 (Large) モデルの基本的な使い方を説明します。
✨ 主な機能
- 言語モデルアーキテクチャに基づく事前学習済みの時系列予測モデル。
- スケーリングと量子化を通じて時系列データをトークン列に変換し、交差エントロピー損失を使って学習。
- 過去のコンテキストを元に複数の未来軌道をサンプリングすることで確率的な予測が可能。
📦 インストール
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-large",
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()
📚 ドキュメント
アーキテクチャ
このリポジトリのモデルは、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 を参照してください。