pytorch-forecasting

GitHub
4.9k 862 简单 1 次阅读 2天前MITAgent数据工具图像开发框架其他
AI 解读 由 AI 自动生成,仅供参考

pytorch-forecasting 是一个基于 PyTorch 构建的开源库,专为利用前沿深度学习架构进行时间序列预测而设计。它致力于解决传统方法在处理复杂现实场景数据时的痛点,通过高度抽象的数据集类,自动处理变量转换、缺失值填补及多历史长度采样等繁琐预处理工作,让开发者能更专注于模型本身。

该工具特别适合数据科学家、机器学习工程师及研究人员使用。无论是希望快速上手的新手,还是需要高度定制化方案的专业人士,pytorch-forecasting 都能提供兼顾灵活性与易用性的高层 API。其内置了多种针对实际部署优化的神经网络架构(如 TFT、N-BEATS 等),并原生支持模型可解释性分析,帮助用户不仅知道“预测结果是什么”,还能理解“为什么这样预测”。

技术亮点方面,pytorch-forecasting 深度集成了 PyTorch Lightning,实现了在 GPU 或 CPU 上的高效规模化训练与自动日志记录;同时提供多步长预测指标评估,并支持与 Optuna 结合进行自动化超参数调优。凭借这些特性,它成为了连接学术研究与工业级应用的有力桥梁,让高精度时间序列预测变得更加触手可及。

使用场景

某大型零售连锁公司的数据科学团队正致力于构建一个能预测未来 12 周各门店商品销量的系统,以优化库存管理并减少缺货损失。

没有 pytorch-forecasting 时

  • 数据处理繁琐:工程师需手动编写大量代码处理时间序列特有的缺失值、变量标准化及多尺度历史窗口对齐,极易出错且难以复用。
  • 模型复现困难:尝试部署 TFT(Temporal Fusion Transformer)等先进架构时,需从零搭建复杂的网络结构,缺乏内置的可解释性模块,导致业务方不信任黑盒预测。
  • 训练监控缺失:缺乏统一的训练框架,无法自动记录 GPU 利用率或可视化“实际值 vs 预测值”对比图,调参过程如同盲人摸象。
  • 评估指标单一:难以同时评估多个预测步长(Multi-horizon)的准确性,往往只能优化单点误差,导致长期预测效果崩塌。

使用 pytorch-forecasting 后

  • 数据加载自动化:利用其专用的 TimeSeriesDataSet 类,自动完成变量转换、随机子采样及历史长度处理,将数据准备时间缩短 70%。
  • 开箱即用的先进模型:直接调用内置的 TFT 等架构,无需重写底层逻辑,并直接使用自带的依赖关系图向业务部门解释“促销”和“季节”如何影响销量。
  • 无缝集成 Lightning:基于 PyTorch Lightning 自动实现 GPU 加速训练与 TensorBoard 日志记录,实时生成直观的预测对比可视化图表。
  • 专业多维评估:原生支持多步长预测指标,配合 Optuna 自动进行超参数调优,显著提升了长周期预测的稳定性与准确度。

pytorch-forecasting 通过提供高阶 API 和工业级架构,让团队能从繁琐的工程细节中解脱,专注于利用深度学习解决真实的商业预测难题。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 非必需
  • 支持 CPU、单 GPU 或多 GPU 训练
  • 若使用 GPU,需安装对应版本的 PyTorch(README 未指定具体型号、显存大小或 CUDA 版本)
内存

未说明

依赖
notesWindows 用户需先单独安装 PyTorch(使用特定索引链接),然后再安装本包。可通过 conda 或 pip 安装。若需使用多变量分位数损失 (MQF2 loss),需额外安装可选依赖。该库基于 PyTorch Lightning,可自动适配 CPU 或 GPU 环境。
python未说明 (徽章显示支持多个 Python 版本,具体需参考 PyPI)
torch>=1.7
pytorch-lightning
pandas
optuna
pytorch-forecasting hero image

快速开始

PyTorch Forecasting

PyTorch Forecasting 是一个基于 PyTorch 的包,用于使用最先进的深度学习架构进行预测。它提供了一个高级 API,并利用 PyTorch Lightning 在 GPU 或 CPU 上扩展训练,同时支持自动日志记录。

文档 · 教程 · 发布说明
开源 MIT GC.OS 赞助
社区 !discord !slack
CI/CD github-actions readthedocs platform 代码覆盖率
代码 !pypi !conda !python-versions !black
下载量 PyPI - 下载量 PyPI - 下载量 下载量)

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

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

  • 一个时间序列数据集类,抽象了变量转换、缺失值处理、随机子采样、多种历史长度等操作。
  • 一个基础模型类,提供时间序列模型的基本训练功能,以及 TensorBoard 日志记录和通用可视化功能,例如实际值与预测值对比图和依赖性图。
  • 多种针对时间序列预测优化的神经网络架构,这些架构经过改进以适应实际部署,并内置了解释能力。
  • 多步长时间序列指标。
  • 使用 optuna 进行超参数调优。

该包基于 pytorch-lightning 构建,因此可以开箱即用地在 CPU、单个或多个 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 上进行训练,这些数据框首先会被转换为 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

# 加载数据:这是一个 Pandas 数据框,至少包含以下几列:
# * 目标变量(即你要预测的内容)
# * 时间序列 ID(应为唯一字符串,用于标识每个时间序列)
# * 观测时间(应为单调递增的整数)
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,  # 预测未来的时间长度
    # 针对每个时间序列 ID 的静态协变量
    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",  # 如果有多块 GPU,则使用 strategy="ddp";否则在 CPU 上运行
    gradient_clip_val=0.1,
    limit_train_batches=30,  # 每个 epoch 训练 30 个批次
    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}k")

# 寻找最优学习率
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,
)

版本历史

v1.6.12026/01/23
v1.6.02026/01/16
v1.5.02025/10/10
v1.4.02025/06/13
v1.3.02025/02/06
v1.2.02024/11/19
v1.1.12024/09/09
v1.1.02024/09/08
v1.0.02023/04/10
v0.10.32022/09/07
v0.10.22022/05/23
v0.10.12022/03/24
v0.10.02022/03/23
v0.9.22021/11/29
v0.9.12021/09/26
v0.9.02021/06/04
v0.8.52021/04/27
v0.8.42021/03/07
v0.8.32021/01/31
v0.8.22021/01/12

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

140.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|昨天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架