构建时间序列预测的开放生态系统:在Hugging Face中引入TimesFM

社区文章 发布于 2025年5月19日

作者:周晋安 (Nutanix),卡希夫·拉苏尔 (HuggingFace)

时间序列预测在金融、医疗、能源等行业决策中扮演着关键角色。随着对高适应性、精确和可扩展预测模型的需求增长,ARIMA等传统统计模型和经典机器学习方法日益暴露出其局限性。通常,这些传统方法需要大量手动干预,并且往往无法捕捉复杂、动态和非线性的时间模式。

为了应对这些挑战,研究人员正在采用基于大型语言模型 (LLM) 的解决方案,其中TimesFM作为一项显著的最新进展脱颖而出。TimesFM利用现代Transformer架构,在各种数据集中实现了最先进的性能——甚至在零样本预测场景中也能开箱即用,提供卓越的准确性和适应性。

image/png 图1:三组数据集的平均性能。在所有图中,指标越低越好,误差条表示一个标准误差。

认识到TimesFM等新型时间序列模型的重要性,我们呼吁一项全面的倡议,以构建一个专门为时间序列LLM量身定制的完整统一生态系统。我们的目标是建立一个标准框架,统一基准测试、微调以及在现有HuggingFace生态系统中的无缝集成,从而促进更轻松、更有效的研究和实际应用。

作为第一步,我们通过将原始TimesFM实现转换为Hugging Face兼容代码,将TimesFM集成到Hugging Face的Transformers库中。与最初的研究实现(用Pax编写,后来部分移植到PyTorch)不同,当前贡献已合并到Hugging Face中,提供了完全符合Transformers库设计模式的标准化实现。这不仅确保了与更广泛的Hugging Face生态系统(包括分词器、训练实用程序和模型中心)的兼容性,还显著降低了研究人员和工程师的入门门槛。用户现在可以使用熟悉的API和工作流程对TimesFM进行微调、基准测试和部署,而无需适应自定义代码库或非标准接口。这使得实验更快,协作更容易,实际应用更具可扩展性。

以下是一个代码示例,演示如何基于HuggingFace使用TimesFM进行预测

Python

import torch
from transformers import TimesFmModelForPrediction


model = TimesFmModelForPrediction.from_pretrained(
    "google/timesfm-2.0-500m-pytorch",
    torch_dtype=torch.bfloat16,
    attn_implementation="sdpa",
    device_map="cuda" if torch.cuda.is_available() else None
)

 # Create dummy inputs
forecast_input = [
    np.sin(np.linspace(0, 20, 100)),
    np.sin(np.linspace(0, 20, 200)),
    np.sin(np.linspace(0, 20, 400)),
]
frequency_input = [0, 1, 2]

# Convert inputs to sequence of tensors
forecast_input_tensor = [
    torch.tensor(ts, dtype=torch.bfloat16).to("cuda" if torch.cuda.is_available() else "cpu")
    for ts in forecast_input
]
frequency_input_tensor = torch.tensor(frequency_input, dtype=torch.long).to(
    "cuda" if torch.cuda.is_available() else "cpu"
)

# Get predictions from the pre-trained model
with torch.no_grad():
    outputs = model(past_values=forecast_input_tensor, freq=frequency_input_tensor, return_dict=True)
    point_forecast_conv = outputs.mean_predictions.float().cpu().numpy()
    quantile_forecast_conv = outputs.full_predictions.float().cpu().numpy()

为了进一步说明我们社区驱动方法的实际益处,我们开发了一个利用TimesFM的Microsoft Excel插件。人们可以很容易地看到TimesFM如何显著优于Excel内置的自动填充功能,提供更准确可靠的预测。这个简单而强大的演示强调了我们协作生态系统可能对行业产生的影响。

视频:由TimesFM驱动的MS Excel插件

展望未来,我们计划通过以下举措扩展我们的生态系统

  • 开发适用于所有时间序列LLM的统一管道和接口。
  • 与更多LLM工具链集成,包括用于更高效部署的vLLM和用于Web应用程序的transformer.js。
  • 建立一个社区驱动的基准排行榜,以推动持续改进。

我们热烈邀请研究人员、开发人员和行业专家与我们合作、贡献并分享他们的见解,共同塑造时间序列预测的未来。您的参与对于推动这一激动人心且不断发展的领域至关重要。

社区

注册登录发表评论