Releases: amazon-science/chronos-forecasting
2.0.0
🚀 Introducing Chronos-2: From univariate to universal forecasting
This release adds support for Chronos-2. It is a 120M-parameter time series foundation model that offers zero-shot support for univariate, multivariate, and covariate-informed forecasting tasks. Chronos-2 delivers state-of-the-art zero-shot performance across multiple benchmarks (including fev-bench and GIFT-Eval), with the largest improvements observed on tasks that include exogenous features. In head-to-head comparisons, it outperforms its predecessor, Chronos-Bolt, over 90% of times.
📌 Get started with Chronos-2: Chronos-2 Quick Start
Chronos-2 offers significant improvements in capabilities and can handle diverse forecasting scenarios not supported by earlier models.
| Capability | Chronos | Chronos-Bolt | Chronos-2 |
|---|---|---|---|
| Univariate Forecasting | ✅ | ✅ | ✅ |
| Cross-learning across items | ❌ | ❌ | ✅ |
| Multivariate Forecasting | ❌ | ❌ | ✅ |
| Past-only (real/categorical) covariates | ❌ | ❌ | ✅ |
| Known future (real/categorical) covariates | 🧩 | 🧩 | ✅ |
| Fine-tuning support | ✅ | ✅ | ✅ |
| Max. Context Length | 512 | 2048 | 8192 |
🧩 Chronos/Chronos-Bolt do not natively support future covariates, but they can be combined with external covariate regressors (see AutoGluon tutorial). This only models per-timestep effects, not effects across time. In contrast, Chronos-2 supports all covariate types natively.

Figure 1: The complete Chronos-2 pipeline. Input time series (targets and covariates) are first normalized using a robust scaling scheme, after which a time index and mask meta features are added. The resulting sequences are split into non-overlapping patches and mapped to high-dimensional embeddings via a residual network. The core transformer stack operates on these patch embeddings and produces multi-patch quantile outputs corresponding to the future patches masked out in the input. Each transformer block alternates between time and group attention layers: the time attention layer aggregates information across patches within a single time series, while the group attention layer aggregates information across all series within a group at each patch index. The figure illustrates two multivariate time series with one known covariate each, with corresponding groups highlighted in blue and red. This example is for illustration purposes only; Chronos-2 supports arbitrary numbers of targets and optional covariates.

Figure 2: Results of experiments on the fev-bench time series benchmark. The average win rate and skill score are computed with respect to the scaled quantile loss (SQL) metric, which evaluates probabilistic forecasting performance. Higher values are better for both. Chronos-2 outperforms all existing pretrained models by a substantial margin on this comprehensive benchmark, which includes univariate, multivariate, and covariate-informed forecasting tasks.

Figure 3: Chronos-2 results in univariate mode and the corresponding gains from in-context learning (ICL), shown as stacked bars on the covariates subset of fev-bench. ICL delivers large gains on tasks with covariates, demonstrating Chronos-2’s ability to effectively use covariates through ICL. Besides Chronos-2, only TabPFN-TS and COSMIC support covariates, and Chronos-2 outperforms all baselines (including TabPFN-TS and COSMIC) by a wide margin.

Figure 4: Results on the GIFT-Eval time series benchmark. The average win rate and skill score with respect to the (a) probabilistic and (b) point forecasting metrics. Higher values are better for both win rate and skill score. Chronos-2 outperforms the previously best-performing models, TimesFM-2.5 and TiRex.
What's Changed
- Add Chronos-2 by @abdulfatir in #319
- Remove ALWAYS_DOWNLOAD from CF and S3 by @abdulfatir in #322
- Use dynamic versioning and bump version by @abdulfatir in #320
- Add example notebook for Chronos-2 by @shchur in #325
- Update README for Chronos-2 by @abdulfatir in #324
- Bump version to 2.0.0 by @abdulfatir in #323
Full Changelog: v1.5.3...v2.0.0
2.0.0rc1
Chronos-2 Pre-release
What's Changed
- Add Chronos-2 by @abdulfatir in #319
- Remove ALWAYS_DOWNLOAD from CF and S3 by @abdulfatir in #322
- Use dynamic versioning and bump version by @abdulfatir in #320
Full Changelog: v1.5.3...v2.0.0rc1
1.5.3
What's Changed
- Fix issue with new caching mechanism in transformers and bump versions by @abdulfatir in #313
Full Changelog: v1.5.2...v1.5.3
1.5.2
v1.5.2 relaxes the upper bound on accelerate to <2.
What's Changed
- Bump
accelerate>=0.32,<2by @Tyler-Hardin in #298 - Bump version to 1.5.2 by @abdulfatir in #299
New Contributors
- @Tyler-Hardin made their first contribution in #298
Full Changelog: v1.5.1...v1.5.2
1.5.1
🐛 Fixed an issue with forecasting constant series for Chronos-Bolt. See #294.
What's Changed
- Bump transformers to >=4.48 by @lostella in #280
- Add example notebook for SageMaker JumpStart by @shchur in #281
- Fix date in readme by @lostella in #284
- Fix scaling that affects constant series by @abdulfatir in #294
- Fix type-checking issues by @lostella in #295
Full Changelog: v1.5.0...v1.5.1
1.5.0
What's Changed
- Fix training install instructions by @abdulfatir in #236
- remove eval-pr-comment workflow by @canerturkmen in #239
- Add pipeline.embed support for Chronos-Bolt by @abdulfatir in #247
- Update issue templates by @lostella in #269
- Relax torch compatibility to <3 by @lostella in #277
- Bump package version to 1.5.0 by @lostella in #278
Full Changelog: v1.4.1...v1.5.0
1.4.1
1.4.0
Key Changes
predictandpredict_quantileswill return predictions oncpuinfloat32.
What's Changed
- Remove reference to MPS by @abdulfatir in #216
- Run type checks on Python 3.11 only by @lostella in #217
- Clean up evaluation script by @abdulfatir in #218
- Return predictions in fp32 on CPU by @abdulfatir in #219
- Fix README example to use
predict_quantilesby @abdulfatir in #220 - Add workflow to run evaluation on a subset of datasets by @abdulfatir in #222
- Fix auto eval workflow by @abdulfatir in #224
- Use absolute link to images in the README by @abdulfatir in #223
- Bump version to 1.4.0 by @abdulfatir in #225
Full Changelog: v1.3.0...v1.4.0
1.3.0
Highlight
Chronos-Bolt⚡: a 250x faster, more accurate Chronos model
Chronos-Bolt is our latest foundation model for forecasting. It is based on the T5 encoder-decoder architecture and has been trained on nearly 100 billion time series observations. It chunks the historical time series context into patches of multiple observations, which are then input into the encoder. The decoder then uses these representations to directly generate quantile forecasts across multiple future steps—a method known as direct multi-step forecasting. Chronos-Bolt models are up to 250 times faster and 20 times more memory-efficient than the original Chronos models of the same size.
The following plot compares the inference time of Chronos-Bolt against the original Chronos models for forecasting 1024 time series with a context length of 512 observations and a prediction horizon of 64 steps.
Chronos-Bolt models are not only significantly faster but also more accurate than the original Chronos models. The following plot reports the probabilistic and point forecasting performance of Chronos-Bolt in terms of the Weighted Quantile Loss (WQL) and the Mean Absolute Scaled Error (MASE), respectively, aggregated over 27 datasets (see the Chronos paper for details on this benchmark). Remarkably, despite having no prior exposure to these datasets during training, the zero-shot Chronos-Bolt models outperform commonly used statistical models and deep learning models that have been trained on these datasets (highlighted by *). Furthermore, they also perform better than other FMs, denoted by a +, which indicates that these models were pretrained on certain datasets in our benchmark and are not entirely zero-shot. Notably, Chronos-Bolt (Base) also surpasses the original Chronos (Large) model in terms of the forecasting accuracy while being over 600 times faster.
Chronos-Bolt models are now available on HuggingFace🤗 in four sizes—Tiny (9M), Mini (21M), Small (48M), and Base (205M)—and can also be used on the CPU. Check out the example in the README to learn how to use Chronos-Bolt models. You can use Chronos-Bolt models for forecasting in just a few lines of code.
import pandas as pd # requires: pip install pandas
import torch
from chronos import BaseChronosPipeline
pipeline = BaseChronosPipeline.from_pretrained(
"amazon/chronos-bolt-base",
device_map="cuda", # use "cpu" for CPU inference
torch_dtype=torch.bfloat16,
)
df = pd.read_csv(
"https://raw.githubusercontent.com/AileenNielsen/TimeSeriesAnalysisWithPython/master/data/AirPassengers.csv"
)
# context must be either a 1D tensor, a list of 1D tensors,
# or a left-padded 2D tensor with batch as the first dimension
# Chronos-Bolt models generate quantile forecasts, so forecast has shape
# [num_series, num_quantiles, prediction_length].
forecast = pipeline.predict(
context=torch.tensor(df["#Passengers"]), prediction_length=12
)Note
We have also integrated Chronos-Bolt models into AutoGluon which is a more feature complete way of using Chronos models for production use cases. With the addition of Chronos-Bolt models and other enhancements, AutoGluon v1.2 achieves a 70%+ win rate against AutoGluon v1.1! In addition to the new Chronos-Bolt models, AutoGluon 1.2 also enables effortless fine-tuning of Chronos and Chronos-Bolt models. Check out the updated Chronos AutoGluon tutorial to learn how to use and fine-tune Chronos-Bolt models using AutoGluon.
What's Changed
- Cap transformers <4.41 by @lostella in #77
- Save training job info by @abdulfatir in #80
- Relax torch and transformers versions by @abdulfatir in #81
- Split
input_transformintocontext_input_transformandlabel_input_transformby @abdulfatir in #82 - Fix citation by @abdulfatir in #86
- Enhance training script: auto tf32 detection and reorder default seed setting by @abdulfatir in #91
- Uncap transformers dependency by @lostella in #94
- Update ci.yml with schedule by @abdulfatir in #95
- Add FAQ badge to README by @lostella in #97
- Remove print statements from
train.pyby @abdulfatir in #101 - Add issue templates by @lostella in #109
- Add support for causal models by @abdulfatir in #113
- Set
drop_prob = 0for causal models by @abdulfatir in #125 - Add evaluation script by @abdulfatir in #134
- Update README.md with dataset and evaluation details by @abdulfatir in #136
- Add datasets badge by @abdulfatir in #137
- Add generation params to eval script by @abdulfatir in #138
- Bound number of workers by number of datasets by @lostella in #157
- Simplify pretraining README snippet by @lostella in #160
- Fix number of quantisation buckets by @alvaropp in #182
- Force context scaling and quantization in float32, add assertions to tests by @lostella in #197
- Update README.md by @abdulfatir in #206
- ⚡ Add support for Chronos-Bolt models by @abdulfatir @canerturkmen @lostella in #204
- Update project information and workflows by @abdulfatir in #214
New Contributors
Full Changelog: v1.2.0...v1.3.0
1.2.0
What's Changed
- Remove Unnecessary F-strings by @pixeeai in #34
- Fix types, add mypy to workflow by @lostella in #42
- Speed up workflow by @lostella in #43
- Simplify tokenizer creation by @lostella in #44
- Update README.md by @abdulfatir in #46
- Add CITATION.cff by @abdulfatir in #48
- Revamp README: Add News, Coverage, Logo, Shields, Emojis, Zero-Shot results by @abdulfatir in #56
- add AGv1.1 announcement to README by @canerturkmen in #58
- Add training script by @lostella in #63
- Add KernelSynth script by @abdulfatir in #64
- Add missing headers by @lostella in #65
- Merge kernel-synth extra into training by @abdulfatir in #66
- Add a README file for the scripts by @abdulfatir in #67
- Update README examples by @lostella in #68
- Add details on pushing model to huggingface hub by @abdulfatir in #69
- Add one space after --config in training readme by @huibinshen in #71
- Use logo with transparent background by @abdulfatir in #72
- Fix output transform, add test to enforce tokenizer consistency by @HugoSenetaire in #73
- Update README and bump version by @abdulfatir in #74
New Contributors
- @pixeeai made their first contribution in #34
- @canerturkmen made their first contribution in #58
- @huibinshen made their first contribution in #71
- @HugoSenetaire made their first contribution in #73
Full Changelog: v1.1.0...v1.2.0