MISTRAL AI・時系列予測

Timestral:時系列モデルをローカルで動かす

Mistral AI の最初の時系列モデル ファミリーは、チャット応答を生成するのではなく、数値観測を予測します。 5M から 209M パラメータまでの 4 つのサイズは、CPU または GPU でのゼロショット確率予測をサポートします。

独立したベンチマークではなく、公式ソースの説明です。インストール例は参考手順であり、このサイトによって実行されたものではありません。

リリース: · チェックしたソース:

4 つのサイズ、1 つの予測ワークフロー

5M から始めて入力および出力形式を学習し、次に保持している独自のデータでより大きなチェックポイントを検証します。以下の推奨事項は開始点であり、ワークロードの測定されたランキングではありません。

公式 FP32 ウェイト ファイルのサイズと推奨される開始点
モデルFP32 ウェイト ファイルどこから始めるべきか
Timestral-5M21 MBAPI を学ぶか、適度な CPU ワークロードを試してください。
Timestral-28M111 MB設置面積を小さく保ちながら、より大きなモデルを評価します。
Timestral-123M490 MBリソースの使用と精度の中間点をテストします。
Timestral-209M837 MB以下の比較の背後にある主なチェックポイントを評価します。

共有サポート: 単変量または多変量ターゲット、過去のみおよび将来の既知の共変量、および 21 の出力分位数。コンテキストは、テキスト トークンではなく、32,768 の履歴タイム ステップに制限されます。 1 つの予測ブロックは、最大 1,024 の将来のステップをカバーします。より長い期間は、予測された中央値を後続のブロックにフィードバックします。

ファイルサイズはダウンロード/保存時の数値です。ランタイム RAM または VRAM は、テンソル バッファー、コンテキストの長さ、バッチ サイズ、変数の数にも依存します。最小メモリの保証は暗黙に示されていません。

Timestral が歴史を予測に変える方法

公開されたデザインは因果パッチベースの Transformer です。 209M の場合、モデル カードには 24 層と 768 次元の埋め込みがリストされています。以下のフローでは、トレーニングの完全な再構成ではなく、推論について説明します。

  1. 01

    歴史的観察

    等間隔のターゲットとオプションの共変量を指定します。欠落している観測値を NaN でマークします。

  2. 02

    32ステップのパッチ

    値と欠損値インジケーターは時間の順序を維持しながら一緒に埋め込まれます。

  3. 03

    時間をかけてさまざまな注意を払う

    注意は、時間の経過と変数全体にわたる履歴を関連付けます。共変量は、ターゲット行を読み取ることなくターゲットに通知できます。

  4. 04

    予測トークンと分位点

    Decoupled Horizon Forecasting は、個別の予測トークンを使用して、エンコードされたコンテキストを読み取り、順序付けられた分位数を生成します。

  1. 01

    予測時に入手可能な情報のみを使用する

    過去の共変量は歴史をカバーします。既知の将来の共変量は、計画された運用スケジュールなど、要求された予測期間もカバーします。将来のターゲットの観測値は、既知の将来の共変量ではありません。カテゴリ入力では数値カテゴリ コードを使用します。ライブラリは、該当する場合、ターゲットのエンコードを処理します。

  2. 02

    間隔を不確実性として読み取る

    中央値は 0.5 分位数です。 0.1 分位数と 0.9 分位数は名目上の中心 80% 予測区間を形成しますが、将来の観測値の 80% がその予測区間内に収まるという保証はありません。ホールドアウト期間のキャリブレーションをチェックします。

モデル カードには、検証日に近日公開される技術レポートがまだ記載されています。ここでのアーキテクチャの詳細は、README とモデル カードから得られます。非公開のトレーニングの詳細は推測されません。

公式ゼロショットベンチマーク比較

Mistral は、事前トレーニングされたゼロショット予測モデルの中で、発売時に優れた結果を報告しています。この表は、元のモデル名とメトリック ラベルを使用して、209M モデル カードでの比較を再現しています。これは日付付きのスナップショットであり、ライブのリーダーボードではありません。

ミストラル モデル カードの結果 · 公式レポート、このサイトではテストされていません
ベンチマーク・メトリックTimestral-209Mt0-gammaTimesFM-3Toto-2.0-2.5BChronos-2
GIFT-Eval · MASE ↓0.6580.6610.6670.6960.698
GIFT-Eval · CRPS ↓0.4460.4520.4560.4760.485
TIME · MASE ↓0.6260.6370.6400.6420.662
TIME · CRPS ↓0.5220.5340.5360.5390.556
fev-bench · SQL skill score ↑50.3949.4248.9944.4247.28
fev-bench · MASE skill score ↑39.4937.9937.8232.5435.50

ソースとラベルの違い: リリース記事では GIFT-Eval 確率チャート WQL にラベルが付けられていますが、モデル カード テーブルでは行 CRPS にラベルが付けられています。ここに示す値については CRPS を保持し、2 つのラベルが同一の計算を表すとは想定しません。矢印は、低い方が良いか高い方が良いかを示します。

  1. 01

    MASE ↓

    平均絶対スケール誤差は、絶対予測誤差を単純な基準スケールと比較します。低いほど良いです。これらの GIFT-Eval および TIME の数値は集計結果であり、正しい予測の割合ではありません。

  2. 02

    CRPS ↓

    連続ランク付け確率スコアは、観測値に対して予測分布を評価します。低いほど良いです。データセット間で比較する前に、ベンチマークの定義と集計を検査します。

  3. 03

    SQL skill score ↑

    スケーリングされた分位点損失スキル スコアは、参照予測と比較した改善を報告します。高いほど良いです。スコア 50.39 は、予測精度 50.39% ではありません。 MASE スキル スコア行でも、高いほど優れたスコアリングが使用されます。

  4. 04

    インプットと評価範囲

    README では、予測ツールのデフォルトと最大 32,768 ステップの履歴が指定されています。GIFT-Eval は、過去の数値共変量を含む 97 の構成を使用します。 TIME は共変量なしで 98 個のタスクを使用します。 fev-bench は、エンコードされたカテゴリーを含む、過去および既知の共変量を含む 100 のタスクを使用します。

これらの集計結果は、すべてのセンサー、需要シリーズ、またはビジネス領域の勝者を確立するものではありません。同じ予測起点、期間、共変量、および誤差指標を独自のホールドアウト期間で評価します。未来の情報を履歴から除外します。

CPU の速度とローカルでの実行コスト

リリース記事には、狭い CPU の例が含まれています。これはモデル サイズのトレードオフを理解するのに役立ちますが、運用レイテンシを保証するものではありません。

ベンダーが報告した、記載されたシナリオの CPU 遅延
モデル報告された遅延報告された状況
Timestral-5M10 msサーバー CPU、8 スレッド。 15 分間の履歴を 3 週間分。 1日先の予報。
Timestral-209M140 msサーバー CPU、8 スレッド。 15 分間の履歴を 3 週間分。 1日先の予報。

この記事では、正確な CPU SKU や完全なタイミング プロトコルは特定されていません。コールド ダウンロード、モデルの読み込み、I/O、変数の数により、エンドツーエンドの時間が変化する可能性があります。これらの数値を一般的な高速化の主張に変えないでください。

ローカル推論は、CPU/GPU 時間、RAM、電力、および操作の労力を消費します。ダウンロード可能な重みにはライセンスが適用されます。このガイドでは、Timestral 固有のホスト API の公開価格やエンドポイントを検証していません。トークンごとまたは予測ごとの販売価格はベンチマークから推測されません。

ローカルセットアップ: CPU で 5M から開始

要件: Python 3.10 以降、PyTorch 2.4 以降、Git、およびパッケージおよびモデルのホストへのアクセス。 GPUはオプションです。 Windows の例では Python 3.12 を選択しています。インストールされているサポートされているバージョンを使用してください。

参照手順のみ: このサイトは Timestral のインストール、ウェイトのダウンロード、またはこれらの予測の実行を行っていません。最初に使用するには、依存関係と選択したチェックポイントを取得するためにネットワーク アクセスが必要です。

1A · Linux / macOS シェル

python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install git+https://github.com/mistralai/timestral.git

1B · Windows PowerShell

py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install git+https://github.com/mistralai/timestral.git

両方ではなく、1 つの環境設定を選択してください。 python3 コマンドは Python ≥ 3.10 に解決される必要があります。 Git からのインストールは公式の README に従い、現在の依存関係を解決します。凍った環境ではありません。再現性を高めるために、リポジトリには uv.lock と uv sync --frozen も提供されています。 CPU のみの PyTorch ビルドは、公式 PyTorch インストーラーを通じて選択できます。

2・forecast.pyとして保存

import numpy as np
from timestral import TimestralForecaster

model = TimestralForecaster.from_pretrained(
    "mistralai/Timestral-5M", device="cpu"
)
rng = np.random.default_rng(42)
context = rng.standard_normal(1000).cumsum()
forecast = model.forecast(context, prediction_length=96)
median = forecast.median
lower = forecast.quantile(0.1)
upper = forecast.quantile(0.9)
print("shape:", tuple(median.shape))  # (1, 1, 96)
print("first median:", median[0, 0, 0].item())
print("first interval:", lower[0, 0, 0].item(), upper[0, 0, 0].item())

3 · アクティブな環境内で実行する

python forecast.py

キャプチャされたテスト結果ではなく、予想されるインターフェイスの形状: 中央値は形状 (1, 1, 96) を持ち、1 つの系列、1 つの変数、および 96 の将来のステップを表します。ランダム ウォークは合成デモンストレーション データです。その予測はモデルの品質を確立しません。

フラッグシップを評価するには、モデル ID を mistralai/Timestral-209M に置き換えます。サポートされている CUDA 環境では、device="cuda" を使用できます。コンテキスト、変数、またはバッチ サイズを増やす前に、メモリをチェックし、保持されているデータを比較します。

一定間隔の CSV シリーズを予測する

ヘッダー付きの値列を 1 つ用意します。各行は正確に 1 つのタイム ステップであり、すでに古いものから新しいものの順に並べ替えられています。この短いサンプルはファイル形式のみを示しています。実際の評価には意味のある過去の報道を使用します。

series.csv・フォーマット例

value
100
103
""
108
110

予報_csv.pyとして保存します。 Python予報_csv.pyを実行します

import csv
import numpy as np
from timestral import TimestralForecaster

# series.csv: one header named "value"; oldest observation first.
# Each row represents one equally spaced time step; blank = missing.
with open("series.csv", newline="", encoding="utf-8-sig") as stream:
    rows = list(csv.DictReader(stream))
context = np.array([
    float(row["value"]) if row["value"].strip() else np.nan
    for row in rows
], dtype=np.float32)
if context.size == 0 or not np.isfinite(context).any():
    raise ValueError("Provide at least one finite observation")
if np.isinf(context).any():
    raise ValueError("Use blank cells for missing values, not infinity")

model = TimestralForecaster.from_pretrained(
    "mistralai/Timestral-5M", device="cpu"
)
result = model.forecast(context, prediction_length=96)
values = result.median[0, 0].cpu().numpy()
np.savetxt("forecast.csv", values, delimiter=",", header="median", comments="")

空白セルは NaN になります。欠落しているタイムスロットの行を保持します。このスクリプトは、タイムスタンプの解析、データの並べ替え、重複排除、またはリサンプリングを行いません。単一列をエクスポートする前にこれらの手順を実行し、そのサンプリング間隔を定義します。出力には 96 個の中央値が含まれます。その間隔を使用して将来のタイムスタンプを割り当てます。

多変量入力の場合は (B、V、T) を使用します: バッチ、変数、履歴。過去の数値共変量には (B、C、T) が使用されます。既知の将来の共変量は (B、C、T + H) を使用します。ここで、H は予測長です。単一のターゲット シリーズは、無関係なセンサーを独立したバッチ行として扱うように指示するものではありません。

キャッシュされたローカル ディレクトリの推論

モデルの読み込みでは、通常、config.json と model.safetensors が Hugging Face キャッシュにダウンロードされます。完全なキャッシュまたはローカル ディレクトリを使用すると、ハブ リクエストなしでモデルをロードできます。

個別の例: オンライン ウォームアップ、キャッシュされたロード、ローカル ディレクトリ

from timestral import TimestralForecaster

# First load online to populate the Hugging Face cache:
model = TimestralForecaster.from_pretrained(
    "mistralai/Timestral-5M", device="cpu"
)
# Later, load the same cached checkpoint without a network lookup:
cached = TimestralForecaster.from_pretrained(
    "mistralai/Timestral-5M", device="cpu", local_files_only=True
)
# Alternative: directory containing config.json and model.safetensors.
local = TimestralForecaster.from_pretrained(
    "/path/to/Timestral-5M", device="cpu", local_files_only=True
)

ファイルを準備した後、キャッシュされたブランチまたはローカル ブランチを使用します。上記の 3 つのロードは、ライフサイクルを説明するための代替手段であり、すべてのスクリプトで必須のシーケンスではありません。プレースホルダー パスを置き換えるか、r"D:\models\Timestral-5M" などの Windows パスを使用します。 local_files_only=True では、失われたファイルを回復できません。オフラインにする前にパッケージもインストールする必要があります。

大規模な実行前のトラブルシューティング

  1. 01

    インストールまたはインポートが失敗する

    アクティブ化された環境内の python --version および python -m pip show torch を確認します。 Python ≥ 3.10、torch ≥ 2.4、および Git が利用可能であることを確認します。 CUDA デバイスには、互換性のある PyTorch ビルドとドライバーも必要です。これらの問題を分離するには、まず CPU から始めます。

  2. 02

    チェックポイントのダウンロードまたはオフラインのロードが失敗する

    ネットワーク アクセス、利用可能なディスク容量、大文字と小文字を区別した正確なモデル ID を確認します。オフライン キャッシュには、選択したリビジョンが含まれている必要があります。ローカル フォルダーには、config.json と model.safetensors の両方が含まれている必要があります。ファイル名だけではチェックポイント ディレクトリではありません。

  3. 03

    形状または共変量のエラー

    ターゲットは (T,)、(B, T)、または (B, V, T) を受け入れます。すべての系列を共通のサンプリング間隔に揃え、欠損値には NaN を使用し、将来の既知の共変量には T + H ステップを提供します。テスト範囲からの観察結果を入力履歴に入れないでください。

  4. 04

    メモリ使用量または遅延が高すぎる

    バッチが小さく変数が少ない 5M から始めます。タスクに適合する場合にのみ履歴を短くしてください。ダウンロードと読み込みを推論とは別に測定します。重み付けファイルのサイズには、ランタイムのアクティベーションやライブラリのオーバーヘッドは含まれません。

コードと重みには異なるライセンスが適用されます

推論コードは Apache 2.0 です。モデルの重みは通常の MIT ではなく、Modified MIT です。 2 億 9M 重量ライセンスは、会社 (または雇用主) の世界連結収益が前月に 2,000 万米ドルを超えた場合に権利を保留し、影響を受けるユーザーを商用ライセンスを取得するために Mistral に誘導します。必要な通知を保管し、使用する正確なチェックポイントのライセンスを確認してください。

時間的な質問

公式情報源と検証日

更新については元のソースに従ってください。ベンチマークの数値、インターフェイス、可用性、ライセンスの文言は変更される可能性があります。以下のスナップショットの日付がこのガイドに適用されます。