🚀 Chronos-T5 (Small)
Chronos-T5 (Small) 是基于语言模型架构的预训练时间序列预测模型家族中的一员。它将时间序列转换为标记序列进行训练,能根据历史上下文采样多个未来轨迹以获得概率预测。该模型在大量公开时间序列数据及合成数据上进行训练,具有较高的预测能力。
🚀 快速开始
模型更新信息
- 🚀 2025年2月14日更新:Chronos-Bolt 和原始 Chronos 模型现已可在 Amazon SageMaker JumpStart 上使用!查看 教程笔记本,了解如何用几行代码部署 Chronos 端点以用于生产。
- 🚀 2024年11月27日更新:我们发布了 Chronos-Bolt⚡️ 模型,与相同大小的原始 Chronos 模型相比,它的准确性提高了(误差降低 5%),速度提高了 250 倍,内存效率提高了 20 倍。点击 此处 查看新模型。
模型概述
Chronos 是一个基于语言模型架构的预训练时间序列预测模型家族。通过缩放和量化将时间序列转换为标记序列,然后使用交叉熵损失对这些标记训练语言模型。训练完成后,根据历史上下文采样多个未来轨迹,从而获得概率预测。Chronos 模型在大量公开可用的时间序列数据以及使用高斯过程生成的合成数据上进行了训练。
如需了解 Chronos 模型、训练数据和过程以及实验结果的详细信息,请参考论文 Chronos: Learning the Language of Time Series。
图 1:Chronos 的高层描述。(左) 对输入时间序列进行缩放和量化以获得标记序列。(中) 将标记输入到语言模型中,该模型可以是编码器 - 解码器模型或仅解码器模型。使用交叉熵损失对模型进行训练。(右) 在推理过程中,我们自回归地从模型中采样标记,并将它们映射回数值。采样多个轨迹以获得预测分布。
✨ 主要特性
- 基于语言模型架构,能有效处理时间序列数据。
- 在大量公开数据及合成数据上训练,具有较好的泛化能力。
- 可通过采样多个未来轨迹获得概率预测。
🔧 技术细节
架构
本仓库中的模型基于 T5 架构。唯一的区别在于词汇表大小:Chronos-T5 模型使用 4096 个不同的标记,而原始 T5 模型使用 32128 个,这导致 Chronos-T5 模型的参数更少。
📦 安装指南
要使用 Chronos 模型进行推理,请运行以下命令安装 GitHub 配套仓库 中的包:
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-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 许可证。