MISTRAL AI · 时间序列预测

Timestral:架构与本地预测

Timestral 是 Mistral AI 首个时间序列基础模型系列,用于预测数值序列。它提供 5M 至 209M 参数的四种规格,支持在 CPU 或 GPU 上进行零样本概率预测。

本文解读官方资料,不代表本站独立评测。安装与预测示例为参考教程,本站未实际执行。

发布日期: · 资料核验:

四种规格,一套预测工作流

先用 5M 熟悉输入输出,再用自有留出数据评估更大规格。以下是入门选型建议,不是针对你业务的实测排名。

官方 FP32 权重文件大小与入门建议
模型FP32 权重文件选型建议
Timestral-5M21 MB学习 API,或尝试较轻的 CPU 工作负载。
Timestral-28M111 MB在较小资源占用下评估更大模型。
Timestral-123M490 MB评估资源占用与预测表现之间的折中。
Timestral-209M837 MB评估下方官方基准使用的旗舰规格。

共同能力:单变量或多变量目标、仅历史协变量与已知未来协变量,以及 21 个输出分位数。最多接收 32,768 个历史时间步,单位不是文本 token。每个预测块最多覆盖 1,024 个未来时间步;更长预测会把已预测的中位数作为后续块的上下文。

文件大小代表下载和存储占用,不等于运行所需内存或显存。运行资源还取决于张量缓冲区、历史长度、批次和变量数量,此处不承诺最低内存配置。

Timestral 如何把历史序列转为预测

已公开设计采用因果分块 Transformer。209M 模型卡列出 24 层、768 维嵌入。下图解释推理过程,不是对训练流程的完整复现。

  1. 01

    历史观测

    输入等间隔目标序列及可选协变量,用 NaN 标记缺失观测。

  2. 02

    每块 32 个时间步

    数值与缺失标记共同编码,并保留时间先后关系。

  3. 03

    时间与变量注意力

    注意力关联历史时间和不同变量;协变量可向目标传递信息,但不读取目标行。

  4. 04

    预测 token 与分位数

    解耦预测跨度机制(DHF)用独立预测 token 读取已编码上下文,输出有序分位数。

  1. 01

    只使用预测时已知的信息

    历史协变量覆盖历史区间;已知未来协变量还需覆盖预测区间,例如提前确定的运行计划。未来真实目标值不能伪装成已知未来协变量。类别输入使用数字类别编码,库会在适用场景执行目标编码。

  2. 02

    把区间理解为不确定性

    中位数对应 0.5 分位数。0.1 与 0.9 分位数构成名义上的中央 80% 预测区间,不保证实际业务未来观测一定按该比例落入区间。应使用留出时间段检查校准表现。

截至核验日期,模型卡仍标注技术报告即将发布。此处架构信息来自 README 与模型卡,不推测尚未公开的训练细节。

官方零样本基准对比

Mistral 报告其发布时在预训练零样本预测模型中取得领先结果。下表引用 209M 模型卡对比,保留原始模型名称和指标标签;这是有日期的资料快照,不是实时榜单。

Mistral 模型卡数据 · 官方报告,非本站实测
基准 · 指标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 标签,不假定两个标签代表完全相同的计算方式。箭头标明数值越低还是越高越好。

  1. 01

    MASE ↓

    平均绝对缩放误差,用朴素参考方法的误差尺度归一化绝对预测误差,越低越好。表中的 GIFT-Eval 与 TIME 值是汇总结果,不是预测正确率百分比。

  2. 02

    CRPS ↓

    连续排序概率得分用于评价预测分布与实际观测的差异,越低越好。跨数据集比较前应检查基准的定义和汇总方式。

  3. 03

    SQL skill score ↑

    缩放分位数损失的技能得分表示相对参考预测的改善,越高越好。50.39 不等于 50.39% 的预测准确率。MASE skill score 行也采用越高越好的评分方式。

  4. 04

    输入与评估范围

    README 指定使用 forecaster 默认设置及最多 32,768 步历史:GIFT-Eval 为 97 个配置,使用历史数值协变量;TIME 为 98 个任务,不含协变量;fev-bench 为 100 个任务,使用历史与已知未来协变量,并包含编码后的类别信息。

汇总结果不代表对每个传感器、需求序列或业务预测跨度都最优。应在自有留出时间段统一预测起点、跨度、协变量与误差指标,且不得把未来信息混入历史。

CPU 速度与本地运行成本

发布文章给出一个特定 CPU 场景,可帮助理解模型大小的取舍,但不是生产环境延迟承诺。

厂商报告的特定场景 CPU 延迟
模型报告延迟报告条件
Timestral-5M10 ms服务器 CPU,8 线程;输入 3 周、15 分钟间隔的历史,预测未来 1 天。
Timestral-209M140 ms服务器 CPU,8 线程;输入 3 周、15 分钟间隔的历史,预测未来 1 天。

文章未给出精确 CPU 型号或完整计时协议。首次下载、加载模型、输入输出及变量数量都会影响端到端时间,不应据此推导通用加速倍数。

本地推理消耗 CPU/GPU 时间、内存、电力和运维投入;可下载权重受其许可约束。本文尚未核实 Timestral 专属托管 API 的公开价格或端点,不从基准推导 token 单价或单次预测售价。

本地上手:从 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

环境配置二选一。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

预期接口形状(非本站实测输出):median 的形状为 (1, 1, 96),表示一条序列、一个变量、96 个未来时间步。随机游走只是合成演示数据,其预测不能证明模型质量。

评估旗舰规格时,将模型 ID 改为 mistralai/Timestral-209M。配置受支持 CUDA 环境后可使用 device="cuda"。增加历史长度、变量数或批次前先检查内存,并用留出数据比较效果。

用等间隔 CSV 序列预测

准备带表头的单列 value 文件,每一行对应一个时间步,并按时间从旧到新排序。短示例只演示文件格式,实际评估需提供有意义的历史覆盖。

series.csv · 格式示例

value
100
103
""
108
110

保存为 forecast_csv.py;运行 python forecast_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 为 prediction_length。应根据变量关联关系组织数据,不要机械地把相关传感器拆成独立批次。

缓存与本地目录离线推理

常规加载会把 config.json 与 model.safetensors 下载到 Hugging Face 缓存。缓存完整或本地目录齐备后,可在不请求 Hub 的情况下加载模型。

分别使用:联网缓存、缓存加载、本地目录

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
)

准备好文件后选用缓存或本地目录方式。上方三次加载用于说明生命周期,不要求每个脚本都执行三次。请替换占位路径,Windows 可使用 r"D:\models\Timestral-5M"。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;模型权重采用 Modified MIT,而非普通 MIT。209M 权重许可规定:若公司或雇主上一月的全球合并月收入超过 2,000 万美元,则不能依该许可行使权利,需向 Mistral 申请商业授权。使用时应保留要求的声明,并核对所选检查点的许可原文。

Timestral 常见问题

官方来源与核验日期

更新信息请以原始资料为准。基准数值、接口、接入状态及许可文字可能变化,下方日期为本指南的资料核验时间。