Google Colabで時系列基盤モデルのGoogle timesfmを試す (original) (raw)

初めに

時系列基盤モデルでどんなことができるのか気になったので、以下の記事を実際に試してみます

note.com

開発環境

ライブラリのインストール

ライブラリをインストールします

!pip install utilsforecast

データのダウンロードおよび整理

import pandas as pd

df = pd.read_csv("ETTh1.csv") print(len(df)) df.head(2)

import torch

context_length = 512 forecast_horizon = 96

df_train = df.iloc[-(context_length+forecast_horizon):-forecast_horizon] df_test = df.iloc[-forecast_horizon:]

train_tensor = torch.tensor(df_train[["HUFL", "HULL", "MUFL", "MULL", "LUFL", "LULL", "OT"]].values, dtype=torch.float) train_tensor = train_tensor.t() test_tensor = torch.tensor(df_test[["HUFL", "HULL", "MUFL", "MULL", "LUFL", "LULL", "OT"]].values, dtype=torch.float) test_tensor = test_tensor.t()

モデルのロード

以下でモデルでロードします

import timesfm

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

推論

以下で推論します

frequency_input = [0] * train_tensor.size(0) point_forecast, experimental_quantile_forecast = tfm.forecast( train_tensor, freq=frequency_input, ) forecast_tensor = torch.tensor(point_forecast) quantile_tensor = torch.tensor(experimental_quantile_forecast)

import matplotlib.pyplot as plt

channel_idx = 6 time_index = 0

history = train_tensor[channel_idx, :].detach().numpy() true = test_tensor[channel_idx, :].detach().numpy() pred = forecast_tensor[channel_idx, :].detach().numpy()

plt.figure(figsize=(12, 4))

plt.plot(range(len(history)), history, label='History (512 timesteps)', c='darkblue')

num_forecasts = len(true)

offset = len(history) plt.plot(range(offset, offset + len(true)), true, label='Ground Truth (96 timesteps)', color='darkblue', linestyle='--', alpha=0.5) plt.plot(range(offset, offset + len(pred)), pred, label='Forecast (96 timesteps)', color='red', linestyle='--')

plt.title(f"ETTh1 (Hourly) -- (idx={time_index}, channel={channel_idx})", fontsize=18) plt.xlabel('Time', fontsize=14) plt.ylabel('Value', fontsize=14) plt.legend(fontsize=14) plt.show()

出力される予測画像は以下になります

各種ライブラリのver

pip list

で出力された各種ライブラリのverです

Package Version


absl-py 1.4.0 aiohttp 3.9.5 aiosignal 1.3.1 alabaster 0.7.16 albumentations 1.3.1 altair 4.2.2 annotated-types 0.7.0 anyio 3.7.1 argon2-cffi 23.1.0 argon2-cffi-bindings 21.2.0 array_record 0.5.1 arviz 0.15.1 astropy 5.3.4 astunparse 1.6.3 async-timeout 4.0.3 atpublic 4.1.0 attrs 23.2.0 audioread 3.0.1 autograd 1.6.2 Babel 2.15.0 backcall 0.2.0 beautifulsoup4 4.12.3 bidict 0.23.1 bigframes 1.8.0 bleach 6.1.0 blinker 1.4 blis 0.7.11 blosc2 2.0.0 bokeh 3.3.4 bqplot 0.12.43 branca 0.7.2 build 1.2.1 CacheControl 0.14.0 cachetools 5.3.3 catalogue 2.0.10 certifi 2024.6.2 cffi 1.16.0 chardet 5.2.0 charset-normalizer 3.3.2 chex 0.1.86 click 8.1.7 click-plugins 1.1.1 cligj 0.7.2 cloudpathlib 0.16.0 cloudpickle 2.2.1 clu 0.0.11 cmake 3.27.9 cmdstanpy 1.2.3 colorama 0.4.6 colorcet 3.1.0 colorlover 0.3.0 colour 0.1.5 community 1.0.0b1 confection 0.1.5 cons 0.4.6 contextlib2 21.6.0 contourpy 1.2.1 cryptography 42.0.7 cuda-python 12.2.1 cudf-cu12 24.6.0 cufflinks 0.17.3 cupy-cuda12x 12.2.0 cvxopt 1.3.2 cvxpy 1.3.4 cycler 0.12.1 cymem 2.0.8 Cython 3.0.10 dask 2023.8.1 datascience 0.17.6 db-dtypes 1.2.0 dbus-python 1.2.18 debugpy 1.6.6 decorator 4.4.2 defusedxml 0.7.1 distributed 2023.8.1 distro 1.7.0 dlib 19.24.4 dm-tree 0.1.8 docstring_parser 0.16 docutils 0.18.1 dopamine_rl 4.0.9 duckdb 0.10.3 earthengine-api 0.1.405 easydict 1.13 ecos 2.0.13 editdistance 0.6.2 eerepr 0.0.4 einops 0.7.0 einshape 1.0 en-core-web-sm 3.7.1 entrypoints 0.4 et-xmlfile 1.1.0 etils 1.7.0 etuples 0.3.9 exceptiongroup 1.2.1 fastai 2.7.15 fastcore 1.5.43 fastdownload 0.0.7 fastjsonschema 2.19.1 fastprogress 1.0.3 fastrlock 0.8.2 fiddle 0.3.0 filelock 3.14.0 fiona 1.9.6 firebase-admin 5.3.0 Flask 2.2.5 flatbuffers 1.12 flax 0.8.2 folium 0.14.0 fonttools 4.53.0 frozendict 2.4.4 frozenlist 1.4.1 fsspec 2023.6.0 future 0.18.3 gast 0.4.0 gcsfs 2023.6.0 GDAL 3.6.4 gdown 5.1.0 geemap 0.32.1 gensim 4.3.2 geocoder 1.38.1 geographiclib 2.0 geopandas 0.13.2 geopy 2.3.0 gin-config 0.5.0 glob2 0.7 google 2.0.3 google-ai-generativelanguage 0.6.4 google-api-core 2.11.1 google-api-python-client 2.84.0 google-auth 2.27.0 google-auth-httplib2 0.1.1 google-auth-oauthlib 0.4.6 google-cloud-aiplatform 1.52.0 google-cloud-bigquery 3.21.0 google-cloud-bigquery-connection 1.12.1 google-cloud-bigquery-storage 2.25.0 google-cloud-core 2.3.3 google-cloud-datastore 2.15.2 google-cloud-firestore 2.11.1 google-cloud-functions 1.13.3 google-cloud-iam 2.15.0 google-cloud-language 2.13.3 google-cloud-resource-manager 1.12.3 google-cloud-storage 2.8.0 google-cloud-translate 3.11.3 google-colab 1.0.0 google-crc32c 1.5.0 google-generativeai 0.5.4 google-pasta 0.2.0 google-resumable-media 2.7.0 googleapis-common-protos 1.63.1 googledrivedownloader 0.4 graph-compression-google-research 0.0.4 graphviz 0.20.1 greenlet 3.0.3 grpc-google-iam-v1 0.13.0 grpcio 1.64.1 grpcio-status 1.48.2 gspread 6.0.2 gspread-dataframe 3.3.1 gym 0.25.2 gym-notices 0.0.8 h5netcdf 1.3.0 h5py 3.9.0 holidays 0.50 holoviews 1.17.1 html5lib 1.1 httpimport 1.3.1 httplib2 0.22.0 huggingface-hub 0.23.2 humanize 4.7.0 hyperopt 0.2.7 ibis-framework 8.0.0 idna 3.7 imageio 2.31.6 imageio-ffmpeg 0.5.1 imagesize 1.4.1 imbalanced-learn 0.10.1 imgaug 0.4.0 immutabledict 4.2.0 importlib_metadata 7.1.0 importlib_resources 6.4.0 imutils 0.5.4 inflect 7.0.0 iniconfig 2.0.0 intel-openmp 2023.2.4 ipyevents 2.0.2 ipyfilechooser 0.6.0 ipykernel 5.5.6 ipyleaflet 0.18.2 ipython 7.34.0 ipython-genutils 0.2.0 ipython-sql 0.5.0 ipytree 0.2.2 ipywidgets 7.7.1 itsdangerous 2.2.0 jax 0.4.26 jax-bitempered-loss 0.0.2 jaxlib 0.4.26+cuda12.cudnn89 jaxtyping 0.2.28 jedi 0.19.1 jeepney 0.7.1 jellyfish 1.0.4 jieba 0.42.1 Jinja2 3.1.4 joblib 1.4.2 jsonpickle 3.0.4 jsonschema 4.19.2 jsonschema-specifications 2023.12.1 jupyter 1.0.0 jupyter-client 6.1.12 jupyter-console 6.1.0 jupyter_core 5.7.2 jupyter-http-over-ws 0.0.8 jupyter-server 1.24.0 jupyterlab_pygments 0.3.0 jupyterlab_widgets 3.0.11 kaggle 1.6.14 kagglehub 0.2.5 keras 2.9.0 Keras-Preprocessing 1.1.2 keyring 23.5.0 kiwisolver 1.4.5 langcodes 3.4.0 language_data 1.2.0 launchpadlib 1.10.16 lazr.restfulclient 0.14.4 lazr.uri 1.0.6 lazy_loader 0.4 libclang 18.1.1 libcst 1.4.0 librosa 0.10.2.post1 lightgbm 4.1.0 lingvo 0.12.7 linkify-it-py 2.0.3 llvmlite 0.41.1 locket 1.0.0 logical-unification 0.4.6 lxml 4.9.4 malloy 2023.1067 marisa-trie 1.1.1 Markdown 3.6 markdown-it-py 3.0.0 MarkupSafe 2.1.5 matplotlib 3.7.1 matplotlib-inline 0.1.7 matplotlib-venn 0.11.10 mdit-py-plugins 0.4.1 mdurl 0.1.2 mesh-tensorflow 0.1.21 miniKanren 1.0.3 missingno 0.5.2 mistune 0.8.4 mizani 0.9.3 mkl 2023.2.0 ml-collections 0.1.1 ml-dtypes 0.4.0 mlxtend 0.22.0 model-pruning-google-research 0.0.5 more-itertools 10.1.0 moviepy 1.0.3 mpmath 1.3.0 msgpack 1.0.8 multidict 6.0.5 multipledispatch 1.0.0 multitasking 0.0.11 murmurhash 1.0.10 music21 9.1.0 natsort 8.4.0 nbclassic 1.1.0 nbclient 0.10.0 nbconvert 6.5.4 nbformat 5.10.4 nest-asyncio 1.6.0 networkx 3.3 nibabel 4.0.2 nltk 3.8.1 notebook 6.5.5 notebook_shim 0.2.4 numba 0.58.1 numexpr 2.10.0 numpy 1.26.4 nvtx 0.2.10 oauth2client 4.1.3 oauthlib 3.2.2 opencv-contrib-python 4.8.0.76 opencv-python 4.8.0.76 opencv-python-headless 4.10.0.82 openpyxl 3.1.3 opt-einsum 3.3.0 optax 0.2.2 optax-shampoo 0.0.6 orbax-checkpoint 0.5.9 osqp 0.6.2.post8 packaging 24.0 pandas 2.0.3 pandas-datareader 0.10.0 pandas-gbq 0.19.2 pandas-stubs 2.0.3.230814 pandocfilters 1.5.1 panel 1.3.8 param 2.1.0 parso 0.8.4 parsy 2.1 partd 1.4.2 pathlib 1.0.1 patsy 0.5.6 paxml 1.4.0 peewee 3.17.5 pexpect 4.9.0 pickleshare 0.7.5 Pillow 9.4.0 pip 23.1.2 pip-tools 6.13.0 platformdirs 4.2.2 plotly 5.15.0 plotnine 0.12.4 pluggy 1.5.0 polars 0.20.2 pooch 1.8.1 portalocker 2.8.2 portpicker 1.5.2 praxis 1.4.0 prefetch-generator 1.0.3 preshed 3.0.9 prettytable 3.10.0 proglog 0.1.10 progressbar2 4.2.0 prometheus_client 0.20.0 promise 2.3 prompt_toolkit 3.0.45 prophet 1.1.5 proto-plus 1.23.0 protobuf 3.19.6 psutil 5.9.5 psycopg2 2.9.9 ptyprocess 0.7.0 py-cpuinfo 9.0.0 py4j 0.10.9.7 pyarrow 16.1.0 pyarrow-hotfix 0.6 pyasn1 0.6.0 pyasn1_modules 0.4.0 pycocotools 2.0.7 pycparser 2.22 pydantic 2.7.3 pydantic_core 2.18.4 pydata-google-auth 1.8.2 pydot 1.4.2 pydot-ng 2.0.0 pydotplus 2.0.2 PyDrive 1.3.1 PyDrive2 1.6.3 pyerfa 2.0.1.4 pygame 2.5.2 pyglove 0.4.4 Pygments 2.16.1 PyGObject 3.42.1 PyJWT 2.3.0 pymc 5.10.4 pymystem3 0.2.0 pynvjitlink-cu12 0.2.3 PyOpenGL 3.1.7 pyOpenSSL 24.1.0 pyparsing 3.1.2 pyperclip 1.8.2 pyproj 3.6.1 pyproject_hooks 1.1.0 pyshp 2.3.1 PySocks 1.7.1 pytensor 2.18.6 pytest 7.4.4 python-apt 0.0.0 python-box 7.1.1 python-dateutil 2.8.2 python-louvain 0.16 python-slugify 8.0.4 python-utils 3.8.2 pytz 2023.4 pyviz_comms 3.0.2 PyWavelets 1.6.0 PyYAML 6.0.1 pyzmq 24.0.1 qdldl 0.1.7.post2 qtconsole 5.5.2 QtPy 2.4.1 qudida 0.0.4 ratelim 0.1.6 referencing 0.35.1 regex 2024.5.15 requests 2.31.0 requests-oauthlib 1.3.1 requirements-parser 0.9.0 rich 13.7.1 rmm-cu12 24.6.0 rouge-score 0.1.2 rpds-py 0.18.1 rpy2 3.4.2 rsa 4.9 sacrebleu 2.4.2 safetensors 0.4.3 scikit-image 0.19.3 scikit-learn 1.2.2 scipy 1.11.4 scooby 0.10.0 scs 3.2.4.post2 seaborn 0.13.1 SecretStorage 3.3.1 Send2Trash 1.8.3 sentencepiece 0.1.99 seqio-nightly 0.0.17.dev20231010 setuptools 67.7.2 shapely 2.0.4 simple_parsing 0.1.5 six 1.16.0 sklearn-pandas 2.2.0 smart-open 6.4.0 sniffio 1.3.1 snowballstemmer 2.2.0 sortedcontainers 2.4.0 soundfile 0.12.1 soupsieve 2.5 soxr 0.3.7 spacy 3.7.4 spacy-legacy 3.0.12 spacy-loggers 1.0.5 Sphinx 5.0.2 sphinxcontrib-applehelp 1.0.8 sphinxcontrib-devhelp 1.0.6 sphinxcontrib-htmlhelp 2.0.5 sphinxcontrib-jsmath 1.0.1 sphinxcontrib-qthelp 1.0.7 sphinxcontrib-serializinghtml 1.1.10 SQLAlchemy 2.0.30 sqlglot 20.11.0 sqlparse 0.5.0 srsly 2.4.8 stanio 0.5.0 statsmodels 0.14.2 StrEnum 0.4.15 sympy 1.12.1 t5 0.9.4 tables 3.8.0 tabulate 0.9.0 tbb 2021.12.0 tblib 3.0.0 tenacity 8.3.0 tensorboard 2.9.1 tensorboard-data-server 0.6.1 tensorboard-plugin-wit 1.8.1 tensorflow 2.9.3 tensorflow-datasets 4.8.3 tensorflow-estimator 2.9.0 tensorflow-gcs-config 2.15.0 tensorflow-hub 0.16.1 tensorflow-io-gcs-filesystem 0.37.0 tensorflow-metadata 1.12.0 tensorflow-probability 0.23.0 tensorflow-text 2.9.0 tensorstore 0.1.55 termcolor 2.4.0 terminado 0.18.1 text-unidecode 1.3 textblob 0.17.1 tf-keras 2.15.0 tf-slim 1.1.0 tfds-nightly 4.8.3.dev202303280045 thinc 8.2.3 threadpoolctl 3.5.0 tifffile 2024.5.22 timesfm 0.0.1 tinycss2 1.3.0 tokenizers 0.19.1 toml 0.10.2 tomli 2.0.1 toolz 0.12.1 torch 2.3.0+cu121 torchaudio 2.3.0+cu121 torchsummary 1.5.1 torchtext 0.18.0 torchvision 0.18.0+cu121 tornado 6.3.3 tqdm 4.66.4 traitlets 5.7.1 traittypes 0.2.1 transformers 4.41.2 triton 2.3.0 tweepy 4.14.0 typeguard 2.13.3 typer 0.9.4 types-pytz 2024.1.0.20240417 types-setuptools 70.0.0.20240524 typing_extensions 4.12.1 tzdata 2024.1 tzlocal 5.2 uc-micro-py 1.0.3 uritemplate 4.1.1 urllib3 2.0.7 utilsforecast 0.1.10 vega-datasets 0.9.0 wadllib 1.3.6 wasabi 1.1.3 wcwidth 0.2.13 weasel 0.3.4 webcolors 1.13 webencodings 0.5.1 websocket-client 1.8.0 Werkzeug 3.0.3 wheel 0.43.0 widgetsnbextension 3.6.6 wordcloud 1.9.3 wrapt 1.14.1 xarray 2023.7.0 xarray-einstats 0.7.0 xgboost 2.0.3 xlrd 2.0.1 xyzservices 2024.4.0 yarl 1.9.4 yellowbrick 1.5 yfinance 0.2.40 zict 3.0.0 zipp 3.19.1