谷歌研究院于 2026 年 8 月 31 日发布了时序预测基础模型「TimesFM-3」。此前的版本只能依靠单条序列的历史来推演未来,这一代则可以同时接收多条序列和外部变量。零样本、无需额外训练即可使用的便利被完整保留下来,同时把实际预测工作中最麻烦的特征准备环节一并接管。
一条折线远远不够
以销量预测为例。想知道连锁店下个月能卖出多少冰淇淋,只盯着过去的冰淇淋销量,答案只能看到一半。蛋筒和糖浆等关联商品的走势、门店客流、下个月已经排定的促销活动以及天气预报,这些因素共同决定了真实的销售结果。
然而在 2025 年 9 月推出的 TimesFM-2.5 之前,模型能处理的只有单变量,也就是一条序列的历史。想用上关联信息,用户要么自己构造特征,要么再搭一个机器学习模型。基础模型「拿来就能用」的最大卖点,一进入真实业务场景就被稀释了。
TimesFM-3 从预训练阶段就把多变量作为前提。参数量为 3.3 亿,训练语料由真实数据与合成数据组成,时间点总数超过 1 万亿。就模型规模而言并不算大,但它能吸收的信息宽度上了一个台阶。
可以接收的三类信息
TimesFM-3 按性质把输入分成三类。
第一类是多个目标序列。相互关联的序列可以一起预测,例如同时预测不同品牌的冰淇淋,并且对每个目标都支持点预测和分位数预测。
第二类是历史协变量,指客流这类只有过去数值已知、未来数值未知的信息。
第三类是历史未来协变量,这一类在实务中最见效。促销日期和天气预报属于已经确定下来的未来安排。因为可以提前告诉模型预测区间内会发生什么,它便能从历史中学到「有促销时销量如何变化」的关系,再把这个关系套用到未来的排定日期上。
在谷歌给出的示例中,单变量模型只是把周度周期原样向后延伸,而接入了促销排程的 TimesFM-3 则在每个促销日都计入了约 20% 的提升。累积到整整一个月,营收预估的差距已经无法忽视。
一次推理生成整个预测区间
内部结构沿用了此前的仅解码器 Transformer。把连续 32 个时间步的数据点归为一个 patch,并按序列做归一化以吸收量级差异,这些做法都保持不变。对于历史未来协变量,模型会把当前 patch 与未来 patch 拼接成一个 token,让模型能够提前看到已知信号。
完成分词之后的处理被描述为一个二维网格。时间方向上采用因果注意力,某个 token 只能参考同一序列中更早的 token。序列方向上则不加限制,同一时间点的 token 可以查看所有其他序列。把这两种注意力逐层交替堆叠,模型就能同时学习时间模式和序列间的相关性。
生成方式也变了。以往逐个 patch 依次生成,会累积延迟、误差和计算成本。TimesFM-3 采用 Contiguous Patch Masking,一开始就把预测区间对应的掩码 token 全部排好,用一次前向传播把它们同时填满。省去迭代循环,速度自然提上来。
输出并不局限于点估计。对每个目标序列的每个时间步,模型都会返回从第 10 百分位到第 90 百分位的 9 个分位数,预测的不确定性直接以数值区间呈现。在库存和人力排班中,上下浮动的幅度往往比中位数更有参考价值,这种输出形式与实际业务相当契合。
三项基准测试均居首位
评测使用了 GIFT-Eval、FEV-Bench 和 TIME 三项公开基准。在预训练基础模型这一范畴内,TimesFM-3 在点预测和概率预测两类指标上都排名第一。对比对象包括支持多变量的 Chronos-2 和 Toto 2.0 系列,以及上一代的 TimesFM-2.5。
值得注意的是,即便完全不提供协变量和跨序列信息、以单变量模式运行,TimesFM-3 的成绩也与其他模型持平甚至更优。也就是说,对多变量的支持并没有牺牲传统用法的性能。切换到完整的多变量模式后,差距会被进一步拉开。
现在可以从哪里上手
TimesFM-3 已在 GitHub 和 Hugging Face 上公开,与 BigQuery 的集成预计在数周内提供。若想更早感受效果,面向单变量任务的 TimesFM-2.5 已经可以通过 BigQuery 的 AI.FORECAST 命令调用。它相当于 SQL 的延伸,不需要机器学习专业知识,用内部数据做初步验证正合适。
谷歌表示,TimesFM-3 的开发参考了零售、金融、可观测性、制造、医疗和自然科学等领域的落地经验。序列越多,时序预测越难处理,而无需额外训练就能跨过这道坎,对于配不起专职数据科学家的团队来说意义不小。
总结
TimesFM-3 的要点有三条:以多变量为前提完成预训练、用一次推理生成整个预测区间、在三项公开基准上排名第一。可以把促销、天气这类未来已确定的信息交给模型,这一设计在实际预测中尤其管用。既然 GitHub 和 Hugging Face 上已经能拿到模型,最快的判断方式就是用手头数据分别跑一遍单变量模式和多变量模式,看看准备协变量究竟值不值。
