Skip to content

Releases: Ladbaby/PyOmniTS

v1.3.2

21 Jan 13:02

Choose a tag to compare

✨ New Features

  • configs: --n_patches_list is newly added. commit
  • models: A new model, APN, has been newly added to PyOmniTS. APN's original code repository is based on PyOmniTS. Hyperparameters for MIMIC-III, PhysioNet'12, Human Activity, and USHCN strictly follow the original paper. The rest datasets are not evaluated in the original model, thus we only provide a set of default hyperparameters. If you want to evaluate APN on these datasets, you may search for its optimal performance via --sweep 1. commit

🪛 Refactoring

  • exp: Parameters provided to models' foward() are reordered, which only affects readability. commit

v1.3.1

09 Jan 04:07

Choose a tag to compare

✨ New Features

  • configs: --allow_tf32 is newly added, which speeds up training on modern GPUs with minor performance losses. commit
  • docs: uv is added as an option for package installations. commit
  • models: MOIRAI (commit) and PrimeNet (commit) have supported non-divisible patches.
  • tests: PyOmniTS now includes basic tests to ensure core functionality. commit

🐛 Bug Fixes

  • main: CUDA OOM handling is improved. commit
  • models:
    • TiDE incorrect handling of timestamps. commit
    • Ada-MSHyper now runs 13X faster than before. commit
  • scripts: --pred_len for regular time series datasets is now aligned with existing works. commit
  • tools: --test_params_flop cannot correctly save new metrics. commit

🪛 Refactoring

  • main: main.py is refactored for clearer logic. commit
  • misc: The package import style is unified using isort. commit

v1.3.0

24 Dec 09:30

Choose a tag to compare

Caution

BREAKING CHANGES

1. Experiment results folder structure

New argument --dataset_id is added to the folder structure:

  • old structure (since v1.1.0): storage/results/${DATASET_NAME}/${MODEL_NAME}/${MODEL_ID}/${SEQ_LEN}_${PRED_LEN}/%Y_%m%d_%H%M/iter0/eval_%Y_%m%d_%H%M
  • new structure (since v1.3.0): storage/results/${DATASET_NAME}/${DATASET_ID}/${MODEL_NAME}/${MODEL_ID}/${SEQ_LEN}_${PRED_LEN}/%Y_%m%d_%H%M/iter0/eval_%Y_%m%d_%H%M

We make this change to support broader range of datasets that may contain subsets, like 128 UCR time series classification datasets. commit

New Features

  • More detailed explanations for arguments in utils/configs.py. commit
  • download_file function provided in utils/tools.py now default to 'y' after 30s of timeout, preventing training process from getting stucked. commit
  • New warning messages for possibly incorrect --collate_fn. commit
  • New arguments --dataset_subset_name and --dataset_id added for future-proofing. commit
  • IMTS datasets (MIMIC_III, MIMIC_IV, P12, USHCN, HumanActivity) now support non-divisible combinations of --seq_len and --patch_len (e.g., --seq_len 36 --patch_len 10 ). commit
  • tPatchGNN now support the above non-divisible patches. commit

Bug Fixes

  • Warning messages for --batch_size improved during experiments. commit
  • Change default value of --train_val_loader_drop_last to 0. Now all samples are leveraged. commit
  • sample_ID for dataset USHCN can be incorrect previously. commit
  • MOIRAI (commit), tPatchGNN (commit), and Raindrop (commit) now work properly without dropping the last batch (inconsistent batch_size cases).

Refactoring

  • All launch scripts under scripts/ now rely on scripts/globals.sh: dataset_root_path and n_variables are provided by scripts/globals.sh, which helps us manage fixed information in one place and reduce duplicated contents across different scripts. commit
  • Contents in utils/configs.py and utils/ExpConfigs.py are now ordered alphabetically in each category. commit

Full Changelog: v1.2.4...v1.3.0

v1.2.4

15 Nov 05:25

Choose a tag to compare

Bug Fix

Caution

Action needed for users using MIMIC-IV preprocessing scripts provided by PyOmniTS from v1.2.1 to v1.2.3

From PyOmniTS version v1.2.1 to v1.2.3, preprocessing scripts for MIMIC-IV dataset under data/dependencies/MIMIC_IV/preprocess can yield incorrect results, causing class MIMIC_IV_Bilos2021 in data/dependencies/tsdm/datasets/mimic_iv_bilos2021.py to raise "incorrect raw data shape" error. This is fundamentally caused by incorrect numpy and pandas versions given in the get started document section 3.2.2 option 1. Affected users can follow these steps to get the corrected preprocessed data for dataset MIMIC-IV:

  1. Remove ~/.tsdm/datasets/MIMIC_IV_Bilos2021/timeseries.parquet.
  2. Follow the updated get started document section 3.2.2 option 1. Major changes are versions of Python, numpy, and pandas.

New Features

  • forward() functions of MSE, MAE, and CrossEntropyLoss under loss_fns/ folder now return an additional key "loss_reduction_none". They are equivalent to setting reduction="none" for PyTorch built-in loss functions. commit
  • Variable names for MIMIC III & IV datasets. commit

Full Changelog: v1.2.3...v1.2.4

v1.2.3

24 Oct 09:41

Choose a tag to compare

New Features

  • Automatic batch_size reduction when CUDA gets out of memory in training. commit
  • --save_cache_arrays 1 option can save the output of model during testing, and automatically recover from cache files after testing is interuptted. This is useful for some models that runs extremely slow during testing, which are vulnerable to server power cutoff. commit
  • download_file() function in utils/tools.py provides an easy and robust way to download weights/datasets from web. commit
  • HyperIMTS runs faster than before on fully observed time series. commit
  • Remove the data extraction procedure for .csv.gz files during MIMIC-III data preparation. commit
  • Add more detailed introduction for irregular time series datasets. commit

Bug fix

  • Hyperparameter search target changed to loss_val_best. commit
  • Get started documentation errors. commit

Refactoring

  • __getitem__ functions for irregular time series datasets all returns dictionaries instead of custom data structures, following a similar api as PyOmniTS. It should be noted that tensors from __getitem__ are still unpadded. commit

Full Changelog: v1.2.2...v1.2.3

v1.2.2

28 Sep 09:05

Choose a tag to compare

New Features

  • Hyperparameter searching is enhanced. PyOmniTS can now automatically discover the used hyperparameters (attributes in ExpConfigs) per model. This can avoid searching through unused configs, realizing model-specific hyperparameter searching in an elegant way. To declare the search space for hyperparameters in utils/ExpConfigs.py, write field metadata with "sweep" as the key and a list as the value:
    d_model: int = field(metadata={"sweep": [32, 64, 128, 256]})
    
    commit

Bug fix

  • Missing comma in exp/exp_main.py that causes unexpected error. commit
  • state_dict device error when testing. commit

Full Changelog: v1.2.1...v1.2.2

v1.2.1

08 Sep 12:47

Choose a tag to compare

New Features

  • Revised preprocessing scripts for MIMIC-III and MIMIC-IV have now been included in PyOmniTS! Corresponding get started documentation has also been updated. commit
  • current_epoch is added as an additional input arguments to models during training. commit

Bug fix

  • Sweep target has been corrected as validation loss. commit
  • Last batch won't be skipped now during testing, if the batch size is smaller than expected. commit
  • Data suffle within tsdm is disabled on dataset P12, MIMIC-III, and MIMIC-IV. PyOmniTS now handles the shuffle process instead. commit
  • Various models have supported d_model and n_layers configs.

Refactor

  • Redundant loops removed in shell scripts. commit

Full Changelog: v1.2.0...v1.2.1

v1.2.0

17 Jul 11:50

Choose a tag to compare

Bug fix

  • model_id related error when --test_flops 1 / --test_train_time 1 / --test_gpu_memory 1

Caution

BREAKING CHANGES

1. Loss function initialization

Loss functions now accept configs during initialization, aligning with the behavior of models. Also, exp_stage and model are now provided to loss functions as arguments during training and validation. These changes are made for future proofing.

Full Changelog: v1.1.0...v1.2.0

v1.1.0

30 Jun 08:27

Choose a tag to compare

Caution

BREAKING CHANGES

1. Experiment results folder structure

--model_id is separated as an independent folder, and timestamp %Y_%m%d_%H%M now includes year.

  • old structure: storage/results/${DATASET_NAME}/${MODEL_NAME}/${MODEL_ID}_${SEQ_LEN}_${PRED_LEN}/%m%d_%H%M/iter0/eval_%m%d_%H%M
  • new structure: storage/results/${DATASET_NAME}/${MODEL_NAME}/${MODEL_ID}/${SEQ_LEN}_${PRED_LEN}/%Y_%m%d_%H%M/iter0/eval_%Y_%m%d_%H%M

2. YAML configs folder structure

--model_id is added in the folder structure

  • old structure: configs/${MODEL_NAME}/${DATASET_NAME}.yaml
  • new structure: configs/${MODEL_NAME}/${MODEL_ID}/${DATASET_NAME}.yaml

3. model_id in scripts

model_id_name has been replaced with model_id, and by default model_id is the same as model_name. For a family of models like MOIRAI, model_id is a good option to distinguish its different variants(small, large, etc.).

Full Changelog: v1.0.0...v1.1.0

Initial release

21 Jun 10:27
09ee31f

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: https://github.com/Ladbaby/PyOmniTS/commits/v1.0.0