TimesFMは、Google Researchが公開している時系列予測向けの事前学習済み基盤モデルです。論文は “A decoder-only foundation model for time-series forecasting” としてICML 2024に採択され、GitHub、Hugging Face、Google Researchブログから技術情報を追えます。オープン版についてはREADMEで「公式にサポートされるGoogle製品ではない」と断ったうえで、チェックポイントとPythonパッケージが公開されています。(GitHub, arXiv, Google Research Blog)

このモデルの見どころは、時系列ごとにモデルを一から作る前に、まず事前学習済みモデルをそのまま当てられる点です。Google Researchブログでは、TimesFMを1000億の実世界時系列ポイントで事前学習した forecasting model と説明し、未見データへのゼロショット性能を前面に出しています。小売、金融、製造、医療、自然科学のように時系列が出てくる領域では、最初のベースラインを作るだけでも地味に手間がかかります。TimesFMはそこを、LLMの「まず既存モデルを呼ぶ」に近い感覚へ寄せています。

2.5で、軽く長くなった

READMEで最新モデルとして示されているのはTimesFM 2.5です。2.0と比べて、パラメータ数は500Mから200Mへ減り、コンテキスト長は2048から16kへ伸びています。さらに、任意の30M分位点ヘッドを使うことで、最大1k horizonまで連続分位点予測を扱えると説明されています。頻度を表すindicatorはなくなり、いくつかのforecasting flagが追加されました。(README)

Hugging Faceの google/timesfm-2.5-200m-pytorch モデルカードを見ると、2.5のPyTorch版チェックポイントはApache-2.0ライセンスで公開されています。学習データとして、GiftEvalPretrain、Wikimedia Pageviews、Google Trendsのtop queries、合成・拡張データが挙げられています。ここは読み飛ばさない方がいいです。ゼロショットで使えるとしても、どんな系列に触れてきたモデルなのかは、結果の見方にそのまま響きます。(Hugging Face)

APIは短いが、設定は雑にしない

Pythonからは timesfm[torch]、timesfm[flax]、必要なら timesfm[xreg] を入れる導線がREADMEにあります。基本の流れは、TimesFM_2p5_200M_torch.from_pretrained("google/timesfm-2.5-200m-pytorch") で読み込み、ForecastConfig を渡して compile() し、forecast() へ1次元のnumpy配列リストを渡す形です。返り値は点予測と分位点予測で、READMEの例では (2, 12) と (2, 12, 10) の形になっています。(README)

公式のAPIリファレンスには、入力系列が max_context より長ければ末尾側を使う、短ければpaddingする、先頭のNaNは取り除き、内部のNaNは線形補間する、といった挙動も書かれています。予測器を呼ぶコードは短くても、max_context、max_horizon、normalize_inputs、分位点の扱いを決めずに走らせると、あとで比較しにくくなります。外生変数を使う場合は forecast_with_covariates() と timesfm[xreg] が入口になります。(API Reference, Data Preparation)

BigQuery MLに入っている意味

実験だけならGitHubとHugging Faceで十分です。ただ、運用に近い場所では「モデルをどこで管理するか」が残ります。BigQuery MLのドキュメントでは、組み込みのTimesFM単変量モデルを AI.FORECAST から使えると説明されています。モデルを作成、学習、管理せずに予測でき、すべてのBigQuery対応リージョンで利用可能です。異常検知には AI.DETECT_ANOMALIES、実績値との評価には AI.EVALUATE も用意されています。(BigQuery Docs)

だからTimesFMは、ひとつのライブラリというより、時系列予測の入口を二つ持っていると見ると分かりやすいです。手元で細かく触るならオープンなチェックポイントとPython API。データがBigQueryにあり、まずSQLで試したいならBigQuery ML。どちらにしても、事前学習モデルの出力をそのまま信じるより、ARIMAなどの従来手法、自分のドメインでの検証、予測区間の振る舞いと並べて見る方が健全です。

参考