Classical monitors forget the series the second the domain shifts. GPU jobs for every demand wiggle get old fast. Timestral – Mistral’s time-series foundation models, released October 15, 2026 – puts zero-shot probabilistic forecasts on a plain CPU, which is why people are already wiring it into capacity and sensor workers.
I spent one evening on it: clone the repo, aim the 28M checkpoint at a real hourly requests CSV, hold out two weeks, and check whether 21 quantiles beat the median-only habit most teams still ship. Below is what worked, what bit, and the shortest path to repeat it.
Run it on your series in under ten minutes
Gates are boring on purpose: Python 3.10+ and torch 2.4+. No PyPI wheel at launch – install from GitHub:
pip install git+https://github.com/mistralai/timestral.git
The forecaster wants NumPy or torch arrays shaped (T,), (B, T), or (B, V, T). Not a DataFrame. My requests file needed a regular hourly grid first so gaps became NaN instead of a silently shorter series:
import numpy as np
import pandas as pd
import torch
from timestral import TimestralForecaster
df = pd.read_csv("requests.csv", parse_dates=["ts"]).set_index("ts")
series = df["requests"].asfreq("h") # gaps → NaN
model = TimestralForecaster.from_pretrained(
"mistralai/Timestral-28M",
device="cuda" if torch.cuda.is_available() else "cpu",
)
ctx = series.to_numpy(dtype=np.float64, copy=True)
fc = model.forecast(ctx, prediction_length=168) # one week ahead
p50 = np.asarray(fc.median).squeeze()
p90 = np.asarray(fc.quantile(0.9)).squeeze()
print(p50.max(), p90.max())
Checkpoints sit on Hugging Face under Mistral (Timestral-209M and the 5M/28M/123M siblings). from_pretrained caches config.json plus safetensors once. Pin revision while this is still public preview. Air-gapped box? local_files_only=True.
Launch day or planned shutdown on the horizon? Pass known_covariates shaped (B, C, T + prediction_length). Pure 0/1 rows count as indicators. Categorical codes use the dedicated args and get target-encoded on univariate targets. Wrong length – or hindsight features in a backtest – quietly wrecks the score.
Pitfalls tutorials bury
- License wall. Code is Apache 2.0. Weights are Modified MIT: blocked if your company (or employer) global consolidated monthly revenue topped $20M in the preceding month. Same clause on the tiny 5M file. Over the line → commercial license or Mistral’s hosted path. Read the LICENSE before product code ships.
- Long horizons compound. One forward pass caps at 1,024 steps (32 patches). Beyond that the run is block-by-block; each block’s median is appended as context. Far-out quantiles sit on earlier guesses – fine for rough capacity plans, shaky for tight SLAs.
- No DataFrame API. GitHub issue #1 already tracks pandas/Polars. You own CSV → regular index → float64 NumPy. Skip
asfreqand irregular timestamps shrink the series instead of marking missing. - Covariate vintage. Known-future rows must span context + full
prediction_length. In backtests, only features that existed at forecast time.
Official CPU numbers (8-thread server, as of the October 2026 launch post): about 10 ms for 5M and 140 ms for 209M on one-day-ahead from three weeks of 15-minute history. Batch size and horizon move the needle. Order of magnitude is why this lands inside existing monitoring processes instead of a new GPU service.
What Timestral is (and isn’t)
Not a chatbot. Not an LLM wrapper. Per Mistral’s announcement, four open-weight TSFMs – 5M, 28M, 123M, 209M (roughly 21 / 111 / 490 / 837 MB fp32) – built for multivariate probabilistic forecasting. Hand it history; get a median path plus 21 quantiles from 0.01 to 0.99. First baseline needs no fine-tune.
Context window: up to 32,768 steps (oldest tail dropped if you overrun). NaN means missing. Past-only and known-future covariates, numeric or categorical. Joint multi-series forecasts. Architecture notes from the repo: patch-based transformer (32-step patches), DHF, covariate-aware attention.
Mistral’s launch tables put the 209M first among pretrained zero-shot entries on GIFT-Eval, TIME, and fev-bench from one checkpoint with no ensemble (example figures they publish: GIFT MASE 0.658, CRPS 0.446). They also say the 28M already beats Chronos-2 (~4× larger) on GIFT-Eval and TIME. Treat those as vendor signals until the full tech report and independent boards catch up – report was still forthcoming at launch.
Weather-model mental picture: seasons and fronts already baked in; you only drop local station readings. Patterns transfer. Your series does not retrain the universe.
Start on 28M (111 MB) unless you already know you need the top of the Pareto front. GPU stays optional for single-series work.
Against Chronos, TimesFM, and classical fits
| Model | Size focus | Notable claim (vendor) | CPU story |
|---|---|---|---|
| Timestral-28M / 209M | 5-209M family | 28M vs Chronos-2 on GIFT/TIME; 209M tops three benches (Mistral, Oct 2026) | Published 10-140 ms CPU figures |
| Chronos-2 | Larger | Strong Amazon baseline | Heavier for similar accuracy per Mistral |
| TimesFM (Google line) | Larger checkpoints | Competitive zero-shot | Timestral-209M claims win at fewer params |
| Classical (ARIMA etc.) | Per-series fit | Still solid short univariate | No foundation transfer |
Fair test: identical backtests on your two critical series, same forecast origins, MASE plus 80% band coverage. Leaderboards are a starting gun, not a PO. If you already live in forecasting stacks, look next at Chronos-style tokenization and how you design known-future calendar covariates – that pairing matters more than another screenshot.
FAQ
Do I need a GPU for Timestral?
No. Official latency figures are pure CPU. Turn on CUDA only when you already have spare cards and need higher batch throughput.
Which size should I pick first?
Hourly request load or a handful of sensors: load Timestral-28M. That is the practical first pick Mistral highlights against larger rivals. Accuracy-critical and still sub-second? Step to 123M or 209M. Edge boxes and huge batches stay on 5M (~21 MB).
Is zero-shot enough, or do I need Forge fine-tuning?
Zero-shot is a usable first baseline on many short-horizon problems – not magic. Stubborn regime shifts, proprietary covariates, or a distribution that keeps drifting are the usual reasons teams move on. Mistral points those cases at Forge for controlled fine-tuning, synthetic replay, and air-gapped training. Backtest the base model on held-out weeks first; only then decide adaptation cost is worth it. Training details should firm up when the tech report lands (still forthcoming in the launch window).
Clone the official repo, point 28M at last month of one live metric with the last two weeks held out, and score median plus p90 against whatever you run today. One afternoon beats another leaderboard thread.