pytorch-forecasting

pytorch-forecasting

前沿的时间序列预测工具包,提供灵活的高层API

PyTorch Forecasting 是一个基于 PyTorch 的时间序列预测包,适用于实际应用和研究。它支持多种神经网络架构及自动日志记录,利用 PyTorch Lightning 实现多 GPU/CPU 的扩展训练,并内置模型解释功能。关键特性包括时间序列数据集类、基本模型类、增强的神经网络架构、多视角时间序列指标和超参数优化。安装简便,支持 pip 和 conda,文档详尽,并包含模型比较和使用案例。

PyTorch Forecasting时间序列预测深度学习神经网络PyTorch LightningGithub开源项目

PyTorch Forecasting

PyPI Version Conda Version Docs Status Linter Status Build Status Code Coverage

文档 | 教程 | 发布说明

PyTorch Forecasting 是一个基于 PyTorch 的时间序列预测包,具有最先进的网络架构。它提供了用于在 pandas 数据框上训练网络的高级 API,并利用 PyTorch Lightning 在(多)GPU 和 CPU 上进行可扩展的训练以及自动记录。


我们在 Towards Data Science 上的文章介绍了该包并提供了背景信息。

PyTorch Forecasting 旨在简化使用神经网络进行现实世界应用和研究的最先进时间序列预测。目标是为专业人员提供最大灵活性的高级 API,并为初学者提供合理的默认设置。 具体来说,该包提供了

  • 一个时间序列数据集类,抽象处理变量转换、缺失值、随机子采样、多种历史长度等。
  • 一个基础模型类,提供基本的时间序列模型训练以及在 tensorboard 上记录和泛化的可视化,如实际 vs 预测和依赖关系图。
  • 多个用于时间序列预测的神经网络架构,已针对现实世界部署进行了增强,并具有内置解释功能。
  • 多重视角时间序列指标。
  • 通过 optuna 进行超参数调优。

该包构建于 pytorch-lightning 之上,支持在 CPU、单 GPU 和多 GPU 上开箱即用地训练。

安装

如果你在 Windows 上工作,首先需要安装 PyTorch:

pip install torch -f https://download.pytorch.org/whl/torch_stable.html

否则,你可以继续执行:

pip install pytorch-forecasting

或者,你可以通过 conda 安装该包:

conda install pytorch-forecasting pytorch -c pytorch>=1.7 -c conda-forge

PyTorch Forecasting 现在从 conda-forge 频道安装,而 PyTorch 从 pytorch 频道安装。

要使用 MQF2 损失(多变量分位数损失),还需要安装:

pip install pytorch-forecasting[mqf2]

文档

访问 https://pytorch-forecasting.readthedocs.io 阅读详细教程的文档。

可用模型

文档提供了可用模型的比较

要实现新模型或其他自定义组件,请参见 如何实现新模型教程,它涵盖了基础及高级架构。

使用示例

可以使用 PyTorch Lightning Trainerpandas Dataframes 上训练网络,这些 Dataframes 首先会转换为 TimeSeriesDataSet

# 训练导入 import lightning.pytorch as pl from lightning.pytorch.loggers import TensorBoardLogger from lightning.pytorch.callbacks import EarlyStopping, LearningRateMonitor # 导入数据集、网络和优化指标 from pytorch_forecasting import TimeSeriesDataSet, TemporalFusionTransformer, QuantileLoss from lightning.pytorch.tuner import Tuner # 加载数据:这是包含至少一个目标列(你想要预测的内容)、时间序列 ID 列(应为唯一字符串以标识每个时间序列)和观察时间列(应为单调递增整数)的 pandas 数据帧 data = ... # 定义数据集,即为 pandas 数据帧添加元数据,使模型能够理解它 max_encoder_length = 36 max_prediction_length = 6 training_cutoff = "YYYY-MM-DD" # 截止日期 training = TimeSeriesDataSet( data[lambda x: x.date <= training_cutoff], time_idx= ..., # 观察时间的列名 target= ..., # 预测目标的列名 group_ids=[ ... ], # 时间序列 ID 的列名(或列名列表) max_encoder_length=max_encoder_length, # 使用的历史长度 max_prediction_length=max_prediction_length, # 预测未来的长度 # 静态协变量 static_categoricals=[ ... ], static_reals=[ ... ], # 已知和未知协变量,用于提供预测信息 time_varying_known_categoricals=[ ... ], time_varying_known_reals=[ ... ], time_varying_unknown_categoricals=[ ... ], time_varying_unknown_reals=[ ... ], ) # 使用与训练数据集相同的标准化技术创建验证数据集 validation = TimeSeriesDataSet.from_dataset(training, data, min_prediction_idx=training.index.time.max() + 1, stop_randomization=True) # 转换数据集为训练的加载器 batch_size = 128 train_dataloader = training.to_dataloader(train=True, batch_size=batch_size, num_workers=2) val_dataloader = validation.to_dataloader(train=False, batch_size=batch_size, num_workers=2) # 使用早停创建 PyTorch Lightning Trainer early_stop_callback = EarlyStopping(monitor="val_loss", min_delta=1e-4, patience=1, verbose=False, mode="min") lr_logger = LearningRateMonitor() trainer = pl.Trainer( max_epochs=100, accelerator="auto", # 在 CPU 上运行,如果在多个 GPU 上运行,使用 strategy="ddp" gradient_clip_val=0.1, limit_train_batches=30, # 每个 epoch 的训练批次数 callbacks=[lr_logger, early_stop_callback], logger=TensorBoardLogger("lightning_logs") ) # 定义要训练的网络 - 架构主要由数据集推断,因此用户只需设置少数超参数 tft = TemporalFusionTransformer.from_dataset( # 数据集 training, # 架构超参数 hidden_size=32, attention_head_size=1, dropout=0.1, hidden_continuous_size=16, # 要优化的损失指标 loss=QuantileLoss(), # 记录频率 log_interval=2, # 优化器参数 learning_rate=0.03, reduce_on_plateau_patience=4 ) print(f"网络中的参数数量: {tft.size()/1e3:.1f}千") # 找到最佳的学习率 res = Tuner(trainer).lr_find( tft, train_dataloaders=train_dataloader, val_dataloaders=val_dataloader, early_stop_threshold=1000.0, max_lr=0.3, ) # 并绘制结果 - 总是需要视觉确认建议的学习率是否合理 print(f"建议的学习率: {res.suggestion()}") fig = res.plot(show=True, suggest=True) fig.show() # 在数据上拟合模型 - 如有必要,以正确的学习率重新定义模型 trainer.fit( tft, train_dataloaders=train_dataloader, val_dataloaders=val_dataloader, )

编辑推荐精选

Qwen2.5-VL

Qwen2.5-VL

一款强大的视觉语言模型,支持图像和视频输入

Qwen2.5-VL 是一款强大的视觉语言模型,支持图像和视频输入,可用于多种场景,如商品特点总结、图像文字识别等。项目提供了 OpenAI API 服务、Web UI 示例等部署方式,还包含了视觉处理工具,有助于开发者快速集成和使用,提升工作效率。

HunyuanVideo

HunyuanVideo

HunyuanVideo 是一个可基于文本生成高质量图像和视频的项目。

HunyuanVideo 是一个专注于文本到图像及视频生成的项目。它具备强大的视频生成能力,支持多种分辨率和视频长度选择,能根据用户输入的文本生成逼真的图像和视频。使用先进的技术架构和算法,可灵活调整生成参数,满足不同场景的需求,是文本生成图像视频领域的优质工具。

WebUI for Browser Use

WebUI for Browser Use

一个基于 Gradio 构建的 WebUI,支持与浏览器智能体进行便捷交互。

WebUI for Browser Use 是一个强大的项目,它集成了多种大型语言模型,支持自定义浏览器使用,具备持久化浏览器会话等功能。用户可以通过简洁友好的界面轻松控制浏览器智能体完成各类任务,无论是数据提取、网页导航还是表单填写等操作都能高效实现,有利于提高工作效率和获取信息的便捷性。该项目适合开发者、研究人员以及需要自动化浏览器操作的人群使用,在 SEO 优化方面,其关键词涵盖浏览器使用、WebUI、大型语言模型集成等,有助于提高网页在搜索引擎中的曝光度。

xiaozhi-esp32

xiaozhi-esp32

基于 ESP32 的小智 AI 开发项目,支持多种网络连接与协议,实现语音交互等功能。

xiaozhi-esp32 是一个极具创新性的基于 ESP32 的开发项目,专注于人工智能语音交互领域。项目涵盖了丰富的功能,如网络连接、OTA 升级、设备激活等,同时支持多种语言。无论是开发爱好者还是专业开发者,都能借助该项目快速搭建起高效的 AI 语音交互系统,为智能设备开发提供强大助力。

olmocr

olmocr

一个用于 OCR 的项目,支持多种模型和服务器进行 PDF 到 Markdown 的转换,并提供测试和报告功能。

olmocr 是一个专注于光学字符识别(OCR)的 Python 项目,由 Allen Institute for Artificial Intelligence 开发。它支持多种模型和服务器,如 vllm、sglang、OpenAI 等,可将 PDF 文件的页面转换为 Markdown 格式。项目还提供了测试框架和 HTML 报告生成功能,方便用户对 OCR 结果进行评估和分析。适用于科研、文档处理等领域,有助于提高工作效率和准确性。

飞书多维表格

飞书多维表格

飞书多维表格 ×DeepSeek R1 满血版

飞书多维表格联合 DeepSeek R1 模型,提供 AI 自动化解决方案,支持批量写作、数据分析、跨模态处理等功能,适用于电商、短视频、影视创作等场景,提升企业生产力与创作效率。关键词:飞书多维表格、DeepSeek R1、AI 自动化、批量处理、企业协同工具。

CSM

CSM

高质量语音生成模型

CSM 是一个开源的语音生成项目,它提供了一个基于 Llama-3.2-1B 和 CSM-1B 的语音生成模型。该项目支持多语言,可生成多种声音,适用于研究和教育场景。通过使用 CSM,用户可以方便地进行语音合成,同时项目还提供了水印功能,确保生成音频的可追溯性和透明度。

agents-course

agents-course

Hugging Face 的 AI 智能体课程,涵盖多种智能体框架及相关知识

本项目是 Hugging Face 推出的 AI 智能体课程,深入介绍了 AI 智能体的相关概念,如大语言模型、工具使用等。课程包含多个单元,详细讲解了不同的智能体框架,如 smolagents 和 LlamaIndex,提供了丰富的学习资源和实践案例。适合对 AI 智能体感兴趣的开发者和学习者,有助于提升他们在该领域的知识和技能。

RagaAI-Catalyst

RagaAI-Catalyst

用于 AI 项目管理和 API 交互的工具集,助力 AI 项目高效开发与管理。

RagaAI-Catalyst 是一款专注于 AI 领域的强大工具集,为开发者提供了便捷的项目管理、API 交互、令牌管理等功能。支持多 API 密钥上传,能快速创建、列出和管理 AI 项目,还可获取项目用例和指标信息。适用于各类 AI 开发场景,提升开发效率,推动 AI 项目顺利开展。

smolagents

smolagents

一个包含多种工具和文档处理功能,适用于 LLM 使用的项目。

smolagents 是一个功能丰富的项目,提供了如文件格式转换、网页内容读取、语义搜索等多种工具,支持将常见文件类型或网页转换为 Markdown,方便进行文档处理和信息提取,能满足不同场景下的需求,提升工作效率和数据处理能力。

下拉加载更多