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
MISTRAL AI · 时间序列预测
Timestral 是 Mistral AI 首个时间序列基础模型系列,用于预测数值序列。它提供 5M 至 209M 参数的四种规格,支持在 CPU 或 GPU 上进行零样本概率预测。
先用 5M 熟悉输入输出,再用自有留出数据评估更大规格。以下是入门选型建议,不是针对你业务的实测排名。
| 模型 | FP32 权重文件 | 选型建议 |
|---|---|---|
| Timestral-5M | 21 MB | 学习 API,或尝试较轻的 CPU 工作负载。 |
| Timestral-28M | 111 MB | 在较小资源占用下评估更大模型。 |
| Timestral-123M | 490 MB | 评估资源占用与预测表现之间的折中。 |
| Timestral-209M | 837 MB | 评估下方官方基准使用的旗舰规格。 |
共同能力:单变量或多变量目标、仅历史协变量与已知未来协变量,以及 21 个输出分位数。最多接收 32,768 个历史时间步,单位不是文本 token。每个预测块最多覆盖 1,024 个未来时间步;更长预测会把已预测的中位数作为后续块的上下文。
文件大小代表下载和存储占用,不等于运行所需内存或显存。运行资源还取决于张量缓冲区、历史长度、批次和变量数量,此处不承诺最低内存配置。
已公开设计采用因果分块 Transformer。209M 模型卡列出 24 层、768 维嵌入。下图解释推理过程,不是对训练流程的完整复现。
输入等间隔目标序列及可选协变量,用 NaN 标记缺失观测。
数值与缺失标记共同编码,并保留时间先后关系。
注意力关联历史时间和不同变量;协变量可向目标传递信息,但不读取目标行。
解耦预测跨度机制(DHF)用独立预测 token 读取已编码上下文,输出有序分位数。
历史协变量覆盖历史区间;已知未来协变量还需覆盖预测区间,例如提前确定的运行计划。未来真实目标值不能伪装成已知未来协变量。类别输入使用数字类别编码,库会在适用场景执行目标编码。
中位数对应 0.5 分位数。0.1 与 0.9 分位数构成名义上的中央 80% 预测区间,不保证实际业务未来观测一定按该比例落入区间。应使用留出时间段检查校准表现。
截至核验日期,模型卡仍标注技术报告即将发布。此处架构信息来自 README 与模型卡,不推测尚未公开的训练细节。
Mistral 报告其发布时在预训练零样本预测模型中取得领先结果。下表引用 209M 模型卡对比,保留原始模型名称和指标标签;这是有日期的资料快照,不是实时榜单。
| 基准 · 指标 | Timestral-209M | t0-gamma | TimesFM-3 | Toto-2.0-2.5B | Chronos-2 |
|---|---|---|---|---|---|
| GIFT-Eval · MASE ↓ | 0.658 | 0.661 | 0.667 | 0.696 | 0.698 |
| GIFT-Eval · CRPS ↓ | 0.446 | 0.452 | 0.456 | 0.476 | 0.485 |
| TIME · MASE ↓ | 0.626 | 0.637 | 0.640 | 0.642 | 0.662 |
| TIME · CRPS ↓ | 0.522 | 0.534 | 0.536 | 0.539 | 0.556 |
| fev-bench · SQL skill score ↑ | 50.39 | 49.42 | 48.99 | 44.42 | 47.28 |
| fev-bench · MASE skill score ↑ | 39.49 | 37.99 | 37.82 | 32.54 | 35.50 |
来源标签差异:发布文章把 GIFT-Eval 的概率预测图标为 WQL,而模型卡表格使用 CRPS。本页数值沿用模型卡的 CRPS 标签,不假定两个标签代表完全相同的计算方式。箭头标明数值越低还是越高越好。
平均绝对缩放误差,用朴素参考方法的误差尺度归一化绝对预测误差,越低越好。表中的 GIFT-Eval 与 TIME 值是汇总结果,不是预测正确率百分比。
连续排序概率得分用于评价预测分布与实际观测的差异,越低越好。跨数据集比较前应检查基准的定义和汇总方式。
缩放分位数损失的技能得分表示相对参考预测的改善,越高越好。50.39 不等于 50.39% 的预测准确率。MASE skill score 行也采用越高越好的评分方式。
README 指定使用 forecaster 默认设置及最多 32,768 步历史:GIFT-Eval 为 97 个配置,使用历史数值协变量;TIME 为 98 个任务,不含协变量;fev-bench 为 100 个任务,使用历史与已知未来协变量,并包含编码后的类别信息。
汇总结果不代表对每个传感器、需求序列或业务预测跨度都最优。应在自有留出时间段统一预测起点、跨度、协变量与误差指标,且不得把未来信息混入历史。
发布文章给出一个特定 CPU 场景,可帮助理解模型大小的取舍,但不是生产环境延迟承诺。
| 模型 | 报告延迟 | 报告条件 |
|---|---|---|
| Timestral-5M | 10 ms | 服务器 CPU,8 线程;输入 3 周、15 分钟间隔的历史,预测未来 1 天。 |
| Timestral-209M | 140 ms | 服务器 CPU,8 线程;输入 3 周、15 分钟间隔的历史,预测未来 1 天。 |
文章未给出精确 CPU 型号或完整计时协议。首次下载、加载模型、输入输出及变量数量都会影响端到端时间,不应据此推导通用加速倍数。
本地推理消耗 CPU/GPU 时间、内存、电力和运维投入;可下载权重受其许可约束。本文尚未核实 Timestral 专属托管 API 的公开价格或端点,不从基准推导 token 单价或单次预测售价。
前提:Python 3.10 或更新版本、PyTorch 2.4 或更新版本、Git,并可访问依赖与模型下载站点。GPU 可选。Windows 示例使用 Python 3.12,请选择本机已安装且受支持的版本。
以下仅为参考步骤:本站未安装 Timestral、下载权重或运行预测。首次使用需要联网获取依赖与所选模型检查点。
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
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 官方安装入口选择。
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())python forecast.py
预期接口形状(非本站实测输出):median 的形状为 (1, 1, 96),表示一条序列、一个变量、96 个未来时间步。随机游走只是合成演示数据,其预测不能证明模型质量。
评估旗舰规格时,将模型 ID 改为 mistralai/Timestral-209M。配置受支持 CUDA 环境后可使用 device="cuda"。增加历史长度、变量数或批次前先检查内存,并用留出数据比较效果。
准备带表头的单列 value 文件,每一行对应一个时间步,并按时间从旧到新排序。短示例只演示文件格式,实际评估需提供有意义的历史覆盖。
value 100 103 "" 108 110
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 不会补齐缺失文件,离线前也需完成依赖安装。
在已激活环境检查 python --version 与 python -m pip show torch,确认 Python ≥ 3.10、torch ≥ 2.4 且 Git 可用。CUDA 还需要兼容的 PyTorch 与驱动,可先用 CPU 区分问题来源。
检查网络、磁盘空间和大小写敏感的模型 ID。离线缓存需包含所选版本;本地目录需同时包含 config.json 与 model.safetensors,不能把单个文件名当成权重目录。
目标支持 (T,)、(B, T) 或 (B, V, T)。各序列需对齐采样间隔,缺失值用 NaN,已知未来协变量需覆盖 T + H 步。不要把测试区间的真实观测放进输入历史。
先用 5M、更小批次与更少变量;仅在符合任务需求时缩短历史。将下载、加载与推理分别计时。权重文件大小不包含运行激活值和库开销。
推理代码采用 Apache 2.0;模型权重采用 Modified MIT,而非普通 MIT。209M 权重许可规定:若公司或雇主上一月的全球合并月收入超过 2,000 万美元,则不能依该许可行使权利,需向 Mistral 申请商业授权。使用时应保留要求的声明,并核对所选检查点的许可原文。
更新信息请以原始资料为准。基准数值、接口、接入状态及许可文字可能变化,下方日期为本指南的资料核验时间。