8000 [ENH] interface to TimesFM Forecaster by geetu040 · Pull Request #6571 · sktime/sktime · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

[ENH] interface to TimesFM Forecaster #6571

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 29 commits into from
Aug 27, 2024
Merged

[ENH] interface to TimesFM Forecaster #6571

merged 29 commits into from
Aug 27, 2024

Conversation

geetu040
Copy link
Contributor
@geetu040 geetu040 commented Jun 10, 2024

Reference Issues/PRs

Fixes #6408

What does this implement/fix? Explain your changes.

This Pull Request implements TimesFM (Time Series Foundation Model), which is a pretrained time-series foundation model developed by Google Research for time-series forecasting.

@geetu040
Copy link
Contributor Author

Problems with the implementation

Official Package

There exists no official package for timesfm on pypi. It is downloaded from the official github source git+https://github.com/google-research/timesfm.git.
Although there exists a package on pypi by the name of timesfm which is a part of a pull request on the official code that is yet to be merged, therefore it is advised to not download from there.

Installing Library

The dependencies used by timesfm are very strict to the python environment

On installation, gives this error if python>=3.11

ERROR: Could not find a version that satisfies the requirement lingvo==0.12.7 (from paxml) (from versions: none)
ERROR: No matching distribution found for lingvo==0.12.7

Therefore you need to have python<3.11 to install timesfm from git+https://github.com/google-research/timesfm.git

Hardware Errors

Even if you set the particular environment and install the library successfully you will run into prolix errors

I am running this code from the official documentation on Ubuntu 24.04 LTS with python==3.10.0

import timesfm

tfm = timesfm.TimesFm(
    context_len=<context>,
    horizon_len=<horizon>,
    input_patch_len=32,
    output_patch_len=128,
    num_layers=20,
    model_dims=1280,
    backend=<backend>,
)
tfm.load_from_checkpoint(repo_id="google/timesfm-1.0-200m")

Resulting with this error primarily

  File "/home/geetu/miniconda3/envs/310/lib/python3.10/asyncio/locks.py", line 234, in __init__
    raise ValueError("loop argument must agree with lock")
ValueError: loop argument must agree with lock

If I try to fix and debug around this error, I am stuck with more errors mentioned below
1

 1 leaked semaphore objects to clean up at shutdown
  warnings.warn('resource_tracker: There appear to be %d '

2

2024-06-06 17:16:08.597909: W tensorflow/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared object file: No such file or directory
Segmentation fault (core dumped)

Google Colab

Although the code works perfectly fine on google colab with no library installation errors or runtime errors.
Here is the code on google colab

@fkiraly fkiraly changed the title implements TimesFM Forecaster [ENH] interface to TimesFM Forecaster Jun 11, 2024
@fkiraly fkiraly added interfacing algorithms Interfacing existing algorithms/estimators from third party packages module:forecasting forecasting module: forecasting, incl probabilistic and hierarchical forecasting enhancement Adding new functionality labels Jun 11, 2024
@geetu040
Copy link
Contributor Author

@fkiraly can you please assign me this, I will continue to work as the blocking issue of package not available on pypi has been resolved.

@geetu040
Copy link
Contributor Author

Although timesfm in now downloadable from PyPI and is now working locally for me yet it is leading to dependency errors on github actions.

timesfm requires python==3.10.x. So I have added it to pyproject.toml accordingly with and without specifying the version for timesfm.

while specifying version for timesfm: 'timesfm>=1.0.1; python_version < "3.11" and python_version >= "3.10"' pip is failing to resolve dependencies https://github.com/sktime/sktime/actions/runs/9962560038/job/27528538631#step:7:1

2024-07-16T19:51:13.9155689Z Collecting timesfm>=1.0.1 (from sktime==0.31.0)
2024-07-16T19:51:13.9987451Z   Downloading timesfm-1.0.1-py3-none-any.whl.metadata (9.3 kB)
.
.
.
.
2024-07-16T19:51:35.0819486Z Collecting paxml==1.4.0 (from timesfm>=1.0.1->sktime==0.31.0)
2024-07-16T19:51:35.0869200Z   Downloading paxml-1.4.0-py3-none-any.whl.metadata (1.3 kB)
2024-07-16T19:51:35.0990043Z INFO: pip is looking at multiple versions of timesfm to determine which version is compatible with other requirements. This could take a while.
2024-07-16T19:51:35.1009432Z Collecting tbats>=1.1 (from sktime==0.31.0)
2024-07-16T19:51:35.1057270Z   Downloading tbats-1.1.2-py3-none-any.whl.metadata (3.8 kB)
2024-07-16T19:51:35.1346354Z   Downloading tbats-1.1.1-py3-none-any.whl.metadata (3.8 kB)
2024-07-16T19:51:35.1497311Z   Downloading tbats-1.1.0-py3-none-any.whl.metadata (3.8 kB)
2024-07-16T19:51:35.1615200Z Collecting skpro<2.5.0,>=2 (from sktime==0.31.0)
2024-07-16T19:51:36.0197894Z   Downloading skpro-2.4.0-py3-none-any.whl.metadata (15 kB)
2024-07-16T19:51:36.0674612Z INFO: pip is still looking at multiple versions of timesfm to determine which version is compatible with other requirements. This could take a while.
2024-07-16T19:51:36.0732884Z   Downloading skpro-2.3.2-py3-none-any.whl.metadata (15 kB)
2024-07-16T19:51:36.3096005Z   Downloading skpro-2.3.1-py3-none-any.whl.metadata (15 kB)
2024-07-16T19:51:36.3296387Z INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
.
.
.
.
2024-07-16T20:13:46.0616959Z ERROR: Exception:
2024-07-16T20:13:46.0617763Z Traceback (most recent call last):
2024-07-16T20:13:46.0627125Z   File "C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\site-packages\pip\_internal\cli\base_command.py", line 179, in exc_logging_wrapper
2024-07-16T20:13:46.0628080Z     status = run_func(*args)
2024-07-16T20:13:46.0629090Z   File "C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\site-packages\pip\_internal\cli\req_command.py", line 67, in wrapper
2024-07-16T20:13:46.0629951Z     return func(self, options, args)
2024-07-16T20:13:46.0630860Z   File "C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\site-packages\pip\_internal\commands\install.py", line 377, in run
2024-07-16T20:13:46.0631705Z     requirement_set = resolver.resolve(
2024-07-16T20:13:46.0632750Z   File "C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\site-packages\pip\_internal\resolution\resolvelib\resolver.py", line 95, in resolve
2024-07-16T20:13:46.0633758Z     result = self._result = resolver.resolve(
2024-07-16T20:13:46.0634719Z   File "C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 546, in resolve
2024-07-16T20:13:46.0635625Z     state = resolution.resolve(requirements, max_rounds=max_rounds)
2024-07-16T20:13:46.0636599Z   File "C:\hostedtoolcache\windows\Python\3.10.11\x64\lib\site-packages\pip\_vendor\resolvelib\resolvers.py", line 457, in resolve
2024-07-16T20:13:46.0637397Z     raise ResolutionTooDeep(max_rounds)
2024-07-16T20:13:46.0637864Z pip._vendor.resolvelib.resolvers.ResolutionTooDeep: 200000

without specifying version for timesfm 'timesfm; python_version < "3.11" and python_version >= "3.10"' it is struggling to find a compatible version and later running into errors https://github.com/sktime/sktime/actions/runs/9960212179/job/27519061590#step:7:1

2024-07-16T16:03:16.8909695Z Collecting timesfm (from sktime==0.31.0)
2024-07-16T16:03:16.8993658Z   Downloading timesfm-0.1.18-py3-none-any.whl.metadata (9.3 kB)
2024-07-16T16:03:16.9156698Z   Downloading timesfm-0.1.17-py3-none-any.whl.metadata (9.3 kB)
2024-07-16T16:03:16.9330105Z   Downloading timesfm-0.1.16-py3-none-any.whl.metadata (8.4 kB)
2024-07-16T16:03:16.9492682Z   Downloading timesfm-0.1.15-py3-none-any.whl.metadata (8.7 kB)
2024-07-16T16:03:16.9651803Z   Downloading timesfm-0.1.7-py3-none-any.whl.metadata (12 kB)
2024-07-16T16:03:16.9814496Z   Downloading timesfm-0.1.6-py3-none-any.whl.metadata (12 kB)
2024-07-16T16:03:16.9852469Z INFO: pip is still looking at multiple versions of timesfm to determine which version is compatible with other requirements. This could take a while.
2024-07-16T16:03:16.9987937Z   Downloading timesfm-0.1.5-py3-none-any.whl.metadata (11 kB)
2024-07-16T16:03:17.0147228Z   Downloading timesfm-0.1.4-py3-none-any.whl.metadata (11 kB)
2024-07-16T16:03:17.0315467Z   Downloading timesfm-0.1.3-py3-none-any.whl.metadata (9.3 kB)
2024-07-16T16:03:17.0481094Z   Downloading timesfm-0.1.2-py3-none-any.whl.metadata (9.3 kB)
2024-07-16T16:03:17.0648450Z   Downloading timesfm-0.1.1-py3-none-any.whl.metadata (9.3 kB)
2024-07-16T16:03:17.0686491Z INFO: This is taking longer than usual. You might need to provide the dependency resolver with stricter constraints to reduce runtime. See https://pip.pypa.io/warnings/backtracking for guidance. If you want to abort this run, press Ctrl + C.
2024-07-16T16:03:17.1625252Z   Downloading timesfm-0.0.12-py3-none-any.whl.metadata (8.7 kB)
.
.
.
.
.
2024-07-16T16:03:26.3496757Z   Installing build dependencies: started
2024-07-16T16:03:27.5382655Z   Installing build dependencies: finished with status 'done'
2024-07-16T16:03:27.5389111Z   Getting requirements to build wheel: started
2024-07-16T16:03:27.7012033Z   Getting requirements to build wheel: finished with status 'error'
2024-07-16T16:03:27.7073211Z   error: subprocess-exited-with-error
2024-07-16T16:03:27.7073809Z   
2024-07-16T16:03:27.7074548Z   × Getting requirements to build wheel did not run successfully.
2024-07-16T16:03:27.7075617Z   │ exit code: 1
2024-07-16T16:03:27.7076119Z   ╰─> [58 lines of output]
2024-07-16T16:03:27.7077045Z       <string>:4: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated.
2024-07-16T16:03:27.7078050Z       !!
2024-07-16T16:03:27.7078395Z       
2024-07-16T16:03:27.7078863Z               ********************************************************************************
2024-07-16T16:03:27.7079718Z               Requirements should be satisfied by a PEP 517 installer.
2024-07-16T16:03:27.7080862Z               If you are using pip, you can try `pip install --use-pep517`.
2024-07-16T16:03:27.7081793Z               ********************************************************************************
2024-07-16T16:03:27.7082421Z       
2024-07-16T16:03:27.7082731Z       !!
2024-07-16T16:03:27.7083173Z       WARNING: The wheel package is not available.
2024-07-16T16:03:27.7083878Z       Traceback (most recent call last):
2024-07-16T16:03:27.7094741Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 35, in __init__
2024-07-16T16:03:27.7096384Z           parsed = _parse_requirement(requirement_string)
2024-07-16T16:03:27.7098219Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_parser.py", line 64, in parse_requirement
2024-07-16T16:03:27.7099894Z           return _parse_requirement(Tokenizer(source, rules=DEFAULT_RULES))
2024-07-16T16:03:27.7101769Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_parser.py", line 82, in _parse_requirement
2024-07-16T16:03:27.7103454Z           url, specifier, marker = _parse_requirement_details(tokenizer)
2024-07-16T16:03:27.7105824Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_parser.py", line 126, in _parse_requirement_details
2024-07-16T16:03:27.7107457Z           marker = _parse_requirement_marker(
2024-07-16T16:03:27.7109391Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_parser.py", line 147, in _parse_requirement_marker
2024-07-16T16:03:27.7110958Z           tokenizer.raise_syntax_error(
2024-07-16T16:03:27.7112723Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py", line 165, in raise_syntax_error
2024-07-16T16:03:27.7114203Z           raise ParserSyntaxError(
2024-07-16T16:03:27.7115637Z       pkg_resources._vendor.packaging._tokenizer.ParserSyntaxError: Expected end or semicolon (after version specifier)
2024-07-16T16:03:27.7116778Z           cython>=0.x
2024-07-16T16:03:27.7117186Z                 ~~~^
2024-07-16T16:03:27.7117566Z       
2024-07-16T16:03:27.7118183Z       The above exception was the direct cause of the following exception:
2024-07-16T16:03:27.7118967Z       
2024-07-16T16:03:27.7119403Z       Traceback (most recent call last):
2024-07-16T16:03:27.7121320Z         File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 353, in <module>
2024-07-16T16:03:27.7122794Z           main()
2024-07-16T16:03:27.7124412Z         File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 335, in main
2024-07-16T16:03:27.7126039Z           json_out['return_val'] = hook(**hook_input['kwargs'])
2024-07-16T16:03:27.7127835Z         File "/opt/hostedtoolcache/Python/3.10.14/x64/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py", line 118, in get_requires_for_build_wheel
2024-07-16T16:03:27.7129159Z           return hook(config_settings)
2024-07-16T16:03:27.7130785Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 327, in get_requires_for_build_wheel
2024-07-16T16:03:27.7131711Z           return self._get_build_requires(config_settings, requirements=[])
2024-07-16T16:03:27.7132743Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 297, in _get_build_requires
2024-07-16T16:03:27.7133506Z           self.run_setup()
2024-07-16T16:03:27.7134262Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 497, in run_setup
2024-07-16T16:03:27.7134997Z           super().run_setup(setup_script=setup_script)
2024-07-16T16:03:27.7135844Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/setuptools/build_meta.py", line 313, in run_setup
2024-07-16T16:03:27.7136537Z           exec(code, locals())
2024-07-16T16:03:27.7136876Z         File "<string>", line 4, in <module>
2024-07-16T16:03:27.7137732Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/setuptools/dist.py", line 641, in fetch_build_eggs
2024-07-16T16:03:27.7138477Z           return _fetch_build_eggs(self, requires)
2024-07-16T16:03:27.7139351Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/setuptools/installer.py", line 38, in _fetch_build_eggs
2024-07-16T16:03:27.7140153Z           resolved_dists = pkg_resources.working_set.resolve(
2024-07-16T16:03:27.7141011Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/__init__.py", line 866, in resolve
2024-07-16T16:03:27.7141779Z           requirements = list(requirements)[::-1]
2024-07-16T16:03:27.7142614Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3435, in __init__
2024-07-16T16:03:27.7143335Z           super().__init__(requirement_string)
2024-07-16T16:03:27.7144256Z         File "/tmp/pip-build-env-uvfzcfkg/overlay/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py", line 37, in __init__
2024-07-16T16:03:27.7145311Z           raise InvalidRequirement(str(e)) from e
2024-07-16T16:03:27.7146042Z       pkg_resources._vendor.packaging.requirements.InvalidRequirement: Expected end or semicolon (after version specifier)
2024-07-16T16:03:27.7146704Z           cython>=0.x
2024-07-16T16:03:27.7146931Z                 ~~~^
2024-07-16T16:03:27.7147162Z       [end of output]
2024-07-16T16:03:27.7147448Z   
2024-07-16T16:03:27.7147852Z   note: This error originates from a subprocess, and is likely not a problem with pip.
2024-07-16T16:03:27.7148437Z error: subprocess-exited-with-error
2024-07-16T16:03:27.7148670Z 
2024-07-16T16:03:27.7148943Z × Getting requirements to build wheel did not run successfully.
2024-07-16T16:03:27.7149398Z │ exit code: 1
2024-07-16T16:03:27.7149662Z ╰─> See above for output.

@geetu040
Copy link
Contributor Author

@fkiraly @benHeid @yarnabrina I am currently blocked on this issue, you inputs would be really appreciated here

@yarnabrina
Copy link
Member

I'm not much familiar with poetry, can one of you please explain what does this mean?

[tool.poetry.dependencies]
python = ">=3.10,<3.11"
einshape = "1.0.0"
numpy = "1.26.4"
pandas = "2.1.4"
paxml = "1.4.0"
utilsforecast = "0.1.10"
jax = {version = "0.4.26", extras = ["cuda12"]}
jaxlib = "0.4.26"
huggingface_hub = {version = "0.23.0", extras = ["cli"]}
scikit-learn = "1.0.2"

(Ref. https://github.com/google-research/timesfm/blob/b9af57aed908f464f3dc46fc7c817adf2d821e40/pyproject.toml#L31-L41)

Does it mean that timesfm work only with these specific versions, i.e. if it is pandas==2.1.3 (plus rest), it will not work? If so, it's a severe restriction if I am not wrong.

Regarding your issue, it seems pip is trying to download a much older version than current master. Can you try to pin as the latest 1.0.1 as a trial?

@geetu040
Copy link
Contributor Author

Regarding your issue, it seems pip is trying to download a much older version than current master. Can you try to pin as the latest 1.0.1 as a trial?

The above output is from the latest version

Does it mean that timesfm work only with these specific versions,

I believe yes

@fkiraly
Copy link
Collaborator
fkiraly commented Jul 18, 2024

Looks like they have pinned all their versions, which makes it unusable as a package for all practical purposes. I think we should still consider this as "no workable pypi release" situation, at least until their version requirements are much more lenient (proper ranges)

@geetu040
Copy link
Contributor Author

Here is some update on the matter

The authors have updated the requirements for timesfm

  1. They have not pushed the latest code to pypi, therefore the pyproject.toml that sktime CI uses from the pypi package of timesfm still has pinned versions
  2. Although they have relaxed the bounds yet if you look into each requirement package, there exists only one version even in that relaxed bound. For example they relaxed einshape = "1.0.0" to einshape = ">=1.0.0". but the only version available for einshape on pypi is 1.0.1, so it doesn't make any difference. This is same for most of other requirements. That I am afraid will still give pip's dependency resolution errors.

References

  1. Changes made to pyproject.toml can be seen here
  2. Dependency Resoluion errors for sktime can be seen here

Next step?

  1. wait for the latest push to pypi. (we can ping the authors for that)
  2. see if the updated relaxation in package works for sktime
  3. if the updated relaxation is not relaxed enough, we should again let the authors know of it
  4. the idea of forking in sktime/libs is still very questionable, since it a large code base, would add more dependencies that might be problematic to handle, but this can still be considered a solution.

@geetu040 geetu040 mentioned this pull request Jul 26, 2024
@fkiraly
Copy link
Collaborator
fkiraly commented Aug 13, 2024

The failure is due to a genuine bug in the dependency testing framework, see fix and explanation here: #6961

I recommend to merge #6961 into this PR and see if everything passes.

@geetu040
Copy link
Contributor Author

@fkiraly this fixed it!

@fkiraly
Copy link
Collaborator
fkiraly commented Aug 13, 2024

ready for review?

@geetu040
Copy link
Contributor Author

ready for review?

just some minor changes needed related to docstring and formatting.

- credit authors
- complete docstring and example
- update tags
- parameter sequencing
- use source package
- infer horizon_len from fh
- update test params
- add liscense
@geetu040 geetu040 marked this pull request as ready for review August 14, 2024 08:04
@geetu040
Copy link
Contributor Author

For Reviewers:

The only file to review is sktime/forecasting/timesfm_forecaster.py (which itself is pretty straight forward) - rest of the code is copied as fork in sktime/libs

I believe the tests cases are not running in the CI as the dependencies are stated at estimator tags, not in the pyproject.toml file because of these errors #6571 (comment) and #6571 (comment). Locally I cannot complete the tests as it runs out of resources - the way they are loading the model and fitting that on so many scenarios is going to exhaust most of the hardware anyways.

So, the implementation is pretty simple but we are not sure if all test cases are passing; model performs really good for a zero shot forecasting but setting up the model can be challenging for the users to find the right restricted environment

@fkiraly
Copy link
Collaborator
fkiraly commented Aug 15, 2024

??? tests seem to be running through fine. Any comments or explanation?

@fkiraly
Copy link
Collaborator
fkiraly commented Aug 15, 2024

Oh, I see they are probably not running at all, because of

        "python_dependencies": [
            "tensorflow",
            "einshape",
            "jax",
            "praxis",
            "huggingface-hub",
            "paxml",
            "utilsforecast",
        ],
        "env_marker": "sys_platform=='linux'",

How are we testing then?
The dependencies are not satisfied in the environment.

There is the added issue that this runs only on python 3.10 and linux.
Due to the test matrix strategy, the estimator may not be tested at all.

The only way I can see is to spin up an environment specifically for this estimator.

@fkiraly
Copy link
Collaborator
fkiraly commented Aug 15, 2024

Added question: why does this run only on python 3.10 and linux, i.e., do we know the "deeper" reason for this?

@geetu040
Copy link
Contributor Author

The only way I can see is to spin up an environment specifically for this estimator.

yes, that looks like the only solution (although I think it might run out of resources and crash there, but lets hope that doesnot happen) - so should I try that? any thing to consider, as I would be working with workflow files for the first time here?

Added question: why does this run only on python 3.10 and linux, i.e., do we know the "deeper" reason for this?

This is the only reason we have - #6571 (comment) - Their implementation relies heavily on paxml with lingvo, which is responsible for this bound

@fkiraly
Copy link
Collaborator
fkiraly commented Aug 15, 2024

Every option I can can come up with to ensure test coverage sounds horrible. Perhaps the easiest is indeed a new environment, similar to the current job test-cython-estimators.

The "nicest" solution would be #5719, and having this would prevent buildup of technical debt by one-off solutions like this, but it would require a medium sized rework of test infrastructure.

@fkiraly
Copy link
Collaborator
fkiraly commented Aug 15, 2024

FYI @sktime/core-developers - this is the first case of an estimator with such a restrictive and problematic dependency set.

I have opened an issue here after random discussions with @benHeid that were also going in related directions: #6977

fkiraly added a commit that referenced this pull request Aug 17, 2024
…nt marker tag is not satisfied (#6961)

The `test_softdep_error` dependency handling check would incorrectly
fail if only the environment marker tag was not satisfied, this is an
unreported bug apparent in the CI of
#6571 - the first onboard estimator
using the `env_marker` tag.

This bug does not impact `check_estimator`, i.e., external API checks,
as this is a separate test.

The reason for the failure was that the error message raised in the case
that only the marker is mismatched was not caught as one of multiple
potential, expected error messages, this has been fixed.
Copy link
Collaborator
@fkiraly fkiraly left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Merging after discussion with @benHeid and @geetu040 - we probably need to remove deps later to enable proper testing on a wider range of OS/version conditions, but right now they are confident enough that it works in the advertised, very narrow range (taken directly from the original code)

@fkiraly fkiraly merged commit 34026e5 into sktime:main Aug 27, 2024
56 checks passed
benHeid pushed a commit to Z-Fran/sktime that referenced this pull request Oct 3, 2024
#### Reference Issues/PRs
Fixes sktime#6408

#### What does this implement/fix? Explain your changes.
This Pull Request implements TimesFM (Time Series Foundation Model),
which is a pretrained time-series foundation model developed by Google
Research for time-series forecasting.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Adding new functionality interfacing algorithms Interfacing existing algorithms/estimators from third party packages module:forecasting forecasting module: forecasting, incl probabilistic and hierarchical forecasting
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

[ENH] Add support for TimesFM
3 participants
0