facebookresearch / Kats

Kats, a kit to analyze time series data, a lightweight, easy-to-use, generalizable, and extendable framework to perform time series analysis, from understanding the key statistics and characteristics, detecting change points and anomalies, to forecasting future trends.
MIT License
4.88k stars 534 forks source link

Parameter tuning package broken due to gpytorch 1.9.0 #283

Closed wenshutang closed 1 year ago

wenshutang commented 1 year ago

I am not able to import kats.utils.time_series_parameter_tuning on pgytorch==1.9.0

import kats.utils.time_series_parameter_tuning as tpt

WARNING:root:kats.utils.time_series_parameter_tuning requires ax-platform be installed
WARNING:root:kats.models.metalearner.get_metadata requires ax-platform be installed
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/kats/utils/time_series_parameter_tuning.py", line 31, in <module>
    from ax import Arm, ComparisonOp, Data, OptimizationConfig, SearchSpace
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/__init__.py", line 33, in <module>
    from ax.modelbridge import Models
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/modelbridge/__init__.py", line 9, in <module>
    from ax.modelbridge.base import ModelBridge
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/modelbridge/base.py", line 38, in <module>
    from ax.modelbridge.transforms.base import Transform
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/modelbridge/transforms/base.py", line 16, in <module>
    from ax.models.types import TConfig
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/models/__init__.py", line 8, in <module>
    from ax.models.random.sobol import SobolGenerator
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/models/random/sobol.py", line 12, in <module>
    from ax.models.model_utils import tunable_feature_indices
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/models/model_utils.py", line 19, in <module>
    from ax.models.numpy_base import NumpyModel
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/models/numpy_base.py", line 13, in <module>
    from ax.models.types import TConfig
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/ax/models/types.py", line 10, in <module>
    from botorch.acquisition import AcquisitionFunction
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/__init__.py", line 7, in <module>
    from botorch import (
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/acquisition/__init__.py", line 7, in <module>
    from botorch.acquisition.acquisition import (
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/acquisition/acquisition.py", line 18, in <module>
    from botorch.models.model import Model
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/models/__init__.py", line 7, in <module>
    from botorch.models.approximate_gp import (
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/models/approximate_gp.py", line 35, in <module>
    from botorch.models.gpytorch import GPyTorchModel
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/models/gpytorch.py", line 23, in <module>
    from botorch.acquisition.objective import PosteriorTransform
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/acquisition/objective.py", line 21, in <module>
    from botorch.utils import apply_constraints
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/utils/__init__.py", line 8, in <module>
    from botorch.utils.feasible_volume import estimate_feasible_volume
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/utils/feasible_volume.py", line 11, in <module>
    import botorch.models.model as model
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/models/model.py", line 22, in <module>
    from botorch.models.utils import fantasize as fantasize_flag
  File "/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/botorch/models/utils.py", line 23, in <module>
    from gpytorch.utils.broadcasting import _mul_broadcast_shape
ImportError: cannot import name '_mul_broadcast_shape' from 'gpytorch.utils.broadcasting' (/Users/wen.tang/.pyenv/versions/3.8.11/lib/python3.8/site-packages/gpytorch/utils/broadcasting.py)

I was able to work around this with:

pip install gpytorch==1.8.1

Overall, I enjoy using kats, it provides a nice abstraction for TS forecasting. However, the ease of use has been offset by way too many dependency issues. The package is so clunky, and number of dependencies too large.

rohanfb commented 1 year ago

This was fixed a while back (https://github.com/facebookresearch/Kats/blob/main/test_requirements.txt#L4), but we haven't yet put out the latest release. The main build will be operational shortly, and once it is, you should be able to use it and have a much smoother experience.