[控场AI]
· 11 分钟阅读· 5,952 字

TimesFM详解:谷歌时序基础模型与浏览器部署实战

TimesFM详解:谷歌时序基础模型与浏览器部署实战

Google 开源时序基础模型 TimesFM 实现零样本预测,并可压缩进浏览器运行。

TimesFM 是 Google Research 开源的 decoder-only 时间序列基础模型,基于约 1000 亿数据点预训练,无需针对新序列训练即可零样本预测未来并给出分位数区间。2.5 版本以 2 亿参数支持 16384 步上下文,权重采用 Apache-2.0 协议。社区项目 webTimesFM 通过 ONNX 量化把模型压缩到 261 MB(8-bit)或 146 MB(4-bit),借助 WebGPU/WASM 在浏览器内 50–300 毫秒完成 128 步预测。实测显示它擅长趋势、季节、周期等规律模式,却无法预见疫情、战争等数据外冲击;在价格类序列上,不确定性区间往往比点预测更有价值。

一句话理解 TimesFM:给数字用的 ChatGPT

Google Research 开源的 TimesFM(Time Series Foundation Model)是一个专门处理时间序列数据的 AI 模型。给它一串按时间排列的数字——每日销量、月度降雨、每小时用电量或股票价格——它就能预测接下来会发生什么,并给出一个概率区间。

它最特别的地方在于不需要训练。TimesFM 已经从约 1000 亿个真实数据点中学会了趋势、季节和周期的形态,面对从未见过的序列也能直接给出预测,这就是所谓的零样本预测(zero-shot forecasting)。该模型最初来自 ICML 2024 的论文《A decoder-only foundation model for time-series forecasting》,2.5 版本之前的代码与权重均以 Apache-2.0 协议开源。

用一句话概括:TimesFM 像 ChatGPT,只不过它读写的不是文字,而是数字。

TimesFM 时序预测示意图

什么是时间序列基础模型

基础模型(Foundation Model)通常具备几个特征:在超大规模多样化数据上预训练一次、通用而非针对单一任务、开箱即用(零样本)、且可按需微调。GPT、Gemini、Claude 是文本领域的基础模型,TimesFM 则属于时间序列领域,同类选手还包括 Amazon 的 Chronos、Salesforce 的 Moirai、Lag-Llama 和 Nixtla 的 TimeGPT。

与传统方法的关键差异

维度传统模型(ARIMA/Prophet/ETS)TimesFM
训练方式每条序列单独拟合训练一次,通用
上手门槛需要数据科学家调参粘贴数字即可预测
知识范围只知道当前序列见过数百万种模式
不确定性单线或拟合区间内建分位数(10%–90%)
适用场景少数关键序列且有调参时间序列多、时间紧、历史短

这组对比揭示了 TimesFM 的真正价值主张:不是取代精密调优的传统模型,而是在规模化预测场景下把边际成本降到接近零。

零样本预测(zero-shot forecasting)指模型在没有任何针对目标序列的额外训练或微调的情况下,直接对全新序列做出预测。它依赖预训练阶段积累的跨领域模式知识,将新序列视为又一个待完成的「上下文」。这与传统监督学习形成鲜明对比:后者通常要求为每个任务收集标注数据并重新训练。零样本能力让 TimesFM 在历史数据极短或根本来不及建模的场景中依然可用,但也意味着它的表现受限于预训练分布——遇到训练中罕见的模式或结构性突变时,零样本预测的可靠性会明显下降。

分位数预测(quantile forecasting)输出的是未来数值在不同概率水平上的取值,例如 10%、50%、90% 分位数,而非单一的点预测。10%–90% 区间意味着模型认为未来值有 80% 的概率落在该范围内。相比只给一条中位线,分位数能直接表达不确定性,便于下游做库存缓冲、风险预算或异常预警。TimesFM 的每个输出步都自带多个分位数,这正是它在价格类等难预测序列上比点预测更有价值的原因。

架构拆解:GPT 的骨架,数字的血肉

TimesFM 是一个 decoder-only transformer,与 GPT、Gemini、Llama 同属 Google 2017 年《Attention Is All You Need》开创的架构家族。Google 的关键改造在于「token」的定义:

  • 语言模型的输入 token 是词或子词,任务是预测下一个词;
  • TimesFM 的输入 token 是连续 32 个数字组成的 patch,任务是预测接下来 128 个数字。

用 patch 而非单值输入(PatchTST 也采用类似思路)让长历史读取变得廉价;一次性输出 128 步的长输出 patch 则让预测更快更稳定。

TimesFM 2.5 内部配置

据模型公开配置,2.5 版本约有 2 亿参数、20 层 transformer、模型宽度 1280 配 16 个注意力头,输入 patch 为 32 步,单次输出 128 步,最长上下文达 16384 个数据点。每步输出 9 个分位数,另有一个可选分位数头支持最长 1024 步的预测。当预测跨度超过 128 步时,模型会把自身预测结果回灌再跑一轮,类似聊天机器人逐词生成的方式。

训练数据混合了 Google Trends 搜索热度、维基百科页面浏览量、合成数据,以及电力、交通、天气、零售、经济等公开数据集——这种多样性正是单一模型能同时预测二氧化碳、太阳黑子、店铺销量和油价的原因。

技术栈方面,Google 用 JAX 训练(初版基于 PaxML),2.5 同时发布 Flax(JAX)和 PyTorch 实现,硬件为自研 TPU,权重以 safetensors 格式(2.5 为 925 MB)托管在 Hugging Face。

Decoder-only transformer 是只保留解码器堆栈的 Transformer 变体,通过因果注意力(每个位置只能看到左侧上下文)逐 token 生成输出。GPT 系列即采用此结构。TimesFM 沿用该范式,但把「下一个词」替换为「下一段数字」,从而继承了大模型预训练+自回归生成的可扩展性。

Patch 指把连续的时间步打包成一个输入单元。语言模型以子词为 token,TimesFM 则以 32 个连续观测值为一个输入 patch、128 个值为一个输出 patch。这样做的好处是:注意力计算的长度缩短为原来的 1/32,长历史读取的成本大幅下降;同时输出 patch 一次性给出多步预测,避免逐点递归带来的误差累积。PatchTST 等模型也验证了 patch 化对时序建模的有效性。

版本演进:从 1.0 到 3.0 的取舍

版本规模最大历史关键变化权重协议
1.0200M512ICML 论文原始版本Apache-2.0
2.0500M2048更大模型、更多数据Apache-2.0
2.5200M16384更小但记忆更长;连续分位数头;取消频率设置;通过 XReg 支持协变量Apache-2.0
3.0更大更长原生多变量预测与协变量;据 Google 称在 fev-bench、TIME 和 GIFT-Eval 上领先下载权重非商用;商用走 BigQuery ML

这个演进路线值得玩味:2.5 在参数减半的同时把上下文拉长到 8 倍,说明 Google 的判断是「长记忆 + 小体积」比「堆参数」更贴合实际部署需求。而 3.0 转向非商用权重许可,则把商业变现路径收拢到 Google Cloud 生态内。

浏览器实测:把 2 亿参数模型装进网页

社区项目 webTimesFM 把 TimesFM 2.5 完整跑在网页里——没有服务器、不需要 Python、不用注册,数据不出本机。它的技术链路是:Google 的 PyTorch 权重(safetensors,925 MB)→ 转为 ONNX → 量化为 8-bit(261 MB)或 4-bit(146 MB)→ ONNX Runtime Web → WebGPU(走显卡)或 WASM(走 CPU)→ timesfm.js + GitHub Pages。

在笔记本 GPU 上,128 步预测约需 50–300 毫秒。8-bit 版本输出与 Google 原版几乎一致;4-bit 下载更小,但在短序列上可能出现漂移。项目还提供了一个「Run self-test vs PyTorch」按钮,用 Google 官方 Python 代码在你本机做对照验证——这一步很关键,因为量化和浏览器端的预处理/后处理重实现都可能带来细微偏差。

嵌入自有网页只需引入 timesfm.js,加载 ONNX 模型后调用 model.forecast(history, 128),即可拿到中位数预测和分位数数组。

ONNX(Open Neural Network Exchange)是一种开放的模型交换格式,用于在不同深度学习框架之间迁移模型。PyTorch 训练出的权重可导出为 ONNX 计算图,再交由 ONNX Runtime 在多种硬件后端上执行。ONNX Runtime Web 是该运行时针对浏览器的版本,支持 WebGPU 与 WASM 两种执行路径。WebGPU 允许网页直接调用显卡进行并行计算,适合矩阵乘法密集的 transformer 推理;WASM(WebAssembly)则在 CPU 上以接近原生的速度运行,作为无 GPU 环境的后备。量化(8-bit/4-bit)在保持数值近似的前提下压缩权重体积,是让 925 MB 模型塞进浏览器下载预算的关键。

能力边界:模式很强,事件很盲

站点每个示例都带「Hold back」功能:隐藏最近数据、让模型预测、再与最简单的「无变化」基线对比打分。

擅长的地方是规律性模式。 夏威夷 Mauna Loa 的二氧化碳浓度序列(稳定上升 + 年度周期),TimesFM 五年预测几乎完全命中,比「无变化」基线好 95%。太阳黑子约 11 年的周期,模型读 85 年历史后能提前十年预测下一轮周期的上升与峰值。

失败的地方是数据之外的冲击。 全球极端贫困率序列中,TimesFM 看到 2018 年前的稳定下降便预期延续,无法预知 2020 年疫情会让进程停滞。规律很清晰:TimesFM 精通模式(趋势、季节、周期),但对事件(疫情、战争、政策变化)只能等它反映到数字里。对价格类序列,「无变化」基线本身极难击败,此时不确定性区间反而是最有价值的输出。

时事预测实践:世界大赛、石油与比特币

「Current affairs」标签把 TimesFM 指向当周新闻,数据由 GitHub Action 每日自动刷新。

世界大赛胜率由三步合成:用本赛季每场 MLB 比赛计算 Elo 强度评分 → TimesFM 预测各队强度并给出不确定区间 → 浏览器内模拟 10 万次季后赛,从真实系列赛比分起步。在 10 月 17 日酿酒人横扫道奇后,模型给出密尔沃基约 71% 的夺冠概率。说个细节,TimesFM 的区间只让赔率轻微移动——系列赛比分和赛季战绩做了大部分工作,页面也如实说明了这一点。

石油和比特币提供 30 天预测与不确定区间,页面同样解释了价格为何难以预测。

新闻情绪:只做警示灯,不做方向盘

TimesFM 只读数字,所以项目用另一个小模型读标题:每天对每个主题(石油、比特币、各季后赛球队)最多 100 条 Google News 标题用 VADER 打分,平均成 −10 到 +10 的「新闻基调」。

关键在于基调不等于方向。「战争升级」听起来负面,却会推高油价。因此新闻从不参与预测,只作为警示灯:当最新一天的基调超过其日常波动两倍时触发 ⚠ 警报,预测图上叠加一段紫色「风暴区间」,基于该价格历史上最动荡时期的波动幅度构建。

回放 8 月至 10 月的无后见之明测试,五次石油新闻警报中有三次出现在布伦特原油大幅波动之前(+7%、+10%、+18%),漏掉了一次大跳涨。连风暴区间对战争引发的尖峰来说都偏窄。结论是:新闻能告诉你何时该担心,但不总能告诉你多大。

VADER(Valence Aware Dictionary and sEntiment Reasoner)是一种基于词典与规则的轻量级情感分析工具,专为社交媒体短文本设计。它结合情感词表、否定词、程度副词、标点和大小写等线索,输出正面、中性、负面及复合得分,无需训练即可使用。文章将其对标题的复合得分平均为 −10 到 +10 的「新闻基调」,正是利用 VADER 对短句、口语化表达鲁棒的特点。但 VADER 只判断文本的情感极性,无法理解「负面新闻可能推高油价」这类因果方向,因此项目只把基调当作波动警示信号,而不作为预测输入。

上手方式与重要免责

想直接体验,打开 webTimesFM 点击「Load model」(一次性下载 261 MB),选示例按「Forecast」即可,全部计算在本机完成。不想写代码的话,Tutorial 标签演示了如何从 Excel/Google Sheets 粘贴一列数据、上传 CSV、选择上下文与预测跨度,并用 Hold back 检验精度。Python 用户可直接用 Google 官方包 github.com/google-research/timesfm。

必须说清楚几点:webTimesFM 是独立非官方社区项目,与 Google 无关;浏览器模型是官方权重的 ONNX 量化转换,未重新训练或微调,输出可能与官方代码存在细微差异;石油、比特币等价格预测是教学演示而非投资建议,测试中模型与「无变化」猜测大致打平;世界大赛赔率忽略先发投手、伤病等诸多因素,同样不是投注建议。预测会错,而且经常错。

TimesFM 真正打开的空间在于:当一个 2 亿参数的时序基础模型可以压缩到 261 MB、在浏览器里 50 毫秒给出带分位数的预测,「预测」这件事的准入门槛被彻底改写。它不会让每个人变成数据科学家,但会让每个有数字的人都有一次严肃预测的机会。

#TimesFM#时间序列基础模型#Google Research#零样本预测#ONNX Runtime Web#WebGPU#时序预测#浏览器AI
分享:

相关推荐