-
Notifications
You must be signed in to change notification settings - Fork 63
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit f8e5dfc
Showing
54 changed files
with
8,748 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,161 @@ | ||
# Byte-compiled / optimized / DLL files | ||
__pycache__/ | ||
*.py[cod] | ||
*$py.class | ||
|
||
# C extensions | ||
*.so | ||
|
||
# Distribution / packaging | ||
.Python | ||
build/ | ||
develop-eggs/ | ||
dist/ | ||
downloads/ | ||
eggs/ | ||
.eggs/ | ||
lib/ | ||
lib64/ | ||
parts/ | ||
sdist/ | ||
var/ | ||
wheels/ | ||
pip-wheel-metadata/ | ||
share/python-wheels/ | ||
*.egg-info/ | ||
.installed.cfg | ||
*.egg | ||
MANIFEST | ||
|
||
# PyInstaller | ||
# Usually these files are written by a python script from a template | ||
# before PyInstaller builds the exe, so as to inject date/other infos into it. | ||
*.manifest | ||
*.spec | ||
|
||
# Installer logs | ||
pip-log.txt | ||
pip-delete-this-directory.txt | ||
|
||
# Unit test / coverage reports | ||
htmlcov/ | ||
.tox/ | ||
.nox/ | ||
.coverage | ||
.coverage.* | ||
.cache | ||
nosetests.xml | ||
coverage.xml | ||
*.cover | ||
*.py,cover | ||
.hypothesis/ | ||
.pytest_cache/ | ||
|
||
# Translations | ||
*.mo | ||
*.pot | ||
|
||
# Django stuff: | ||
*.log | ||
local_settings.py | ||
db.sqlite3 | ||
db.sqlite3-journal | ||
|
||
# Flask stuff: | ||
instance/ | ||
.webassets-cache | ||
|
||
# Scrapy stuff: | ||
.scrapy | ||
|
||
# Sphinx documentation | ||
docs/_build/ | ||
|
||
# PyBuilder | ||
target/ | ||
|
||
# Jupyter Notebook | ||
.ipynb_checkpoints | ||
|
||
# IPython | ||
profile_default/ | ||
ipython_config.py | ||
|
||
# pyenv | ||
.python-version | ||
|
||
# pipenv | ||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. | ||
# However, in case of collaboration, if having platform-specific dependencies or dependencies | ||
# having no cross-platform support, pipenv may install dependencies that don't work, or not | ||
# install all needed dependencies. | ||
#Pipfile.lock | ||
|
||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow | ||
__pypackages__/ | ||
|
||
# Celery stuff | ||
celerybeat-schedule | ||
celerybeat.pid | ||
|
||
# SageMath parsed files | ||
*.sage.py | ||
|
||
# Environments | ||
.env | ||
.venv | ||
env/ | ||
venv/ | ||
ENV/ | ||
env.bak/ | ||
venv.bak/ | ||
|
||
# Spyder project settings | ||
.spyderproject | ||
.spyproject | ||
|
||
# Rope project settings | ||
.ropeproject | ||
|
||
# mkdocs documentation | ||
/site | ||
|
||
# mypy | ||
.mypy_cache/ | ||
.dmypy.json | ||
dmypy.json | ||
|
||
# Pyre type checker | ||
.pyre/ | ||
/scripts/long_term_forecast/Traffic_script/PatchTST1.sh | ||
/backups/ | ||
/result.xlsx | ||
/~$result.xlsx | ||
/Time-Series-Library.zip | ||
/temp.sh | ||
|
||
.idea | ||
/tv_result.xlsx | ||
/test.py | ||
/m4_results/ | ||
/test_results/ | ||
/PatchTST_results.xlsx | ||
/seq_len_long_term_forecast/ | ||
/progress.xlsx | ||
/scripts/short_term_forecast/PatchTST_M4.sh | ||
/run_tv.py | ||
|
||
/scripts/long_term_forecast/ETT_tv_script/ | ||
/dataset/ | ||
data_factory_all.py | ||
data_loader_all.py | ||
/scripts/short_term_forecast/tv_script/ | ||
/exp/exp_short_term_forecasting_tv.py | ||
/exp/exp_long_term_forecasting_tv.py | ||
/timesnetv2.xlsx | ||
/scripts/anomaly_detection/tmp/ | ||
/scripts/imputation/tmp/ | ||
/utils/self_tools.py | ||
|
||
checkpoints | ||
logs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2024 | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,134 @@ | ||
# Unified Time Series Model | ||
|
||
[**Project Page**](https://zitniklab.hms.harvard.edu/projects/UniTS/) | [**Paper link**]() | ||
|
||
UniTS is a unified time series model that can process various tasks across multiple domains with shared parameters and does not have any task-specific modules. | ||
|
||
Authors: [Shanghua Gao](https://shgao.site/) [Teddy Koker](https://teddykoker.com) [Owen Queen](https://owencqueen.github.io/) [Thomas Hartvigsen](https://www.tomhartvigsen.com/) [Theodoros Tsiligkaridis](https://sites.google.com/view/theo-t) [Marinka Zitnik](https://zitniklab.hms.harvard.edu/) | ||
|
||
## Overview | ||
Foundation models, especially LLMs, are profoundly transforming deep learning. Instead of training many task-specific models, we can adapt a single pretrained model to many tasks via few-shot prompting or fine-tuning. However, current foundation models apply to sequence data but not to time series, which present unique challenges due to the inherent diverse and multi-domain time series datasets, diverging task specifications across forecasting, classification and other types of tasks, and the apparent need for task-specialized models. | ||
|
||
We developed UniTS, a unified time series model that supports a universal task specification, accommodating classification, forecasting, imputation, and anomaly detection tasks. This is achieved through a novel unified network backbone, which incorporates sequence and variable attention along with a dynamic linear operator and is trained as a unified model. | ||
|
||
Across 38 multi-domain datasets, UniTS demonstrates superior performance compared to task-specific models and repurposed natural language-based LLMs. UniTS exhibits remarkable zero-shot, few-shot, and prompt learning capabilities when evaluated on new data domains and tasks. | ||
|
||
<p align="center"> | ||
<img src="https://zitniklab.hms.harvard.edu/img/UniTS-1.png" alt="UniTS-1" width="500"> | ||
</p> | ||
|
||
## Setups | ||
|
||
### 1. Requirements | ||
Install Pytorch2.0+ and the required packages. | ||
``` | ||
pip install -r requirements.txt | ||
``` | ||
|
||
### 2. Prepare data | ||
``` | ||
bash download_data_all.sh | ||
``` | ||
Datasets configs for different multi-task settings are shown in `.ymal` files of the `data_provider` folder. | ||
|
||
By default, all experiments follow the multi-task setting where one UniTS model is jointly trained on mulitple datasets. | ||
|
||
### 3. Train and evaluate model | ||
|
||
#### 1. Multi-task learning on forecasting and classification tasks: | ||
|
||
- Pretraining + Prompt learning | ||
``` | ||
bash ./scripts/pretrain_prompt_learning/UniTS_pretrain_x128.sh | ||
``` | ||
|
||
- Supervised learning | ||
``` | ||
bash ./scripts/supervised_learning/UniTS_supervised.sh | ||
``` | ||
|
||
#### 2. Few-shot transfer learning on new forecasting and classification tasks: | ||
|
||
**Note: Please follow the instruction in following training scripts to get the pretrained ckpt first.** | ||
|
||
- Finetuning | ||
``` | ||
# please set the pretrianed model path in the script. | ||
bash ./scripts/few_shot_newdata/UniTS_finetune_few_shot_newdata_pct20.sh | ||
``` | ||
|
||
- Prompt tuning | ||
``` | ||
# please set the pretrianed model path in the script. | ||
bash ./scripts/few_shot_newdata/UniTS_finetune_few_shot_newdata_pct20.sh | ||
``` | ||
|
||
#### 3. Few-shot transfer learning on anomaly detection tasks: | ||
- Finetuning | ||
``` | ||
# please set the pretrianed model path in the script. | ||
bash ./scripts/few_shot_anomaly_detection/UniTS_finetune_few_shot_anomaly_detection.sh | ||
``` | ||
- Prompt tuning | ||
``` | ||
# please set the pretrianed model path in the script. | ||
bash ./scripts/few_shot_anomaly_detection/UniTS_prompt_tuning_few_shot_anomaly_detection.sh | ||
``` | ||
|
||
#### 4. Few-shot transfer learning on imputation tasks: | ||
- Finetuning | ||
``` | ||
# please set the pretrianed model path in the script. | ||
bash ./scripts/few_shot_imputation/UniTS_finetune_few_shot_imputation_mask050.sh | ||
``` | ||
|
||
- Prompt tuning | ||
``` | ||
# please set the pretrianed model path in the script. | ||
bash ./scripts/few_shot_imputation/UniTS_prompt_tuning_few_shot_imputation_mask050.sh | ||
``` | ||
|
||
#### 5. Zero-shot learning on new forecasting length: | ||
``` | ||
# please set the pretrianed model path in the script. | ||
bash ./scripts/zero_shot/UniTS_forecast_new_length_unify.sh | ||
``` | ||
|
||
#### 6. Zero-shot learning on new forecasting datasets: | ||
``` | ||
# A special verison of UniTS with shared prompt/mask tokens needs to be trained for this setting. | ||
bash ./scripts/zero_shot/UniTS_zeroshot_newdata.sh | ||
``` | ||
|
||
## Use UniTS on your own data. | ||
UniTS is a highly flexible unified time series model, supporting tasks such as forecasting, classification, imputation, and anomaly detection with a single shared model and shared weights. We provide a [Tutorial](Tutorial.md) to assist you in using your own data with UniTS. | ||
|
||
|
||
## Citation | ||
|
||
``` | ||
@article{gao2024building, | ||
title={UniTS: Building a Unified Time Series Model}, | ||
author={Gao, Shanghua and Koker, Teddy and Queen, Owen and Hartvigsen, Thomas and Tsiligkaridis, Theodoros and Zitnik, Marinka}, | ||
journal={arXiv}, | ||
url={}, | ||
year={2024} | ||
} | ||
``` | ||
|
||
## Acknowledgement | ||
This codebase is built based on the [Time-Series-Library](https://github.com/thuml/Time-Series-Library). Thanks! | ||
|
||
## Disclaimer | ||
|
||
DISTRIBUTION STATEMENT: Approved for public release. Distribution is unlimited. | ||
|
||
This material is based upon work supported by the Under Secretary of Defense for Research and Engineering under Air Force Contract No. FA8702-15-D-0001. Any opinions, findings, conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the Under Secretary of Defense for Research and Engineering. | ||
|
||
© 2024 Massachusetts Institute of Technology. | ||
|
||
Subject to FAR52.227-11 Patent Rights - Ownership by the contractor (May 2014) | ||
|
||
The software/firmware is provided to you on an As-Is basis | ||
|
||
Delivered to the U.S. Government with Unlimited Rights, as defined in DFARS Part 252.227-7013 or 7014 (Feb 2014). Notwithstanding any copyright notice, U.S. Government rights in this work are defined by DFARS 252.227-7013 or DFARS 252.227-7014 as detailed above. Use of this work other than as specifically authorized by the U.S. Government may violate any copyrights that exist in this work. |
Oops, something went wrong.