Releases: amazon-science/chronos-forecasting
1.4.0
Key Changes
predict
andpredict_quantiles
will return predictions oncpu
infloat32
.
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_quantiles
by @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_transform
intocontext_input_transform
andlabel_input_transform
by @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.py
by @abdulfatir in #101 - Add issue templates by @lostella in #109
- Add support for causal models by @abdulfatir in #113
- Set
drop_prob = 0
for 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
1.1.0
1.0.0
Initial release
What's Changed
- Update chronos.py - model.device by @michaelfeil in #11
- Add optional inference params to example by @abdulfatir in #15
New Contributors
- @michaelfeil made their first contribution in #11
Full Changelog: paper-release...v1.0.0