🚀 クロノスボルト⚡ (Tiny)
クロノスボルトは、ゼロショット予測に使用できる事前学習済みの時系列予測モデルのファミリーです。このモデルは、時系列データの予測において高い性能を発揮します。
🚀 クイックスタート
2025年2月14日の更新:クロノスボルトモデルがAmazon SageMaker JumpStartで利用可能になりました!チュートリアルノートブックを参照して、数行のコードでクロノスエンドポイントを本番環境で展開する方法を学びましょう。
✨ 主な機能
クロノスボルトは、T5エンコーダーデコーダーアーキテクチャに基づいており、約1000億の時系列観測値で学習されています。このモデルは、過去の時系列コンテキストを複数の観測値のパッチに分割し、それをエンコーダーに入力します。そして、デコーダーがこれらの表現を使用して、複数の未来のステップにわたる分位点予測を直接生成します。これは、直接多ステップ予測として知られる方法です。クロノスボルトモデルは、同じサイズの元のクロノスモデルよりも最大250倍高速で、20倍メモリ効率が高いです。
🔧 技術詳細
性能
下のプロットは、512の観測値のコンテキスト長と64ステップの予測期間で1024の時系列を予測する場合の、クロノスボルトと元のクロノスモデルの推論時間を比較しています。
クロノスボルトモデルは、元のクロノスモデルよりも大幅に高速で、かつ精度が高いです。下のプロットは、加重分位点損失 (WQL) と 平均絶対尺度誤差 (MASE) の観点から、クロノスボルトの確率的および点予測性能をそれぞれ報告しています。これらの指標は、27のデータセットにわたって集計されています(このベンチマークの詳細については、クロノス論文を参照してください)。注目すべきは、学習中にこれらのデータセットに事前に触れていないにもかかわらず、ゼロショットのクロノスボルトモデルが、これらのデータセットで学習された一般的に使用される統計モデルや深層学習モデル(*で強調表示)を上回っていることです。さらに、+で示される他の事前学習モデル(これらのモデルは、私たちのベンチマークの特定のデータセットで事前学習されており、完全なゼロショットではない)よりも優れた性能を発揮しています。特に、クロノスボルト (Base) は、予測精度の面で元のクロノス (Large) モデルを上回り、かつ600倍以上高速です。
クロノスボルトモデルは、以下のサイズで利用可能です。
💻 使用例
基本的な使用法
AutoGluonを使用した場合
本番環境でクロノスを使用することをおすすめする方法は、AutoGluon を通じて行うことです。AutoGluonは、クロノスモデルの簡単な微調整、共変量回帰を通じた予測への共変量の組み込み、および他の統計モデルや機械学習モデルとのアンサンブルを提供し、最大限の精度を実現します。詳細については、AutoGluonクロノスのチュートリアルを参照してください。
AutoGluonを使用してクロノスボルトでゼロショット推論を実行する最小限の例を示します。
まず、必要な依存関係をインストールします。
pip install autogluon
次に、クロノスボルトモデルで予測を行います。
from autogluon.timeseries import TimeSeriesPredictor, TimeSeriesDataFrame
df = TimeSeriesDataFrame("https://autogluon.s3.amazonaws.com/datasets/timeseries/m4_hourly/train.csv")
predictor = TimeSeriesPredictor(prediction_length=48).fit(
df,
hyperparameters={
"Chronos": {"model_path": "amazon/chronos-bolt-tiny"},
},
)
predictions = predictor.predict(df)
SageMakerへのChronos-Boltエンドポイントのデプロイ
SageMaker JumpStartを使用すると、数行のコードでクロノスエンドポイントを本番環境で簡単にデプロイできます。クロノスボルトエンドポイントは、CPUとGPUの両方のインスタンスにデプロイでき、共変量を使用した予測もサポートしています。詳細については、この例のノートブックを参照してください。
SageMakerにクロノスボルト (Base) エンドポイントをデプロイする最小限の例を示します。
まず、SageMaker SDKを更新して、すべての最新モデルが利用可能なことを確認します。
pip install -U sagemaker
次に、SageMakerに推論エンドポイントをデプロイします。
from sagemaker.jumpstart.model import JumpStartModel
model = JumpStartModel(
model_id="autogluon-forecasting-chronos-bolt-base",
instance_type="ml.c5.2xlarge",
)
predictor = model.deploy()
これで、JSON形式で時系列データをエンドポイントに送信できます。
import pandas as pd
df = pd.read_csv("https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv")
payload = {
"inputs": [
{"target": df["#Passengers"].tolist()}
],
"parameters": {
"prediction_length": 12,
}
}
forecast = predictor.predict(payload)["predictions"]
推論ライブラリを使用した場合
あるいは、GitHubのコンパニオンリポジトリにあるパッケージをインストールすることもできます。これは研究目的で設計されており、クロノスモデルへの最小限のインターフェースを提供します。以下のコマンドを実行してライブラリをインストールします。
pip install chronos-forecasting
クロノスボルトモデルを使用して推論を実行する最小限の例を示します。
import pandas as pd
import torch
from chronos import BaseChronosPipeline
pipeline = BaseChronosPipeline.from_pretrained(
"amazon/chronos-bolt-tiny",
device_map="cuda",
torch_dtype=torch.bfloat16,
)
df = pd.read_csv(
"https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv"
)
forecast = pipeline.predict(
context=torch.tensor(df["#Passengers"]), prediction_length=12
)
📄 ライセンス
このプロジェクトは、Apache-2.0ライセンスの下でライセンスされています。
引用
もしあなたがクロノスまたはクロノスボルトモデルをあなたの研究に役立てた場合、関連する論文を引用することを検討してください。
@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}
}