diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..327ba52
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1 @@
+*.ipynb linguist-language=Python
\ No newline at end of file
diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index f197c08..6c2121f 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -30,4 +30,4 @@ CUDA version:
PyTorch version:
HuggingFace transformers version:
HuggingFace accelerate version:
-
+Pandas version:
diff --git a/.github/workflows/eval-model.yml b/.github/workflows/eval-model.yml
index 51f611c..28b4b2b 100644
--- a/.github/workflows/eval-model.yml
+++ b/.github/workflows/eval-model.yml
@@ -36,13 +36,13 @@ jobs:
run: pip install ".[dev]" -f https://download.pytorch.org/whl/cpu/torch_stable.html
- name: Run Eval Script for Chronos-2
- run: python scripts/evaluation/evaluate.py chronos-2 ci/evaluate/backtest_config.yaml $CHRONOS_2_RESULTS_CSV --model-id=s3://autogluon/chronos-2 --device=cpu --torch-dtype=float32
+ run: python scripts/evaluation/evaluate.py chronos-2 ci/evaluate/backtest_config.yaml $CHRONOS_2_RESULTS_CSV --model-id=amazon/chronos-2 --device=cpu --torch-dtype=float32
- name: Print Chronos-2 CSV
run: cat $CHRONOS_2_RESULTS_CSV
- name: Run Eval Script for Chronos-Bolt
run: python scripts/evaluation/evaluate.py chronos-bolt ci/evaluate/backtest_config.yaml $CHRONOS_BOLT_RESULTS_CSV --model-id=amazon/chronos-bolt-small --device=cpu --torch-dtype=float32
-
+
- name: Print Chronos-Bolt CSV
run: cat $CHRONOS_BOLT_RESULTS_CSV
diff --git a/.gitignore b/.gitignore
index 8cf79d6..3f85b65 100644
--- a/.gitignore
+++ b/.gitignore
@@ -160,4 +160,9 @@ cython_debug/
#.idea/
# macOS stuff
-.DS_store
\ No newline at end of file
+.DS_store
+
+chronos-2-finetuned
+
+# Kiro IDE
+.kiro
diff --git a/README.md b/README.md
index 5c938c6..b24a1c7 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,3 @@
-
-
-
-
# Chronos: Pretrained Models for Time Series Forecasting
@@ -11,7 +7,7 @@
[](https://huggingface.co/datasets/autogluon/chronos_datasets)
[](https://huggingface.co/collections/amazon/chronos-models-65f1791d630a8d57cb718444)
[](https://github.com/autogluon/fev)
-[](notebooks/deploy-chronos-bolt-to-amazon-sagemaker.ipynb)
+[](notebooks/deploy-chronos-to-amazon-sagemaker.ipynb)
[](https://github.com/amazon-science/chronos-forecasting/issues?q=is%3Aissue+label%3AFAQ)
[](https://opensource.org/licenses/Apache-2.0)
[](https://deepwiki.com/amazon-science/chronos-forecasting)
@@ -20,8 +16,8 @@
## 🚀 News
-- **20 Oct 2025**: 🚀 [Chronos-2](https://arxiv.org/abs/2510.15821) released. It offers _zero-shot_ support for univariate, multivariate, and covariate-informed forecasting tasks. Chronos-2 achieves the best performance on fev-bench, GIFT-Eval and Chronos Benchmark II amongst pretrained models. Check out [this notebook](notebooks/chronos-2-quickstart.ipynb) to get started with Chronos-2.
-- **14 Feb 2025**: 🚀 Chronos-Bolt is now available on Amazon SageMaker JumpStart! Check out the [tutorial notebook](notebooks/deploy-chronos-bolt-to-amazon-sagemaker.ipynb) to learn how to deploy Chronos endpoints for production use in 3 lines of code.
+- **30 Dec 2025**: ☁️ Deploy Chronos-2 to AWS with Amazon SageMaker: new guide covers real-time inference (GPU/CPU), serverless endpoints with automatic scaling, and batch transform for large-scale forecasting. See the [deployment tutorial](notebooks/deploy-chronos-to-amazon-sagemaker.ipynb).
+- **20 Oct 2025**: 🚀 [Chronos-2](https://huggingface.co/amazon/chronos-2) released. It offers _zero-shot_ support for univariate, multivariate, and covariate-informed forecasting tasks. Chronos-2 achieves the best performance on fev-bench, GIFT-Eval and Chronos Benchmark II amongst pretrained models. Check out [this notebook](notebooks/chronos-2-quickstart.ipynb) to get started with Chronos-2.
- **12 Dec 2024**: 📊 We released [`fev`](https://github.com/autogluon/fev), a lightweight package for benchmarking time series forecasting models based on the [Hugging Face `datasets`](https://huggingface.co/docs/datasets/en/index) library.
- **26 Nov 2024**: ⚡️ Chronos-Bolt models released [on HuggingFace](https://huggingface.co/collections/amazon/chronos-models-65f1791d630a8d57cb718444). Chronos-Bolt models are more accurate (5% lower error), up to 250x faster and 20x more memory efficient than the original Chronos models of the same size!
- **13 Mar 2024**: 🚀 Chronos [paper](https://arxiv.org/abs/2403.07815) and inference code released.
@@ -40,7 +36,9 @@ This package provides an interface to the Chronos family of **pretrained time se
| Model ID | Parameters |
| ---------------------------------------------------------------------- | ---------- |
-| [`s3://autogluon/chronos-2`](https://arxiv.org/abs/2510.15821) | 120M |
+| [`amazon/chronos-2`](https://huggingface.co/amazon/chronos-2) | 120M |
+| [`autogluon/chronos-2-synth`](https://huggingface.co/autogluon/chronos-2-synth) | 120M |
+| [`autogluon/chronos-2-small`](https://huggingface.co/autogluon/chronos-2-small) | 28M |
| [`amazon/chronos-bolt-tiny`](https://huggingface.co/amazon/chronos-bolt-tiny) | 9M |
| [`amazon/chronos-bolt-mini`](https://huggingface.co/amazon/chronos-bolt-mini) | 21M |
| [`amazon/chronos-bolt-small`](https://huggingface.co/amazon/chronos-bolt-small) | 48M |
@@ -49,7 +47,7 @@ This package provides an interface to the Chronos family of **pretrained time se
| [`amazon/chronos-t5-mini`](https://huggingface.co/amazon/chronos-t5-mini) | 20M |
| [`amazon/chronos-t5-small`](https://huggingface.co/amazon/chronos-t5-small) | 46M |
| [`amazon/chronos-t5-base`](https://huggingface.co/amazon/chronos-t5-base) | 200M |
-| [`amazon/chronos-t5-large`](https://huggingface.co/amazon/chronos-t5-large) | 710M |
+| [`amazon/chronos-t5-large`](https://huggingface.co/amazon/chronos-t5-large) | 710M |
@@ -61,6 +59,10 @@ To perform inference with Chronos, the easiest way is to install this package th
pip install chronos-forecasting
```
+> [!TIP]
+> For reliable production use, we recommend using Chronos-2 models through [Amazon SageMaker JumpStart](https://aws.amazon.com/sagemaker/ai/jumpstart/). Check out [this tutorial](notebooks/deploy-chronos-to-amazon-sagemaker.ipynb) to learn how to deploy Chronos-2 inference endpoints to AWS with just a few lines of code.
+
+
### Forecasting
A minimal example showing how to perform forecasting using Chronos-2:
@@ -69,7 +71,7 @@ A minimal example showing how to perform forecasting using Chronos-2:
import pandas as pd # requires: pip install 'pandas[pyarrow]'
from chronos import Chronos2Pipeline
-pipeline = Chronos2Pipeline.from_pretrained("s3://autogluon/chronos-2", device_map="cuda")
+pipeline = Chronos2Pipeline.from_pretrained("amazon/chronos-2", device_map="cuda")
# Load historical target values and past values of covariates
context_df = pd.read_parquet("https://autogluon.s3.amazonaws.com/datasets/timeseries/electricity_price/train.parquet")
@@ -116,8 +118,15 @@ plt.legend()
## Example Notebooks
- [Chronos-2 Quick Start](notebooks/chronos-2-quickstart.ipynb)
-- [Deploy Chronos-Bolt on Amazon SageMaker](notebooks/deploy-chronos-bolt-to-amazon-sagemaker.ipynb)
-- Deploy Chronos-2 on Amazon SageMaker (coming soon!)
+
+
+
+
+
+
+
+
+- [Deploy Chronos-2 on Amazon SageMaker](notebooks/deploy-chronos-to-amazon-sagemaker.ipynb)
## 📝 Citation
diff --git a/figures/chronos-logo.png b/figures/chronos-logo.png
deleted file mode 100644
index fff5a42..0000000
Binary files a/figures/chronos-logo.png and /dev/null differ
diff --git a/figures/main-figure.png b/figures/main-figure.png
deleted file mode 100644
index 329b890..0000000
Binary files a/figures/main-figure.png and /dev/null differ
diff --git a/figures/zero_shot-agg_scaled_score.svg b/figures/zero_shot-agg_scaled_score.svg
deleted file mode 100644
index 560c4de..0000000
--- a/figures/zero_shot-agg_scaled_score.svg
+++ /dev/null
@@ -1,4875 +0,0 @@
-
-
-
diff --git a/notebooks/chronos-2-quickstart.ipynb b/notebooks/chronos-2-quickstart.ipynb
index 783103e..d2489c1 100644
--- a/notebooks/chronos-2-quickstart.ipynb
+++ b/notebooks/chronos-2-quickstart.ipynb
@@ -7,6 +7,12 @@
"source": [
"# Getting Started with Chronos-2\n",
"\n",
+ "[](https://studiolab.sagemaker.aws/import/github/amazon-science/chronos-forecasting/blob/main/notebooks/chronos-2-quickstart.ipynb)\n",
+ "[](\n",
+ "https://colab.research.google.com/github/amazon-science/chronos-forecasting/blob/main/notebooks/chronos-2-quickstart.ipynb)\n",
+ "\n",
+ "\n",
+ "\n",
"**Chronos-2** is a foundation model for time series forecasting that builds on [Chronos](https://arxiv.org/abs/2403.07815) and [Chronos-Bolt](https://aws.amazon.com/blogs/machine-learning/fast-and-accurate-zero-shot-forecasting-with-chronos-bolt-and-autogluon/). It offers significant improvements in capabilities and can handle diverse forecasting scenarios not supported by earlier models.\n",
"\n",
"| Capability | Chronos | Chronos-Bolt | Chronos-2 |\n",
@@ -31,7 +37,7 @@
"metadata": {},
"outputs": [],
"source": [
- "%pip install -U 'chronos-forecasting>=2.0' 'pandas[pyarrow]' 'matplotlib'"
+ "%pip install 'chronos-forecasting>=2.2[extras]' 'matplotlib'"
]
},
{
@@ -41,9 +47,9 @@
"metadata": {},
"outputs": [],
"source": [
- "# Use only 1 GPU if available\n",
"import os\n",
"\n",
+ "# Use only 1 GPU if available\n",
"os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\"\n",
"\n",
"import pandas as pd\n",
@@ -52,8 +58,8 @@
"from chronos import BaseChronosPipeline, Chronos2Pipeline\n",
"\n",
"# Load the Chronos-2 pipeline\n",
- "# GPU recommended for faster inference, but CPU is also supported\n",
- "pipeline: Chronos2Pipeline = BaseChronosPipeline.from_pretrained(\"s3://autogluon/chronos-2/\", device_map=\"cuda\")"
+ "# GPU recommended for faster inference, but CPU is also supported using device_map=\"cpu\"\n",
+ "pipeline: Chronos2Pipeline = BaseChronosPipeline.from_pretrained(\"amazon/chronos-2\", device_map=\"cuda\")"
]
},
{
@@ -210,9 +216,9 @@
"
\n",
" \n",
"\n",
@@ -1100,18 +1110,18 @@
],
"text/plain": [
" id timestamp target_name predictions 0.1 0.5 \\\n",
- "0 1 2015-05-03 Sales 28939.392578 25214.275391 28939.392578 \n",
- "1 1 2015-05-10 Sales 25541.921875 21921.326172 25541.921875 \n",
- "2 1 2015-05-17 Sales 23640.238281 20500.337891 23640.238281 \n",
+ "0 1 2015-05-03 Sales 28939.392578 25214.277344 28939.392578 \n",
+ "1 1 2015-05-10 Sales 25541.919922 21921.324219 25541.919922 \n",
+ "2 1 2015-05-17 Sales 23640.238281 20500.339844 23640.238281 \n",
"3 1 2015-05-24 Sales 26778.261719 23318.355469 26778.261719 \n",
- "4 1 2015-05-31 Sales 22679.359375 19722.287109 22679.359375 \n",
+ "4 1 2015-05-31 Sales 22679.361328 19722.287109 22679.361328 \n",
"\n",
" 0.9 \n",
- "0 32411.095703 \n",
- "1 29191.931641 \n",
- "2 26884.664062 \n",
+ "0 32411.097656 \n",
+ "1 29191.929688 \n",
+ "2 26884.666016 \n",
"3 30162.820312 \n",
- "4 25990.041016 "
+ "4 25990.042969 "
]
},
"metadata": {},
@@ -1215,7 +1225,7 @@
"source": [
"## Cross-Learning with Joint Prediction\n",
"\n",
- "Chronos-2 supports **cross-learning** through the `predict_batches_jointly=True` parameter, which enables the model to share information across all time series in a batch during prediction. This can be particularly beneficial when forecasting multiple related time series with short historical context."
+ "Chronos-2 supports **cross-learning** through the `cross_learning=True` parameter, which enables the model to share information across all time series in a batch during prediction. This can be particularly beneficial when forecasting multiple related time series with short historical context."
]
},
{
@@ -1231,7 +1241,7 @@
" context_df,\n",
" prediction_length=24,\n",
" quantile_levels=[0.1, 0.5, 0.9],\n",
- " predict_batches_jointly=True, # Enable cross-learning\n",
+ " cross_learning=True, # Enable cross-learning\n",
" batch_size=100,\n",
")"
]
@@ -1241,9 +1251,11 @@
"id": "b427ca20",
"metadata": {},
"source": [
+ "
\n",
+ "\n",
"### Important Considerations for Cross-Learning\n",
"\n",
- "When using `predict_batches_jointly=True`, keep these caveats in mind:\n",
+ "When using `cross_learning=True`, keep these caveats in mind:\n",
"\n",
"- **Task-dependent results**: Cross-learning may not always improve forecasts and could worsen performance for some tasks. Evaluate this feature for your specific use case.\n",
"\n",
@@ -1251,7 +1263,9 @@
"\n",
"- **Input homogeneity**: This feature works best with homogeneous inputs (e.g., multiple univariate time series of the same type). Mixing different task types may lead to unexpected behavior.\n",
"\n",
- "- **Short context benefit**: Cross-learning is most helpful when individual time series have limited historical context, as the model can leverage patterns from related series in the batch."
+ "- **Short context benefit**: Cross-learning is most helpful when individual time series have limited historical context, as the model can leverage patterns from related series in the batch.\n",
+ "\n",
+ "
"
]
},
{
@@ -1395,9 +1409,15 @@
"id": "c99a5ae1",
"metadata": {},
"source": [
- "## (Experimental) Fine-Tuning\n",
+ "## Fine-Tuning\n",
"\n",
- "Chronos-2 supports fine-tuning on your own data. This is an experimental feature that may change in future versions."
+ "Chronos-2 supports fine-tuning on your own data. You may either fine-tune all weights of the model (_full fine-tuning_) or a [low rank adapter (LoRA)](https://huggingface.co/docs/peft/en/package_reference/lora), which significantly reduces the number of trainable parameters.\n",
+ "\n",
+ "
\n",
+ "\n",
+ "**Note:** Fine-tuning functionality is intended for advanced users. The default fine-tuning hyperparameters may not always improve accuracy for your specific use case. We recommend experimenting with different hyperparameters. In case of limited data (too few and/or too short series), fine-tuning may not improve over zero-shot (and may even worsen accuracy sometimes).\n",
+ "\n",
+ "
"
]
},
{
@@ -1409,13 +1429,17 @@
"\n",
"The `fit` method accepts:\n",
"- `inputs`: Time series for fine-tuning (same format as predict_quantiles)\n",
+ "- `finetune_mode`: `\"full\"` or `\"lora\"`\n",
+ "- `lora_config`: The [`LoraConfig`](https://huggingface.co/docs/peft/en/package_reference/lora#peft.LoraConfig), in case `finetune_mode=\"lora\"`\n",
"- `prediction_length`: Forecast horizon for fine-tuning\n",
"- `validation_inputs`: Optional validation data (same format as inputs)\n",
- "- `learning_rate`: Optimizer learning rate (default: 1e-5)\n",
+ "- `learning_rate`: Optimizer learning rate (default: 1e-6, we recommend a higher learning rate such as 1e-5 for LoRA)\n",
"- `num_steps`: Number of training steps (default: 1000)\n",
"- `batch_size`: Batch size for training (default: 256)\n",
"\n",
- "Returns a new pipeline with the fine-tuned model."
+ "Returns a new pipeline with the fine-tuned model.\n",
+ "\n",
+ "Please read the docstring for details about specific arguments."
]
},
{
@@ -1450,10 +1474,6 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "/tmp/ipykernel_2205321/1561245919.py:2: FutureWarning: Fine-tuning support is experimental and may be changed in future versions.\n",
- " finetuned_pipeline = pipeline.fit(\n",
- "/fsx/ansarnd/repos/chronos-forecasting/.venv/lib/python3.11/site-packages/torch/backends/cuda/__init__.py:131: UserWarning: Please use the new API settings to control TF32 behavior, such as torch.backends.cudnn.conv.fp32_precision = 'tf32' or torch.backends.cuda.matmul.fp32_precision = 'ieee'. Old settings, e.g, torch.backends.cuda.matmul.allow_tf32 = True, torch.backends.cudnn.allow_tf32 = True, allowTF32CuDNN() and allowTF32CuBLAS() will be deprecated after Pytorch 2.9. Please see https://pytorch.org/docs/main/notes/cuda.html#tensorfloat-32-tf32-on-ampere-and-later-devices (Triggered internally at /pytorch/aten/src/ATen/Context.cpp:80.)\n",
- " return torch._C._get_cublas_allow_tf32()\n",
"Could not estimate the number of tokens of the input, floating-point operations will not be computed\n"
]
},
@@ -1463,8 +1483,8 @@
"\n",
"
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
"source": [
- "**Note:** Fine-tuning is experimental functionality intended for advanced users. The default fine-tuning hyperparameters may not always improve accuracy for your specific use case."
+ "# Fine-tune the model with LoRA\n",
+ "lora_finetuned_pipeline = pipeline.fit(\n",
+ " inputs=train_inputs,\n",
+ " prediction_length=13,\n",
+ " num_steps=1000,\n",
+ " learning_rate=1e-4,\n",
+ " batch_size=32,\n",
+ " logging_steps=100,\n",
+ " finetune_mode=\"lora\",\n",
+ ")"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "44e5d367",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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3LMeohIQ6C2gRM+o765FeHl5YcKECdJrwnOgX4MgCIKoVAqsVIWpzjpBEIRnw431UB8BAd5AVqkoMkfUDhQKBWJiYqq7GYQNXFKDJzwfxhimTp2KunXrQhAESY2/tiAIArZt2+bWY3z22WcYPHiwW4/hbg4cOABBEJCbm1ut7Vi8eDFiY2MdrvP444/jvffeq5oGEZUC5awTBEH8s8jjnnUfIMhbDH2n8m0EUf2QsV7D2LlzJzZs2ICffvoJ6enpZdT77VEVRq4z1qxZg86dOyMwMBChoaHo0qULli5dWq1tsqa0tBQvv/wyFi1aVN1NcTuVfU2Ud38LFizA66+/jry8vEprC+FeeBh8sLf4voi8MwRBEB5NrjFnPVQlIJD67lqHXq/HiRMncOLECej1+upuDmEGGes1jOTkZERERODee+9FeHh4leedaDQa5yvZYN26dZg9ezZmzZqFxMREHDlyBPPmzUNhYWElt7BifPPNNwgODkbv3r0rtJ/ynidPoyq+R4cOHdC8eXN8+eWXbj8WUTlwgbmG/qJ3ppg86wRBEB6NybMuIMBL7LsLqe+uNej1euzYsQM7duwgY93DIGNdJowxlGiLquWPMXmd5YQJE/Dss88iLS0NgiBIuScxMTFYsWKFxbqxsbFYvHixtBwAHnroIYvtJkyYgFGjRllsN3v2bPTr1096369fP8ycOROzZ89G/fr1pfJ6Z8+exdChQxEYGIiGDRti3LhxyM7Ottv27du3Y8yYMZg0aRJatGiB9u3b44knnsDrr78urXPy5EkMGjQI9evXR0hICPr27YvTp087PCfXr1/HmDFjEBoairp16+LBBx9EamqqtPzAgQPo2bMnAgICEBoait69e+PatWt297dlyxaMHDnS4jOdTodZs2YhNDQU9erVw4svvoiEhASLc2fvPB08eBA9e/aESqVCREQE/vvf/0KnMyX4OvvtANFjvXbtWjz00EPw9/dHy5YtsX37dottduzYgVatWsHPzw/333+/xTmwhb1rgoetr127Fk2bNoWvr6+sdtrbH2fjxo2IiYlBSEgIHn/8cRQUFFgsHzlyJLZs2eKwzYTnwD3r4X7igI/U4AmCIDwb85x17lmnnHWCqH5IYE4mpbpiDP28emq4/5JwG37eAU7XW7lyJZo3b45PP/0UJ0+ehFKplLX/kydPokGDBli/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",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "# Use the LoRA fine-tuned model for predictions\n",
+ "lora_finetuned_pred_df = lora_finetuned_pipeline.predict_df(\n",
+ " sales_context_df,\n",
+ " future_df=sales_future_df,\n",
+ " prediction_length=13,\n",
+ " quantile_levels=[0.1, 0.5, 0.9],\n",
+ " id_column=\"id\",\n",
+ " timestamp_column=\"timestamp\",\n",
+ " target=\"Sales\",\n",
+ ")\n",
+ "\n",
+ "plot_forecast(\n",
+ " sales_context_df,\n",
+ " lora_finetuned_pred_df,\n",
+ " sales_test_df,\n",
+ " target_column=\"Sales\",\n",
+ " timeseries_id=\"1\",\n",
+ " title_suffix=\"(LoRA fine-tuned)\",\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7c899976",
+ "metadata": {},
+ "outputs": [],
+ "source": []
}
],
"metadata": {
@@ -1565,7 +1759,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.11.11"
+ "version": "3.11.13"
}
},
"nbformat": 4,
diff --git a/notebooks/deploy-chronos-bolt-to-amazon-sagemaker.ipynb b/notebooks/deploy-chronos-bolt-to-amazon-sagemaker.ipynb
deleted file mode 100644
index 486f0ae..0000000
--- a/notebooks/deploy-chronos-bolt-to-amazon-sagemaker.ipynb
+++ /dev/null
@@ -1,1003 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "# SageMaker JumpStart - Deploy Chronos endpoints to AWS for production use"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "In this demo notebook, we will walk through the process of using the **SageMaker Python SDK** to deploy a **Chronos** model to a cloud endpoint on AWS. To simplify deployment, we will leverage **SageMaker JumpStart**.\n",
- "\n",
- "### Why Deploy to an Endpoint?\n",
- "So far, we’ve seen how to run models locally, which is useful for experimentation. However, in a production setting, a forecasting model is typically just one component of a larger system. Running models locally doesn’t scale well and lacks the reliability needed for real-world applications.\n",
- "\n",
- "To address this, we deploy models as **endpoints** on AWS. An endpoint acts as a **hosted service**—we can send it requests (containing time series data), and it returns forecasts in response. This allows seamless integration into production workflows, ensuring scalability and real-time inference."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Deploy the model"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "First, update the SageMaker SDK to access the latest models:"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "metadata": {},
- "outputs": [],
- "source": [
- "!pip install -U -q sagemaker"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We create a `JumpStartModel` with the necessary configuration based on the model ID. The key parameters are:\n",
- "- `model_id`: Specifies the model to use. Here, we choose the [Chronos-Bolt (Base)](https://huggingface.co/amazon/chronos-bolt-base) model. Currently, the following model IDs are supported:\n",
- " - `autogluon-forecasting-chronos-bolt-base` - [Chronos-Bolt (Base)](https://huggingface.co/amazon/chronos-bolt-base).\n",
- " - `autogluon-forecasting-chronos-bolt-small` - [Chronos-Bolt (Small)](https://huggingface.co/amazon/chronos-bolt-small).\n",
- " - [Original Chronos models](https://huggingface.co/amazon/chronos-t5-small) in sizes `small`, `base` and `large` can be accessed, e.g., as `autogluon-forecasting-chronos-t5-small`. Note that these models require a GPU to run, are much slower and don't support covariates. Therefore, for most practical purposes we recommend using Chronos-Bolt models instead.\n",
- "- `instance_type`: Defines the AWS instance for serving the endpoint. We use `ml.c5.2xlarge` to run the model on CPU. To use a GPU, select an instance like `ml.g5.2xlarge`, or choose other CPU options such as `ml.m5.xlarge` or `ml.m5.4xlarge`. You can check the pricing for different SageMaker instance types for real-time inference [here](https://aws.amazon.com/sagemaker-ai/pricing/).\n",
- "\n",
- "The `JumpStartModel` will automatically set the necessary attributes such as `image_uri` based on the chosen `model_id` and `instance_type`."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "metadata": {},
- "outputs": [],
- "source": [
- "from sagemaker.jumpstart.model import JumpStartModel\n",
- "\n",
- "model_id = \"autogluon-forecasting-chronos-bolt-base\"\n",
- "\n",
- "model = JumpStartModel(\n",
- " model_id=model_id,\n",
- " instance_type=\"ml.c5.2xlarge\",\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Next, we deploy the model and create an endpoint. Deployment typically takes a few minutes, as SageMaker provisions the instance, loads the model, and sets up the endpoint for inference.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "predictor = model.deploy()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "> **Note:** Once the endpoint is deployed, it remains active and incurs charges on your AWS account until it is deleted. The cost depends on factors such as the instance type, the region where the endpoint is hosted, and the duration it remains running. To avoid unnecessary charges, make sure to delete the endpoint when it is no longer needed. For detailed pricing information, refer to the [SageMaker AI pricing page](https://aws.amazon.com/sagemaker-ai/pricing/).\n",
- "\n",
- "\n",
- "If the previous step results in an error, you may need to update the model configuration. For example, specifying a `role` when creating the `JumpStartModel` ensures the necessary AWS resources are accessible."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# model = JumpStartModel(role=\"your-sagemaker-execution-role\", model_id=model_id, instance_type=\"ml.c5.2xlarge\")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Alternatively, you can create a predictor for an existing endpoint."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# from sagemaker.predictor import retrieve_default\n",
- "\n",
- "# endpoint_name = \"NAME-OF-EXISTING-ENDPOINT\"\n",
- "# predictor = retrieve_default(endpoint_name)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Querying the endpoint"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can now invoke the endpoint to make a forecast. We send a **payload** to the endpoint, which includes historical time series values and configuration parameters, such as the prediction length. The endpoint processes this input and returns a **response** containing the forecasted values based on the provided data."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "metadata": {},
- "outputs": [],
- "source": [
- "# Define a utility function to print the response in a pretty format\n",
- "from pprint import pformat\n",
- "\n",
- "\n",
- "def nested_round(data, decimals=2):\n",
- " \"\"\"Round numbers, including nested dicts and list.\"\"\"\n",
- " if isinstance(data, float):\n",
- " return round(data, decimals)\n",
- " elif isinstance(data, list):\n",
- " return [nested_round(item, decimals) for item in data]\n",
- " elif isinstance(data, dict):\n",
- " return {key: nested_round(value, decimals) for key, value in data.items()}\n",
- " else:\n",
- " return data\n",
- "\n",
- "\n",
- "def pretty_format(data):\n",
- " return pformat(nested_round(data), width=150, sort_dicts=False)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "id": "07605824",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{'predictions': [{'mean': [-1.58, 0.52, 1.88, 1.39, -1.03, -3.34, -2.67, -0.64, 0.96, 1.59],\n",
- " '0.1': [-4.17, -2.71, -1.7, -2.35, -4.79, -6.98, -6.59, -4.87, -3.45, -2.89],\n",
- " '0.5': [-1.58, 0.52, 1.88, 1.39, -1.03, -3.34, -2.67, -0.64, 0.96, 1.59],\n",
- " '0.9': [1.47, 4.47, 6.27, 5.98, 3.5, 1.11, 2.06, 4.47, 6.41, 7.17]}]}\n"
- ]
- }
- ],
- "source": [
- "payload = {\n",
- " \"inputs\": [\n",
- " {\"target\": [0.0, 4.0, 5.0, 1.5, -3.0, -5.0, -3.0, 1.5, 5.0, 4.0, 0.0, -4.0, -5.0, -1.5, 3.0, 5.0, 3.0, -1.5, -5.0, -4.0]},\n",
- " ],\n",
- " \"parameters\": {\n",
- " \"prediction_length\": 10\n",
- " }\n",
- "}\n",
- "response = predictor.predict(payload)\n",
- "print(pretty_format(response))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "A payload may also contain **multiple time series**, potentially including `start` and `item_id` fields."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "d476c397",
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{'predictions': [{'mean': [1.41, 1.5, 1.49, 1.45, 1.51],\n",
- " '0.1': [0.12, -0.08, -0.25, -0.41, -0.45],\n",
- " '0.5': [1.41, 1.5, 1.49, 1.45, 1.51],\n",
- " '0.9': [3.29, 3.82, 4.09, 4.3, 4.56],\n",
- " 'item_id': 'product_A',\n",
- " 'start': '2024-01-01T10:00:00'},\n",
- " {'mean': [-1.22, -1.3, -1.3, -1.14, -1.13],\n",
- " '0.1': [-4.51, -5.48, -6.12, -6.5, -7.1],\n",
- " '0.5': [-1.22, -1.3, -1.3, -1.14, -1.13],\n",
- " '0.9': [2.84, 4.02, 4.92, 5.99, 6.79],\n",
- " 'item_id': 'product_B',\n",
- " 'start': '2024-02-02T10:00:00'}]}\n"
- ]
- }
- ],
- "source": [
- "payload = {\n",
- " \"inputs\": [\n",
- " {\n",
- " \"target\": [1.0, 2.0, 3.0, 2.0, 0.5, 2.0, 3.0, 2.0, 1.0],\n",
- " \"item_id\": \"product_A\",\n",
- " \"start\": \"2024-01-01T01:00:00\",\n",
- " },\n",
- " {\n",
- " \"target\": [5.4, 3.0, 3.0, 2.0, 1.5, 2.0, -1.0],\n",
- " \"item_id\": \"product_B\",\n",
- " \"start\": \"2024-02-02T03:00:00\",\n",
- " },\n",
- " ],\n",
- " \"parameters\": {\n",
- " \"prediction_length\": 5,\n",
- " \"freq\": \"1h\",\n",
- " \"quantile_levels\": [0.1, 0.5, 0.9],\n",
- " \"batch_size\": 2,\n",
- " },\n",
- "}\n",
- "response = predictor.predict(payload)\n",
- "print(pretty_format(response))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Chronos-Bolt models also support forecasting with covariates (a.k.a. exogenous features or related time series). These can be provided using the `past_covariates` and `future_covariates` keys."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "{'predictions': [{'mean': [1.41, 1.5, 1.49], '0.1': [0.12, -0.08, -0.25], '0.5': [1.41, 1.5, 1.49], '0.9': [3.29, 3.82, 4.09]},\n",
- " {'mean': [-1.22, -1.3, -1.3], '0.1': [-4.51, -5.48, -6.12], '0.5': [-1.22, -1.3, -1.3], '0.9': [2.84, 4.02, 4.92]}]}\n"
- ]
- }
- ],
- "source": [
- "payload = {\n",
- " \"inputs\": [\n",
- " {\n",
- " \"target\": [1.0, 2.0, 3.0, 2.0, 0.5, 2.0, 3.0, 2.0, 1.0],\n",
- " # past_covariates must have the same length as \"target\"\n",
- " \"past_covariates\": {\n",
- " \"feat_1\": [3.0, 6.0, 9.0, 6.0, 1.5, 6.0, 9.0, 6.0, 3.0],\n",
- " \"feat_2\": [\"A\", \"B\", \"B\", \"B\", \"A\", \"A\", \"A\", \"A\", \"B\"],\n",
- " },\n",
- " # future_covariates must have length equal to \"prediction_length\"\n",
- " \"future_covariates\": {\n",
- " \"feat_1\": [2.5, 2.2, 3.3],\n",
- " \"feat_2\": [\"B\", \"A\", \"A\"],\n",
- " },\n",
- " },\n",
- " {\n",
- " \"target\": [5.4, 3.0, 3.0, 2.0, 1.5, 2.0, -1.0],\n",
- " \"past_covariates\": {\n",
- " \"feat_1\": [0.6, 1.2, 1.8, 1.2, 0.3, 1.2, 1.8],\n",
- " \"feat_2\": [\"A\", \"B\", \"B\", \"B\", \"A\", \"A\", \"A\"],\n",
- " },\n",
- " \"future_covariates\": {\n",
- " \"feat_1\": [1.2, 0.3, 4.4],\n",
- " \"feat_2\": [\"A\", \"B\", \"A\"],\n",
- " },\n",
- " },\n",
- " ],\n",
- " \"parameters\": {\n",
- " \"prediction_length\": 3,\n",
- " \"quantile_levels\": [0.1, 0.5, 0.9],\n",
- " },\n",
- "}\n",
- "response = predictor.predict(payload)\n",
- "print(pretty_format(response))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Endpoint API\n",
- "So far, we have explored several examples of querying the endpoint with different payload structures. Below is a comprehensive API specification detailing all supported parameters, their meanings, and how they affect the model’s predictions.\n",
- "\n",
- "* **inputs** (required): List with at most 1000 time series that need to be forecasted. Each time series is represented by a dictionary with the following keys:\n",
- " * **target** (required): List of observed numeric time series values. \n",
- " - It is recommended that each time series contains at least 30 observations.\n",
- " - If any time series contains fewer than 5 observations, an error will be raised.\n",
- " * **item_id**: String that uniquely identifies each time series. \n",
- " - If provided, the ID must be unique for each time series.\n",
- " - If provided, then the endpoint response will also include the **item_id** field for each forecast.\n",
- " * **start**: Timestamp of the first time series observation in ISO format (`YYYY-MM-DD` or `YYYY-MM-DDThh:mm:ss`). \n",
- " - If **start** field is provided, then **freq** must also be provided as part of **parameters**.\n",
- " - If provided, then the endpoint response will also include the **start** field indicating the first timestamp of each forecast.\n",
- " * **past_covariates**: Dictionary containing the past values of the covariates for this time series.\n",
- " - If **past_covariates** field is provided, then **future_covariates** must be provided as well with the same keys.\n",
- " - Each key in **past_covariates** correspond to the name of the covariate. Each value must be an array consisting of all-numeric or all-string values, with the length equal to the length of the **target**.\n",
- " * **future_covariates**: Dictionary containing the future values of the covariates for this time series (values during the forecast horizon).\n",
- " - If **future_covariates** field is provided, then **past_covariates** must be provided as well with the same keys.\n",
- " - Each key in **future_covariates** correspond to the name of the covariate. Each value must be an array consisting of all-numeric or all-string values, with the length equal to **prediction_length**.\n",
- " - If both **past_covariates** and **future_covariates** are provided, a regression model specified by **covariate_model** will be used to incorporate the covariate information into the forecast.\n",
- "* **parameters**: Optional parameters to configure the model.\n",
- " * **prediction_length**: Integer corresponding to the number of future time series values that need to be predicted. Defaults to `1`.\n",
- " - Recommended to keep prediction_length <= 64 since larger values will result in inaccurate quantile forecasts. Values above 1000 will raise an error.\n",
- " * **quantile_levels**: List of floats in range (0, 1) specifying which quantiles should should be included in the probabilistic forecast. Defaults to `[0.1, 0.5, 0.9]`. \n",
- " - Note that Chronos-Bolt cannot produce quantiles outside the [0.1, 0.9] range (predictions outside the range will be clipped).\n",
- " * **freq**: Frequency of the time series observations in [pandas-compatible format](https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#offset-aliases). For example, `1h` for hourly data or `2W` for bi-weekly data. \n",
- " - If **freq** is provided, then **start** must also be provided for each time series in **inputs**.\n",
- " * **batch_size**: Number of time series processed in parallel by the model. Larger values speed up inference but may lead to out of memory errors. Defaults to `256`.\n",
- " * **covariate_model**: Name of the tabular regression model applied to the covariates. Possible options: `GBM` (LightGBM), `LR` (linear regression), `RF` (random forest), `CAT` (CatBoost), `XGB` (XGBoost). Defaults to `GBM`.\n",
- "\n",
- "All keys not marked with (required) are optional.\n",
- "\n",
- "The endpoint response contains the probabilistic (quantile) forecast for each time series included in the request."
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Working with long-format data frames"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "The endpoint communicates using JSON format for both input and output. However, in practice, time series data is often stored in a **long-format data frame** (where each row represents a timestamp for a specific item).\n",
- "\n",
- "In the following example, we demonstrate how to:\n",
- "\n",
- "1. Convert a long-format data frame into the JSON payload format required by the endpoint.\n",
- "2. Send the request and retrieve predictions.\n",
- "3. Convert the response back into a long-format data frame for further analysis.\n",
- "\n",
- "First, we load an example dataset in long data frame format."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
"
- ],
- "text/plain": [
- " item_id timestamp scaled_price promotion_email promotion_homepage\n",
- "23 1062_101 2018-06-11 1.005425 0.0 0.0\n",
- "24 1062_101 2018-06-18 1.005454 0.0 0.0\n",
- "25 1062_101 2018-06-25 1.000000 0.0 0.0\n",
- "26 1062_101 2018-07-02 1.005513 0.0 0.0\n",
- "27 1062_101 2018-07-09 1.000000 0.0 0.0"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "future_df.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can now convert this data into a JSON payload."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "metadata": {},
- "outputs": [],
- "source": [
- "def convert_df_to_payload(\n",
- " past_df,\n",
- " future_df=None,\n",
- " prediction_length=1,\n",
- " freq=\"D\",\n",
- " target_col=\"target\",\n",
- " id_col=\"item_id\",\n",
- " timestamp_col=\"timestamp\",\n",
- "):\n",
- " \"\"\"\n",
- " Converts past and future DataFrames into JSON payload format for the Chronos endpoint.\n",
- "\n",
- " Args:\n",
- " past_df (pd.DataFrame): Historical data with `target_col`, `timestamp_col`, and `id_col`.\n",
- " future_df (pd.DataFrame, optional): Future covariates with `timestamp_col` and `id_col`.\n",
- " prediction_length (int): Number of future time steps to predict.\n",
- " freq (str): Pandas-compatible frequency of the time series.\n",
- " target_col (str): Column name for target values.\n",
- " id_col (str): Column name for item IDs.\n",
- " timestamp_col (str): Column name for timestamps.\n",
- "\n",
- " Returns:\n",
- " dict: JSON payload formatted for the Chronos endpoint.\n",
- " \"\"\"\n",
- " past_df = past_df.sort_values([id_col, timestamp_col])\n",
- " if future_df is not None:\n",
- " future_df = future_df.sort_values([id_col, timestamp_col])\n",
- "\n",
- " covariate_cols = list(past_df.columns.drop([target_col, id_col, timestamp_col]))\n",
- " if covariate_cols and (future_df is None or not set(covariate_cols).issubset(future_df.columns)):\n",
- " raise ValueError(f\"If past_df contains covariates {covariate_cols}, they should also be present in future_df\")\n",
- "\n",
- " inputs = []\n",
- " for item_id, past_group in past_df.groupby(id_col):\n",
- " target_values = past_group[target_col].tolist()\n",
- "\n",
- " if len(target_values) < 5:\n",
- " raise ValueError(f\"Time series '{item_id}' has fewer than 5 observations.\")\n",
- "\n",
- " series_dict = {\n",
- " \"target\": target_values,\n",
- " \"item_id\": str(item_id),\n",
- " \"start\": past_group[timestamp_col].iloc[0].isoformat(),\n",
- " }\n",
- "\n",
- " if covariate_cols:\n",
- " series_dict[\"past_covariates\"] = past_group[covariate_cols].to_dict(orient=\"list\")\n",
- " future_group = future_df[future_df[id_col] == item_id]\n",
- " if len(future_group) != prediction_length:\n",
- " raise ValueError(\n",
- " f\"future_df must contain exactly {prediction_length=} values for each item_id from past_df \"\n",
- " f\"(got {len(future_group)=}) for {item_id=}\"\n",
- " )\n",
- " series_dict[\"future_covariates\"] = future_group[covariate_cols].to_dict(orient=\"list\")\n",
- "\n",
- " inputs.append(series_dict)\n",
- "\n",
- "\n",
- " return {\n",
- " \"inputs\": inputs,\n",
- " \"parameters\": {\"prediction_length\": prediction_length, \"freq\": freq},\n",
- " }"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "metadata": {},
- "outputs": [],
- "source": [
- "payload = convert_df_to_payload(\n",
- " past_df,\n",
- " future_df,\n",
- " prediction_length=prediction_length,\n",
- " freq=freq,\n",
- " target_col=\"unit_sales\",\n",
- ")"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "We can now send the payload to the endpoint."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 12,
- "metadata": {},
- "outputs": [],
- "source": [
- "response = predictor.predict(payload)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "Note how Chronos-Bolt generated predictions for >300 time series in the dataset (with covariates!) in less than 2 seconds, even when running on a small CPU instance.\n",
- "\n",
- "Finally, we can convert the response back to a long-format data frame."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 13,
- "metadata": {},
- "outputs": [],
- "source": [
- "def convert_response_to_df(response, freq=\"D\"):\n",
- " \"\"\"\n",
- " Converts a JSON response from the Chronos endpoint into a long-format DataFrame.\n",
- "\n",
- " Args:\n",
- " response (dict): JSON response containing forecasts.\n",
- " freq (str): Pandas-compatible frequency of the time series.\n",
- "\n",
- " Returns:\n",
- " pd.DataFrame: Long-format DataFrame with timestamps, item_id, and forecasted values.\n",
- " \"\"\"\n",
- " dfs = []\n",
- " for forecast in response[\"predictions\"]:\n",
- " forecast_df = pd.DataFrame(forecast).drop(columns=[\"start\"])\n",
- " forecast_df[\"timestamp\"] = pd.date_range(forecast[\"start\"], freq=freq, periods=len(forecast_df))\n",
- " dfs.append(forecast_df)\n",
- " return pd.concat(dfs)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "
\n",
- "\n",
- "
\n",
- " \n",
- "
\n",
- "
\n",
- "
mean
\n",
- "
0.1
\n",
- "
0.5
\n",
- "
0.9
\n",
- "
item_id
\n",
- "
timestamp
\n",
- "
\n",
- " \n",
- " \n",
- "
\n",
- "
0
\n",
- "
315.504037
\n",
- "
210.074945
\n",
- "
315.504037
\n",
- "
487.484408
\n",
- "
1062_101
\n",
- "
2018-06-11
\n",
- "
\n",
- "
\n",
- "
1
\n",
- "
315.364478
\n",
- "
200.272695
\n",
- "
315.364478
\n",
- "
508.145850
\n",
- "
1062_101
\n",
- "
2018-06-18
\n",
- "
\n",
- "
\n",
- "
2
\n",
- "
310.507265
\n",
- "
193.902630
\n",
- "
310.507265
\n",
- "
511.559740
\n",
- "
1062_101
\n",
- "
2018-06-25
\n",
- "
\n",
- "
\n",
- "
3
\n",
- "
317.322873
\n",
- "
200.051215
\n",
- "
317.322873
\n",
- "
525.013830
\n",
- "
1062_101
\n",
- "
2018-07-02
\n",
- "
\n",
- "
\n",
- "
4
\n",
- "
319.089405
\n",
- "
199.634549
\n",
- "
319.089405
\n",
- "
534.102518
\n",
- "
1062_101
\n",
- "
2018-07-09
\n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " mean 0.1 0.5 0.9 item_id timestamp\n",
- "0 315.504037 210.074945 315.504037 487.484408 1062_101 2018-06-11\n",
- "1 315.364478 200.272695 315.364478 508.145850 1062_101 2018-06-18\n",
- "2 310.507265 193.902630 310.507265 511.559740 1062_101 2018-06-25\n",
- "3 317.322873 200.051215 317.322873 525.013830 1062_101 2018-07-02\n",
- "4 319.089405 199.634549 319.089405 534.102518 1062_101 2018-07-09"
- ]
- },
- "execution_count": 14,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "forecast_df = convert_response_to_df(response, freq=freq)\n",
- "forecast_df.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {},
- "source": [
- "## Clean up the endpoint\n",
- "Don't forget to clean up resources when finished to avoid unnecessary charges."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "predictor.delete_predictor()"
- ]
- }
- ],
- "metadata": {
- "instance_type": "ml.t3.medium",
- "kernelspec": {
- "display_name": "base",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.11.10"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 4
-}
diff --git a/notebooks/deploy-chronos-to-amazon-sagemaker.ipynb b/notebooks/deploy-chronos-to-amazon-sagemaker.ipynb
new file mode 100644
index 0000000..27e678e
--- /dev/null
+++ b/notebooks/deploy-chronos-to-amazon-sagemaker.ipynb
@@ -0,0 +1,1425 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "0c7f9134",
+ "metadata": {},
+ "source": [
+ "# Deploy Chronos-2 to AWS with Amazon SageMaker"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3053768c",
+ "metadata": {},
+ "source": [
+ "This notebook shows how to deploy **Chronos-2** to AWS using **Amazon SageMaker**.\n",
+ "\n",
+ "### Why Deploy to SageMaker?\n",
+ "Running models locally works for experimentation, but production use cases need reliability, scale, and integration into existing workflows. For example, you may need to generate forecasts for thousands of time series on a regular schedule, or integrate forecasts into applications that serve many users. SageMaker lets you deploy Chronos-2 to the cloud and access it from anywhere.\n",
+ "\n",
+ "### Deployment Options\n",
+ "This notebook covers three deployment modes on SageMaker:\n",
+ "\n",
+ "1. **[Real-time Inference](https://docs.aws.amazon.com/sagemaker/latest/dg/realtime-endpoints.html)**\n",
+ " - ✅ Highest throughput, consistently low latency, supports both GPU and CPU instances\n",
+ " - ✅ Simple setup via JumpStart\n",
+ " - ❌ By default, you pay for the time the endpoint is running (can be configured to [scale to zero](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling-zero-instances.html))\n",
+ "\n",
+ "2. **[Serverless Inference (CPU only)](https://docs.aws.amazon.com/sagemaker/latest/dg/serverless-endpoints.html)**\n",
+ " - ✅ Pay only for active inference time, no infrastructure management\n",
+ " - ✅ Cost-efficient for intermittent or unpredictable traffic\n",
+ " - ❌ Cold start latency on first request after idle, lowest throughput of all options\n",
+ " - ❌ More complex setup (requires repackaging model artifacts)\n",
+ "\n",
+ "3. **[Batch Transform](https://docs.aws.amazon.com/sagemaker/latest/dg/batch-transform.html)**\n",
+ " - ✅ Pay only for active compute time, no persistent infrastructure\n",
+ " - ✅ Cost-efficient for large-scale batch prediction jobs\n",
+ " - ❌ Initialization takes severa minutes for each job (not for real-time use), requires data in S3\n",
+ " - ❌ More complex setup (requires repackaging model artifacts)\n",
+ "\n",
+ "**Reference benchmark** on a dataset with 1M rows (2000 time series with 500 observations each) and prediction length of 28:\n",
+ "| Mode | Instance | Inference time (s) |\n",
+ "|------|----------|------|\n",
+ "| Real-time (GPU) | ml.g5.2xlarge | 18 |\n",
+ "| Real-time (CPU) | ml.c5.4xlarge | 50 |\n",
+ "| Serverless | 6GB memory | 120 |\n",
+ "| Batch Transform | ml.c5.4xlarge | 60 (+200s setup) |\n",
+ "\n",
+ "We recommend starting with **Real-time Inference** as it offers the simplest setup and highest throughput. Consider Serverless or Batch Transform when you need to optimize costs and don't require GPU acceleration.\n",
+ "\n",
+ "For a complete specification of all supported request parameters, see the **Endpoint API Reference** at the end of this notebook."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "78b40323",
+ "metadata": {},
+ "source": [
+ "
\n",
+ "ℹ️ New to Chronos-2? \n",
+ "For an overview of Chronos-2 capabilities (univariate, multivariate, covariates), see the Chronos-2 Quick Start notebook.\n",
+ "
\n",
+ "⚠️ Looking for Chronos-Bolt or original Chronos? \n",
+ "This notebook covers Chronos-2, the latest and recommended model. For documentation on older models (Chronos-Bolt and original Chronos), see the legacy deployment walkthrough.\n",
+ "