Releases: awslabs/gluonts
0.7.0
GluonTS adds improved support for PyTorch-based models, new options for existing models, and general improvements to components and tooling.
Breaking changes
This release comes with a few breaking changes (but for good reasons). In particular, models trained and serialized prior to 0.7.0 may not be de-serializable using 0.7.0.
- Changes in model components and abstractions:
- #1256 and #1206 contain significant changes to the
GluonEstimator
abstract class, as well asInstanceSplitter
andInstanceSampler
implementations. You are affected by this change only if you implemented custom models based onGluonEstimator
. The change makes it easier to define (and understand, in case you're reading the code) how fixed-length instances are to be sampled from the original dataset for training or validation purposes. Furthermore, this PR breaks data transformation into more explicit "pre-processing" steps (deterministic ones, e.g. feature engineering) vs "iteration" steps (possibly random, e.g. random training instance sampling), so that acache_data
option is now available in thetrain
method to have the pre-processed data cached to memory, and be iterated quicker, whenever it fits. - #1233 splits normalized/unnormalized time features from
gluonts.time_features
into distinct types. - #1223 updates the interface of
ISSM
types, making it easier to define custom ones e.g. by having a custom set of seasonality patterns. Related changes toDeepStateEstimator
enable these customizations when defining a DeepState model.
- #1256 and #1206 contain significant changes to the
- Changes in
Trainer
:- #1178 removes the
input_names
argument from the__call__
method. Now the provided data loaders are expected to produce batches containing only the fields that the network being trained consumes. This can be easily obtained by transforming the dataset withSelectFields
.
- #1178 removes the
- Package structure reorg:
- #1183 puts all MXNet-dependant modules under
gluonts.mx
, with some exceptions (gluonts.model
andgluonts.nursery
). With the new structure, one is not forced to install MXNet unless they specifically require modules that depend on it. - #1402 makes the
Evaluator
class lighter, by moving the evaluation metrics togluonts.evaluation.metrics
instead of having them as static methods of the class.
- #1183 puts all MXNet-dependant modules under
New features
PyTorch support:
- PyTorchPredictor serde (#1086)
- Add equality operator for PytorchPredictor (#1190)
- Allow Pytorch predictor to be trained and loaded on different devices (#1244)
- Add distribution-based forecast types for torch, output layers, tests (#1266)
- Add more distribution output classes for PyTorch, add tests (#1272)
- Add pytorch tutorial notebook (#1289)
Distributions:
- Zero Inflated Poisson Distribution (#1130)
- GenPareto cdf and quantile functions (#1142)
- Added quantile function based on cdf bisection (#1145)
- Add AffineTransformedDistribution (#1161)
Models:
- add estimator/predictor types for autogluon tabular (#1105)
- Added thetaf method to the R predictor (#1281)
- Adding neural ode code for lotka volterra and corresponding notebook (#1023)
- Added lightgbm support for QRX/Rotbaum (#1365)
- Deepar imputation model (#1380)
- Initial commit for GMM-TPP (#1397)
Datasets & tooling:
0.6.7
0.6.6
Backporting fixes:
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
Changelog
New Features:
Model averaging (#823)
add SampleForecast and Predictor objects for TPPs (#819)
Add temperature scaling to categorical distrubution (#792)
Representation module (#755)
New methods for missing value imputation (#843)
Add shuffling function (#873)
make distributions pickleable (#889)
Aggregate lag transformation (#886)
SimpleFeedForward to produce DistributionForecast (#870)
Added support for gzipped files. (#914)
MQCNN: Support for past dynamic features and scaling (#916)
Implemented model iteration averaging to reduce model variance (#901)
add nan support to simple feedforward model (#933)
Added timeout option for batch requests. (#931)
Implemented moving average (#926)
NanMixture: Distribution to model missing values (#913)
Added Rotbaum (#653)
DeepTPP: RNN-based temporal point processes model (#976)
Added logging of scored instances for batch-transform. (#1010)
Enable distribution output in seq2seq (#1008)
Implemented activation regularization (#955)
Adding mean absolute quantile loss to avoid the case of dividing by 0 as a possible HPO metric (#1012)
Inflated Beta Distributions (#1018)
Implement different dropout strategies (#963)
Adding support for num_forking
as MQ-CNN hp (#1022)
Generalised Pareto distribution (#1031)
Added use of supported quantiles in shell when QuantileForecastGenerator is used. (#1048)
PyTorch Predictor (#1051)
Add TFT model (#962)
ConvTrans Implementation (#961)
Add evaluation metrics for anomaly detection (#1065)
Add piecewise linear quantile function output with fixed knots (#1074)
include callback in trainer and example for warm starting (#1087)
initial pytorch distribution output class (#1082)
Glide (#995)
specialize plot method for QuantileForecast (#1114)
Bug fixess
Fixed disabling of tqdm. (#839)
Fix comparison of ParameterDict when non prefixed variables are in dict. (#859)
Fixing edge case of prediction length 1. (#867)
Frequency String for Pandas Timestamp (#884)
fix imports (#885)
Fixed invalid num_worker possibility. (#892)
Corrected the formula for the stddev of the MixtureDistribution. (#900)
Fix pathes in R for Windows. (#903)
Scale the negative binomial's gamma (#909)
Shape squeeze edge case bug fix (#911)
Use of \n to split lines in batch transform. (#920)
Fixing cardinality array when use_feat_static_cat = False but feat_static_cat present in dataset (#918)
Fix batch-transform case, where request is empty. (#927)
fix DeterministicOutput, add tests (#982)
Fixing the FileDataset case with caching off for num_workers calculation (#986)
Overriding early stopping for iteration-based averaging strategies (#993)
Bug Fixes, Warnings, and One-Hot Encodings for Rotbaum (#980)
Fixing case with only time features and yearly freq (#1002)
Fixed import of Trainer. (#1005)
Fixed DeepAR typing error (#1017)
Fix sampling for MixtureDistribution class (#1042)
MQ-CNN: Bound context_length by the max_ts_len - prediction_length (#1037)
Fix gamma nans (#1061)
Fix scaling for MQ-(C|R)NN when distribution outputs are used (#1070)
added value in support to mixture output (#1077)
fix Gamma distribution's NaN gradients for zero inputs (#1078)
Fix dataset.splitter max_history argument (#1085)
Fix max window (#1097)
Ignore NaN values during training and throw a warning (training got stuck before) (#1104)
Fix a few bugs about tensor shapes in default values for TFT implementation (#1093)
Fixes #1106 (#1125)
Breaking changes
Mqcnn rts (#668)
Changed dataset.splitter to use DataEntry instead of TimeSeriesItem (#890)
Refactoring data loading utilities (#898)
Removed TimeSeriesItem. (#904)
refactor imputation transformation (#907)
making backtest_metrics simpler (#924)
Moved get_seasonality from evaluation to time_feature. (#971)
Removed mxContext from core. (#977)
Other changes and improvements
Update bug_report.md (#835)
Dockerfile for R container added (#841)
Added mx module. (#876)
Adapted use of mx module. Applied isort. (#878)
Simplified AsNumpyArray. (#879)
Removed unused Transformation.estimate
. (#880)
Added README to shell. (#882)
Docs requirements (#883)
add documentation related to shuffle_buffer_length/ (#910)
Default QuantileForecast.mean to p50. (#930)
Addded trimming to encoded sagemaker parameters in shell package. (#917)
Shell: Fix writing of output/failure
file in case of error in provided hyper-parameters. (#942)
Pass listify_dataset as a hyperparameter through the shell (#934)
Evaluation metrics now stored in output folder (#938)
Make TrainEnv path
argument explicit. (#943)
Removing mp worker del method. (#944)
Fixed logical error in data_loder tests. (#951)
Pass multiprocessing parameters through the shell (#952)
Fix pandas requirement. (#967)
Fix shell.train
.
Moved Dockerfiles to examples/dockerfiles (#946)
Cleaned up unused imports. (#1007)
Fix docstrings for SimpleFeedForward (#1009)
Fix docstrings, enable distr_output in MQRNN (#1021)
Update README.md (#1024)
Update holidays version (#1033)
improved and simplified aggregate lag transformation (#1028)
Refactoring forecast generators and predictors for framework independence (#1052)
Improved logging for batch-transform. (#1059)
Reverting #1042 and adding shape assertions to the MixtureDistribution (#1058)
Using pad_to_size function to remove duplicate code in pad_arrays (#1047)
re-organized modules and imports (#1068)
speed labels_to_ranges using numba (#1071)
Fix numba warning; mask np.nan labels (#1072)
added PyTorch predictor example notebook (#1053)
refactor multiprocessing batcher to work with spawn method (#1080)
Using zero floating point tolerance in denominator rather than checkign for exact zero equality (#1079)
Fix FieldNames of Train/test splitter (#1083)
Added Stateful to serde. (#1088)
Added ty.checked decorator. (#1091)
update links in readme (#1090)
Adding test_quantiles hyperparameter to the shell to specify the quantiles for evaluation (#1096)
Refactored serde into a package. (#1100)
Refactored shell. (#1101)
Updated pytest to v5. (#1102)
cap pydantic version (#1115)
add item_id to forecast from seasonal naive (#1113)
reduce number of batches used in test (#1131)
fix pandas usage and remove version cap (#1132)
0.5.2
Backporting fixes:
- remove kwargs from hybrid_forward input name inference (#846)
- Fix the quantiles used to compute MSIS (#849)
- Fix to_time_series_item in splitter (#874)
- updated Pandas deprecation (#875)
- Updated Frequency String for Pandas Timestamp (#884)
- splitting features and uses DataEntry instead of TimeSeriesItem (#890)
- fix multiprocessing in backtest function (#915)
- Fix LDS distribution for the case where sequence_length==1 (#921)
- Defaulting MSIS to NaN when it can't be calculated. (#923)