File size: 10,362 Bytes
a2223e5 2e843e9 1dde777 a2223e5 5618ec7 1dde777 5618ec7 1dde777 5618ec7 1dde777 5618ec7 1dde777 5618ec7 db12180 5618ec7 1dde777 db12180 1dde777 7fc13de 1dde777 7fc13de 1dde777 5618ec7 a2223e5 f623526 1dde777 f623526 1dde777 f623526 db12180 f623526 5618ec7 f623526 5618ec7 f623526 1dde777 f623526 a2223e5 1dde777 a2223e5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 |
---
license: mit
language:
- en
pipeline_tag: time-series-forecasting
tags:
- code
---
<div align="center">
<img alt="intro" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/ytpsIAr98keUvNouoOVmb.png" width="30%"/>
<h1> Aurora: Towards Universal Generative Multimodal Time Series Forecasting </h1>
The official code repo of our ICLR 26's paper: <a href="https://arxiv.org/pdf/2509.22295">Aurora: Towards Universal Generative Multimodal Time Series Forecasting</a>
[](https://arxiv.org/pdf/2509.22295) [](https://www.python.org/) [](https://pytorch.org/) 
</div>
## Introduction
Aurora is a highly capable multimodal time series foundation model. Based on the **Modality-Guided Multi-head Self-Attention** and **Prototype-Guided Flow Matching**, Aurora can effectively utilize the domain-specific knowledge contained in modalities and support generative probabilistic forecasting, thus covering versatile forecasting scenarios.
See **Figure 1**, to our best knowldege, Aurora is the first pretrained multimodal time series foundation model! Evaluated on three well-recognized benchmarks, including TimeMMD, TSFM-Bench, and ProbTS, Aurora is demonstrated the state-of-the-art.
<div align="center">
<img alt="intro" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/YdsPeh5mrn_lef19vQXfa.png" width="60%"/>
</div>
## Architecture
In this work, we pretrain Aurora in a cross-modality paradigm, which adopts Channel-Independence on time series data, and models corresponding multimodal interaction to inject domain knowledge. Note that the each variable of time series is first normalized through Instance Normalization to mitigate the value discrepancy. See **Figure 2**, Aurora mainly consists of two phases: 1) in Aurora Encoder, we tokenize and encode each modality into modal features, then fuse them to form multimodal representations; 2) in Aurora Decoder, we utilize a Condition Decoder to obtain the multimodal conditions of future tokens, leverage a Prototype Retreiver to retrieve the future prototypes based on the domain knowledge, and conduct flow matching on them to make generative probabilistic forecasts.
<div align="center">
<img alt="intro" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/d82jT96jiGD0QL9s8RYg-.png" width="100%"/>
</div>
## Quickstart
#### From pypi (recommended)
We have published Aurora on PyPi, **you can directly install it with one line of code!**
```shell
$ pip install aurora-model==0.1.0
```
Then you can use the Aurora model to make zero-shot probabilistic forecasting!
##### Unimodal Time Series Forecasting
```python
from aurora import load_model
import os
import torch
# os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
model = load_model()
# prepare input
batch_size, lookback_length = 1, 528
seqs = torch.randn(batch_size, lookback_length).cuda()
# Note that Aurora can generate multiple probable predictions
forecast_length = 96
num_samples = 100
# For inference_token_len, you can refer to LightGTS (Periodic Patching).
# We recommend to use the period length as the inference_token_len.
output = model.generate(inputs=seqs, max_output_length=forecast_length, num_samples=num_samples, inference_token_len=48)
# use raw predictions for mean/quantiles/confidence-interval estimation
print(output.shape)
```
##### Multimodal Time Series Forecasting
```python
from aurora import load_model
from einops import rearrange
import os
import torch
# os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
model = load_model()
tokenizer = model.tokenizer
# prepare input
batch_size, n_vars, lookback_length, max_text_length = 1, 10, 528, 200
seqs = torch.randn(batch_size, lookback_length, n_vars).cuda()
text = "1983-09-12: The Federal Register provides a uniform system for making available to the public regulations and legal notices issued by federal agencies in the United States."
tokenized_text = tokenizer(text, padding='max_length', truncation=True, max_length=max_text_length, return_tensors="pt")
text_input_ids = tokenized_text['input_ids'].cuda()
text_attention_mask = tokenized_text['attention_mask'].cuda()
text_token_type_ids = tokenized_text.get('token_type_ids', torch.zeros_like(text_input_ids)).cuda()
batch_input_ids = text_input_ids.repeat(n_vars, 1)
batch_attention_mask = text_attention_mask.repeat(n_vars, 1)
batch_token_type_ids = text_token_type_ids.repeat(n_vars, 1)
batch_x = rearrange(seqs, "b l c -> (b c) l")
# Note that Aurora can generate multiple probable predictions
forecast_length = 96
num_samples = 100
# For inference_token_len, you can refer to LightGTS (Periodic Patching).
# We recommend to use the period length as the inference_token_len.
output = model.generate(inputs=batch_x,text_input_ids=batch_input_ids,
text_attention_mask=batch_attention_mask,
text_token_type_ids=batch_token_type_ids,
max_output_length=forecast_length,
num_samples=num_samples,
inference_token_len=48)
# use raw predictions for mean/quantiles/confidence-interval estimation
print(output.shape)
```
#### From raw code
We release the original code of Aurora in this repo. You can also download the pretrained checkpoints in our [huggingface](https://huggingface.co/DecisionIntelligence/Aurora) repo and put them in the folder: aurora/.
If you want to pretrain an Aurora on your own time series corpus, you need to install the following important packages:
```shell
$ pip install torch==2.4.0
$ pip install torchvision==0.19.0
$ pip install transformers[torch]
```
```python
from huggingface_hub import snapshot_download
import os
import torch
# os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'
# --- Configuration ---
repo_id = "DecisionIntelligence/Aurora"
# Target directory for the download. "." represents the current working directory.
local_dir = "./work_dir"
# Optional: Set repo_type to "dataset" or "space" if you are not downloading a model.
repository_type = "model"
# ---------------------
# Ensure the local directory exists before starting the download
if not os.path.exists(local_dir):
os.makedirs(local_dir)
print(f"Created directory: {local_dir}")
print(f"Starting download from '{repo_id}' to '{local_dir}'...")
try:
# snapshot_download handles the download of all files in the repository
download_path = snapshot_download(
repo_id=repo_id,
local_dir=local_dir,
# Set to False to download actual files instead of symbolic links
local_dir_use_symlinks=False,
repo_type=repository_type,
# Use your HF access token for private/gated repositories
token=None
)
print(f"\nSuccess! All files downloaded to: {download_path}")
except Exception as e:
print(f"\nAn error occurred during download: {e}")
# Then you can easily make zero-shot forecasts using Aurora
from modeling_aurora import AuroraForPrediction
model = AuroraForPrediction.from_pretrained("./",trust_remote_code=True)
# prepare input
batch_size, lookback_length = 1, 528
seqs = torch.randn(batch_size, lookback_length).cuda()
# Note that Aurora can generate multiple probable predictions
forecast_length = 96
num_samples = 100
# For inference_token_len, you can refer to LightGTS (Periodic Patching).
# We recommend to use the period length as the inference_token_len.
output = model.generate(inputs=seqs, max_output_length=forecast_length, num_samples=num_samples, inference_token_len=48)
# use raw predictions for mean/quantiles/confidence-interval estimation
print(output.shape)
```
## Experiments
You should refer to our [github repo](https://github.com/decisionintelligence/Aurora) for the complete experimental pipelines. For benchmarking (TSFM-Bench, ProbTS, TimeMMD, TFB, and EPF), you can install additional packages based on the requirement files under folders, and the datasets can be fetched from this [link](https://drive.google.com/file/d/12tJk858WaoG7ZVSvUq8KU1oHfGNJrARF/view?usp=drive_link). All experimental results can be reproduced by running the scripts in the benchmark folder:
```shell
# TimeMMD
TimeMMD/scripts/run_aurora_timemmd_zero_shot.sh
# EPF
EPF/scripts/run_aurora_short_term_zero_shot.sh
# ProbTS
ProbTS/scripts/run_aurora_probts.sh
# TSFM-Bench
TFB/scripts/run_aurora_tfb.sh
# TFB univaraite
TFB/scripts/run_aurora_uni.sh
```
## Performance
**Aurora ahieves consistent state-of-the-art performance on these 5 benchmarks:**
<div align="center">
<img alt="arch" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/Vh0ENMXJWwiPkWvMeeftG.png" width="100%"/>
</div>
<div align="center">
<img alt="arch" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/2nPl7KumS6DU2lRzm8ACr.png" width="100%"/>
</div>
<div align="center">
<img alt="arch" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/glgp6HoirIEO3yWBQD2Hw.png" width="100%"/>
</div>
<div align="center">
<img alt="arch" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/RmOgS8recYalH-FjsfEOM.png" width="100%"/>
</div>
<div align="center">
<img alt="arch" src="https://cdn-uploads.huggingface.co/production/uploads/66276727368ec2a0b933772c/JatnUn_fSmD2eJdMPb68y.png" width="100%"/>
</div>
## Citation
If you find this repo useful, please cite our paper.
```latex
@inproceedings{wu2026aurora,
title = {Aurora: Towards Universal Generative Multimodal Time Series Forecasting},
author = {Wu, Xingjian and Jin, Jianxin and Qiu, Wanghui and Chen, Peng and Shu, Yang and Yang, Bin and Guo, Chenjuan},
booktitle = {ICLR},
year = {2026}
}
```
## Contact
If you have any questions or suggestions, feel free to contact:
- [Xingjian Wu](https://ccloud0525.github.io/) ([xjwu@stu.ecnu.edu.cn](mailto:xjwu@stu.ecnu.edu.cn))
- [Peng Chen](https://pengchen12.github.io/) (pchen@stu.ecnu.edu.cn)
Or describe it in Issues.
|