世界を動かす技術を、日本語で。

Googleの16kコンテキストを持つ200Mパラメータの時系列基盤モデル

概要

TimesFM はGoogle Researchが開発した時系列予測用の 事前学習済み基盤モデル。 最新バージョンは TimesFM 2.5 で、パラメータ削減や文脈長拡大など大幅な進化。 Hugging FaceBigQuery で利用可能、オープンバージョンも提供。 インストール方法やコード例 が公式リポジトリに記載。 Flax対応やドキュメント拡充 も進行中。

TimesFM: Google Researchの時系列基盤モデル

  • TimesFM はGoogle Researchによる 時系列予測専用の大規模事前学習モデル
  • ICML 2024 で発表された論文「A decoder-only foundation model for time-series forecasting」に基づく設計
  • Hugging Face Collection で全チェックポイント提供
  • BigQuery との連携による公式Googleプロダクト展開
  • オープン版は Google公式サポート対象外 であることに注意

モデルバージョンと主なアップデート

  • 最新バージョン:TimesFM 2.5
    • パラメータ数:200M (従来の500Mから大幅削減)
    • 文脈長:最大16,000 (2.0の2,048から拡大)
    • 連続量子予測 :最大1,000ホライズン対応、30Mパラメータの量子ヘッド搭載
    • frequency indicator廃止
    • 新たな予測フラグ を追加
    • covariate(外生変数)サポート をXReg経由で再導入(2025年10月29日アップデート)
  • 旧バージョン:1.0、2.0
    • v1サブディレクトリ に関連コードをアーカイブ
    • pip install timesfm==1.3.0 で旧バージョン利用可能

インストール方法

  • リポジトリのクローン
    • git clone https://github.com/google-research/timesfm.git
    • cd timesfm
  • 仮想環境の作成と有効化
    • uv venv
    • source .venv/bin/activate
  • 依存パッケージのインストール
    • PyTorch版uv pip install -e .[torch]
    • Flax版uv pip install -e .[flax]
    • XReg(外生変数対応)uv pip install -e .[xreg]
  • バックエンドの選択的インストール
    • PyTorch または Jax(Flax用) をOSやアクセラレータに応じて追加インストール

コード例(PyTorch版TimesFM 2.5)

  • 主要ライブラリのインポート
    • import torch
    • import numpy as np
    • import timesfm
  • 精度設定とモデルロード
    • torch.set_float32_matmul_precision("high")
    • model = timesfm.TimesFM_2p5_200M_torch.from_pretrained("google/timesfm-2.5-200m-pytorch")
  • モデルのコンパイル
    • model.compile(timesfm.ForecastConfig(...))
      • max_context=1024
      • max_horizon=256
      • normalize_inputs=True
      • use_continuous_quantile_head=True
      • force_flip_invariance=True
      • infer_is_positive=True
      • fix_quantile_crossing=True
  • 予測の実行
    • point_forecast, quantile_forecast = model.forecast(...)
      • 入力例:np.linspace(0, 1, 100), np.sin(np.linspace(0, 20, 67))
      • 出力:point_forecast.shape → (2, 12)、quantile_forecast.shape → (2, 12, 10)

今後の開発・サポート予定

  • Flaxバージョン 対応による推論高速化
  • covariateサポート の拡充
  • ドキュメント・ノートブック のさらなる整備
  • リポジトリは順次アップデート中 である点に注意

参考リンク

Hackerたちの意見

なんかそれ見逃しちゃったな。これに関するコンペってあるの? MLや時系列にはいつも苦労してるから、試してみる必要があるね。

https://www.datadoghq.com/blog/datadog-time-series-foundatio... https://moment-timeseries-foundation-model.github.io/ https://arxiv.org/abs/2403.07815 仕事の友達が、CEOがSlackに投稿するタイミングを予測するのに使ってて、正しいと面白いよ。

TabPFN [1] も時系列の機能があるよ。 [1] https://priorlabs.ai/tabpfn

https://www.opentslm.com/

GIFTのリーダーボードには他にもいくつかのトランスフォーマーベースのモデルがあるよ: https://huggingface.co/spaces/Salesforce/GIFT-Eval

これがそのブログ記事のリンクだよ。実際に何なのか説明してるよね: https://github.com/google-research/timesfm?tab=readme-ov-fil...

それは投稿と同じ内容に繋がるね、GitHubのリポジトリ(iOSのChrome)

あなたがリンクしたかったのはこのページだと思うよ: https://research.google/blog/a-decoder-only-foundation-model...

このモデルをトレーニングするのにかかったGPU時間の合計を教えてほしいな。LLMと比べるとかなり小さいみたいだから、一般的な趣味の人や大学、小さなラボがトレーニングできるものにどれくらい近いのか知りたい。

一般的な時系列モデルの概念がなんか変に感じるんだよね。同じモデルがイタリアの卵の価格と世界的なインフレを信頼できる方法で予測できるってどういうこと? しかも、このモデルをどう使うのかも分からないし、予測の根拠を信じるための説明もないし…

一般的に理解されてないのは、これらのモデルがイタリアの卵の価格やインフレを予測するわけじゃないってこと。時系列をトレンド、季節性、残差に分解するんだ。それが実際にモデル化してることなんだよね。季節的なパターンがない限り、中東の戦争がインフレに影響を与えることを予測することはできないよ。

俺が言いたいのは: - 分解:基礎的な要因を解きほぐすためのより一般的なフーリエ変換を発見する - 記憶:いくつかのパターンはパワーローのように多くの分野で再発する - マルチタスク:天気と電力のようなクロスドメインのつながりを活用する

私の理解では、合成トレーニングデータは、すべての分野で共通する抽象的な時系列パターンを捉えるのに役立つんだ。付録8にも書いてあるけど: 「私たちは、従来の統計モデルを使って、一般的な時系列パターンを反映する合成データを作成します。まず、4つのシンプルな時系列パターンから始めます:

• ピースワイズ線形トレンド (I)、ここではピースワイズ線形成分の数が2から8の間でランダムに選ばれます。 • ARMA(p, q) (II)、ここで1 ≤ p, q ≤ 8で、対応する係数は多変量ガウス分布または一様分布から生成され、正規化されます。 • 季節パターン。特に、異なるランダムな周期(4から最大コンテキスト長の半分のタイムポイントまで)と時間遅延を持つサイン波 (III) とコサイン波 (IV) を作成します。もしすべての時系列データのクラスにこういった基礎的なパターンがなかったら、従来の時系列モデルのアイデア自体が根本的に間違っていることになる。さらに、これはトランスフォーマーモデルだから、推論時には問題特有の入力データのパターンも探すんだ。LLMへの入力コンテキストが出力の関連性に影響を与えるのと同じようにね。

どうして同じモデルがイタリアの卵の価格を予測できて、グローバルなインフレも信頼できる方法で予測できるの?同じロスのある圧縮アルゴリズム(例えばJPG)は、すべての画像を信頼できる方法で圧縮できるの?

これは「卵の価格」や「インフレ」を予測してるわけじゃなくて、主にそのデータの中に現れるパターンを当てはめてるだけなんだよね。問題はドメインの一般化じゃなくて、これらのモデルがデータの意味を理解してるかのように振る舞ってること。みんな「どうして一つのモデルが全てを理解できるの?」って聞くけど、それは理解がある前提での話だからね。結局、「予測」って実際にはマーケティングが上手くて、カーブフィッティング以上の何かがあるのか、考えなきゃいけないよね。

実際、できるよ。見てみて https://youtu.be/FUQwijSDzg8?si=LWd5gVNYRd3HH9rJ それか、ジェームズ・スタインの逆説を検索してみて。

どうして同じモデルがイタリアの卵の価格と、グローバルなインフレを信頼できる方法で予測できるの?一つには、ベンフォードの法則があるよ: https://en.wikipedia.org/wiki/Benford%27s_law だから、符号を予測して(現代のCPUの分岐予測器も一種のニューラルネットワークを使ってる)、指数を予測して(おそらくゆっくり変化するだろうし)、それからベンフォードの法則を使って仮数を予測するんだ。

こちらもどうぞ: https://github.com/Nixtla/nixtla と https://facebook.github.io/prophet/

それと https://github.com/amazon-science/chronos-forecasting

これ、数ヶ月前からあるけど、誰か何か作った?

つまり、時系列はコンテキストなしで提供されるってこと?ただたくさんの数字のセットでトレーニングされるだけ?それから新しい数字のセットを与えて、またコンテキストなしで残りを予測するの?私の予想では、機械はまずデータだけから、これが既に見た/推測したカテゴリーの一つかどうかを判断すると思う(株価とか、Googleトレンドのカテゴリ検索とか)。それから、そのカテゴリーに対して妥当な補完を出力するんだ。トレーニングデータの外のカテゴリーにはうまくいかない気がする。私はシンプルなモデル(ARIMAとか)か、理論に基づいたモデルを使いたいな。でも、私が何を知ってるっていうの。

もし非常に長いトークンのストリームの次のトークンを予測するのにうまくいくなら、問題ないよね。重要なのは、一般化するためにどんなアーキテクチャとトレーニングレジメンが必要かってこと。

タイトルに(2024)を追加してほしいな、これはニュースじゃないから(参照: https://research.google/blog/a-decoder-only-foundation-model...)

2024年とは直接関係ないけど、2025年の終わりに大きなアップデートがあるよ。

誰か、ELI5でどうやって動くのか説明してくれない?あと、どれくらいのデータポイントを読み取れるの?

例えば、過去の太陽放射量の長い時系列と、過去の天気予報の長い時系列があるとする。このモデルは、未来の時点Xの天気予報を使って、未来の電気料金を予測できるのかな?つまり、時点Xの一つの時系列を使って、別の時系列を予測できるの?それとも、これはあくまで時系列内のパターンを見つけることに関する話なのかな。

論文では予測用だって言ってるけど、どうしてこれが比較的少ないトレーニングサンプルを表してないのかはよく分からないな。トレーニング用の時系列の大半が右上に上がっていくなら、モデルも(一般的には)そうなるだろうけど、誰にも分からないよね。

これって基本的にプロフェットじゃない?