amazon-science/chronos-forecasting · 上手攻略
- 仓库:amazon-science/chronos-forecasting
- 链接:https://github.com/amazon-science/chronos-forecasting
- 分类:ai · 时间序列预测
- 作者:Tom
- 更新:2026-07-15
是什么
Chronos 是亚马逊科学团队开源的时间序列预测预训练模型家族,通过将时间序列 token 化后借助语言模型架构(类 T5)进行训练,实现零样本预测。整个家族经历三代演进:
- Chronos(初代):基于语言模型架构,将时间序列通过缩放+量化转为 token 序列,用交叉熵损失训练;支持概率预测(采样多条轨迹)。上下文最长 512 步,预测长度最多 64 步。
- Chronos-Bolt:Patch-based 变体,将历史上下文分 patch 输入 encoder,decoder 直接生成多步分位数预测;比初代快达 250 倍、内存效率提升 20 倍,但仅支持单变量预测。
- Chronos-2(最新,2025年10月发布):120M 参数 encoder-only 模型;支持单变量、多变量、以及带外生变量的协变量感知预测;上下文扩展至 8192 步、预测长度达 1024 步;引入 group attention 机制实现跨序列联合学习;在 fev-bench、GIFT-Eval、Chronos Benchmark II 上均为零样本 SOTA,且对包含外生特征的任务提升最显著。
核心定位:不需要任何本地数据标注,扔进去历史序列就能预测未来——真正开箱即用的 Time Series Foundation Model。
解决什么问题
传统时间序列预测需要针对每个业务场景收集数据、训练专属模型,工程成本极高。Chronos-2 的零样本能力让这一流程完全反转:模型在数十亿时间点的大规模预训练数据(含真实+合成)上已经学会了时间序列的通用模式,直接推理即可,省去: - 数据标注和清洗 - 模型选型和调参 - 单独部署每个场景的专用模型
对于以下场景尤为有价值: - 新业务线冷启动,没有足够历史数据训练专用模型 - 需要快速评估大量 SKU/指标的时间序列走势 - 多产品线、多区域业务需要统一预测基座
快速安装
pip install "chronos-forecasting>=2.0"
建议同时安装可选依赖(用于画图和数据格式):
pip install "chronos-forecasting[extras]>=2.2" matplotlib
模型从 HuggingFace 自动下载(建议配置 HF_TOKEN 以提升下载速度):
export HF_TOKEN=your_hf_token_here
核心用法
基础单变量预测(pandas API)
import pandas as pd
from chronos import Chronos2Pipeline
# 加载模型,GPU 推荐;CPU 用 device_map="cpu"
pipeline = Chronos2Pipeline.from_pretrained(
"amazon/chronos-2",
device_map="cuda" # 或 "cpu"
)
# 读取历史数据(长格式 pandas DataFrame)
context_df = pd.read_parquet(
"https://autogluon.s3.amazonaws.com/datasets/timeseries/electricity_price/train.parquet"
)
# 生成预测
pred_df = pipeline.predict_df(
context_df,
prediction_length=24, # 预测步数
quantile_levels=[0.1, 0.5, 0.9], # 分位数
id_column="id", # 时间序列 ID 列
timestamp_column="timestamp", # 时间戳列
target="target", # 目标值列
)
返回的 DataFrame 包含每条序列未来每个时间步的预测值和分位数区间(0.1、0.5、0.9 列),可直接用于可视化或接入业务系统。
带协变量的预测(Chronos-2 独有能力)
# 加载测试集,分离未来已知协变量
test_df = pd.read_parquet(
"https://autogluon.s3.amazonaws.com/datasets/timeseries/electricity_price/test.parquet"
)
future_df = test_df.drop(columns="target")
# 传入 future_df,模型会同时考虑历史和未来协变量
pred_df = pipeline.predict_df(
context_df,
future_df=future_df,
prediction_length=24,
quantile_levels=[0.1, 0.5, 0.9],
id_column="id",
timestamp_column="timestamp",
target="target",
)
SageMaker 生产部署(推荐生产环境使用)
pip install "autogluon.cloud>=0.5.0"
from autogluon.cloud import TimeSeriesFoundationModel
model = TimeSeriesFoundationModel(model_name="chronos-2")
# 批量预测
forecast_df = model.predict(df, prediction_length=24)
# 部署实时端点
endpoint = model.deploy(instance_type="ml.g5.xlarge")
forecast_df = endpoint.predict(df, prediction_length=24)
模型列表与选型参考
| 模型 | 参数量 | 特点 | 适用场景 |
|---|---|---|---|
amazon/chronos-2 |
120M | 全功能、支持协变量、跨序列学习 | 通用首选 |
autogluon/chronos-2-small |
28M | 小型版,资源受限场景 | 边缘部署 |
amazon/chronos-bolt-base |
205M | 极快(250x),仅单变量 | 低延迟单变量 |
amazon/chronos-t5-large |
710M | 最大 T5 版本 | 高精度需求 |
amazon/chronos-bolt-tiny |
9M | 最小模型 | 极致轻量 |
注:
chronos-2通过 AWS AutoGluon-Cloud 部署时支持 Serverless 推理,适合不对齐的资源规划场景(2026年6月新功能)。
典型适用场景
- 多业务线批量预测:几十上百条时间序列,无需逐条调参,直接批量跑零样本预测。
- 新业务冷启动:历史数据不足(少于几百个点)时,零样本模型往往比数据稀缺的专用模型更准。
- 零售/电商需求预测:结合促销、节假日等已知未来协变量(如价格、活动标签),输出概率区间供供应链决策。
- 能源/IoT 时序监控:异常检测基准——预测区间外的数据点即为潜在异常。
- 金融波动率预测:分位数输出直接给出置信区间,适合风险评估。
坑与注意
-
数据格式严格:输入必须是长格式 pandas DataFrame,包含
{id_column}(序列标识)、{timestamp_column}(datetime)、{target}(数值)三列;不满足格式会直接报错。建议先做df.dtypes检查列类型。 -
GPU 显存:120M 的 chronos-2 在 FP16 下约需 2-3 GB 显存;CPU 推理速度约比 GPU 慢 10-20 倍,高频实时场景建议上 GPU。
-
上下文长度并非越大越好:Chronos-2 最大 8192 步,但实践中超过 2048 步后精度收益递减,显存消耗却线性增长;建议根据数据量选择合适的截断窗口。
-
协变量类型区分: - Past-only covariates(历史已知,如已发生的节假日):放在
context_df额外列中 - Future-known covariates(未来已知,如已排期的促销活动):放在future_df中 混用会导致预测偏差,文档建议仔细阅读 AutoGluon 协变量教程。 -
概率输出 ≠ 点预测:
pipeline.predict_df()返回的是分位数,不是均值;需要点预测时取quantile_levels=[0.5](中位数)或对多次采样取平均。 -
环境依赖:HuggingFace Hub 下载模型需要网络畅通;生产环境建议提前
from_pretrained(cache=True)缓存模型。 -
数据频率不匹配:Chronos 在预训练时覆盖了多种频率(分钟/小时/日/周/月),但模型对频率的感知依赖时间戳列是否规范;非标准时间戳(如 Unix 整数时间)需先转为 datetime。
与同类对比
| 方案 | 零样本 | 多变量 | 协变量 | 概率预测 | 速度 | 生产就绪度 |
|---|---|---|---|---|---|---|
| Chronos-2 | ✅ | ✅ | ✅ 原生 | ✅ | 中(GPU) | 高(SageMaker/AutoGluon) |
| Chronos-Bolt | ✅ | ❌ | ❌(需外挂) | ✅ | 极快 | 中 |
| Chronos(初代) | ✅ | ❌ | ❌ | ✅ | 慢 | 中 |
| Darts(N-BEATS等) | ❌ 需训练 | 部分 | 需外挂 | ✅ | 取决于模型 | 高 |
| GluonTS | ❌ 需训练 | ✅ | ✅ | ✅ | 取决于模型 | 高 |
| TinyCharts(微软) | ✅ | ❌ | ❌ | ✅ | 快 | 低 |
| Lag-Llama | ✅ 单变量 | ❌ | ❌ | ✅ | 中 | 低 |
核心差异:Chronos-2 是目前功能最全面的时间序列零样本基础模型,尤其在协变量处理和跨序列学习上有代际优势;但追求极致速度的纯单变量场景可以用 Chronos-Bolt 替代。
一句话推荐结论
如果你需要快速对任意时间序列做高精度预测、尤其是涉及多变量或未来已知协变量的场景,Chronos-2 是目前最值得优先尝试的零样本基础模型——pip 安装、三行代码出结果,生产可直接上 SageMaker 或 AutoGluon-Cloud。
来源
- GitHub README:https://github.com/amazon-science/chronos-forecasting
- HuggingFace 模型页:https://huggingface.co/amazon/chronos-2
- Chronos-2 Quickstart Notebook:https://github.com/amazon-science/chronos-forecasting/blob/main/notebooks/chronos-2-quickstart.ipynb
- 技术报告 arXiv:https://arxiv.org/abs/2510.15821
- AutoGluon-Cloud 部署指南:https://auto.gluon.ai/cloud/stable/tutorials/foundation-model-timeseries.html