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.
<center>
<img src="https://autogluon.s3.amazonaws.com/images/chronos_bolt_speed.svg" width="60%"/>
</center>
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)](https://auto.gluon.ai/stable/tutorials/timeseries/forecasting-metrics.html#autogluon.timeseries.metrics.WQL) and the [Mean Absolute Scaled Error (MASE)](https://auto.gluon.ai/stable/tutorials/timeseries/forecasting-metrics.html#autogluon.timeseries.metrics.MASE), respectively, aggregated over 27 datasets (see the [Chronos paper](https://arxiv.org/abs/2403.07815) 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.
<center>
<img src="https://autogluon.s3.amazonaws.com/images/chronos_bolt_accuracy.svg" width="80%"/>
</center>
Chronos-Bolt models are now available [on HuggingFace🤗](https://huggingface.co/collections/amazon/chronos-models-and-datasets-65f1791d630a8d57cb718444) 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](https://github.com/amazon-science/chronos-forecasting) to learn how to use Chronos-Bolt models. You can use Chronos-Bolt models for forecasting in just a few lines of code.
py
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](https://auto.gluon.ai/stable/tutorials/timeseries/index.html) 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](https://auto.gluon.ai/stable/tutorials/timeseries/forecasting-chronos.html) to learn how to use and fine-tune Chronos-Bolt models using AutoGluon.
What's Changed
* Cap transformers <4.41 by lostella in https://github.com/amazon-science/chronos-forecasting/pull/77
* Save training job info by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/80
* Relax torch and transformers versions by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/81
* Split `input_transform` into `context_input_transform` and `label_input_transform` by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/82
* Fix citation by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/86
* Enhance training script: auto tf32 detection and reorder default seed setting by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/91
* Uncap transformers dependency by lostella in https://github.com/amazon-science/chronos-forecasting/pull/94
* Update ci.yml with schedule by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/95
* Add FAQ badge to README by lostella in https://github.com/amazon-science/chronos-forecasting/pull/97
* Remove print statements from `train.py` by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/101
* Add issue templates by lostella in https://github.com/amazon-science/chronos-forecasting/pull/109
* Add support for causal models by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/113
* Set `drop_prob = 0` for causal models by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/125
* Add evaluation script by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/134
* Update README.md with dataset and evaluation details by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/136
* Add datasets badge by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/137
* Add generation params to eval script by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/138
* Bound number of workers by number of datasets by lostella in https://github.com/amazon-science/chronos-forecasting/pull/157
* Simplify pretraining README snippet by lostella in https://github.com/amazon-science/chronos-forecasting/pull/160
* Fix number of quantisation buckets by alvaropp in https://github.com/amazon-science/chronos-forecasting/pull/182
* Force context scaling and quantization in float32, add assertions to tests by lostella in https://github.com/amazon-science/chronos-forecasting/pull/197
* Update README.md by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/206
* :zap: Add support for Chronos-Bolt models by abdulfatir canerturkmen lostella in https://github.com/amazon-science/chronos-forecasting/pull/204
* Update project information and workflows by abdulfatir in https://github.com/amazon-science/chronos-forecasting/pull/214
New Contributors
* alvaropp made their first contribution in https://github.com/amazon-science/chronos-forecasting/pull/182
**Full Changelog**: https://github.com/amazon-science/chronos-forecasting/compare/v1.2.0...v1.3.0