ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Uni2TS时间序列预测完全指南:从零开始掌握通用Transformer预测框架

Uni2TS时间序列预测完全指南:从零开始掌握通用Transformer预测框架

Uni2TS时间序列预测完全指南:从零开始掌握通用Transformer预测框架

【免费下载链接】uni2tsUnified Training of Universal Time Series Forecasting Transformers项目地址: https://gitcode.com/gh_mirrors/un/uni2ts

Uni2TS是一个基于PyTorch的统一时间序列预测框架,专注于通用Transformer模型的训练和应用。这个开源项目提供了从大规模预训练、微调到推理评估的完整解决方案,让开发者能够轻松构建高性能的时间序列预测模型。

🚀 快速开始:5分钟完成首次预测

1. 环境安装与配置

首先克隆项目仓库并安装依赖:

git clone https://gitcode.com/gh_mirrors/un/uni2ts cd uni2ts pip install -e .

安装完成后,创建一个简单的Python脚本即可开始使用预训练模型进行零样本预测。

2. 加载预训练模型进行预测

Uni2TS支持多种预训练模型,包括Moirai、Moirai-MoE和Moirai2系列。以下是最简单的使用示例:

import torch import pandas as pd from uni2ts.model.moirai import MoiraiForecast, MoiraiModule # 加载预训练模型 model = MoiraiForecast( module=MoiraiModule.from_pretrained("Salesforce/moirai-1.1-R-small"), prediction_length=96, # 预测未来96个时间点 context_length=1000, # 使用1000个历史点作为上下文 patch_size="auto", num_samples=100, ) # 准备数据并预测 predictor = model.create_predictor(batch_size=32) forecasts = predictor.predict(test_data)

🔧 核心功能解析:为什么选择Uni2TS?

统一的Transformer架构设计

Uni2TS采用统一的Transformer架构处理多尺度时间序列数据,支持从小时级到月级的不同频率数据。通过创新的patch机制,模型能够高效处理长序列数据,同时保持计算效率。

图1:Uni2TS支持多特征输入,包括目标序列、历史动态特征和未来动态特征

混合专家模型(MoE)优势

Moirai-MoE模型采用稀疏激活的混合专家架构,在处理复杂时间序列模式时显著提升性能:

from uni2ts.model.moirai_moe import MoiraiMoEForecast, MoiraiMoEModule # 加载MoE模型 moirai_moe = MoiraiMoEForecast( module=MoiraiMoEModule.from_pretrained("Salesforce/moirai-moe-1.0-R-small"), prediction_length=100, context_length=1680, patch_size=16, )

图2:Moirai-MoE的混合专家架构,通过门控机制动态选择专家网络

滚动评估确保预测稳定性

Uni2TS采用滚动窗口评估方法,模拟真实场景下的在线预测,避免数据泄露问题:

from gluonts.dataset.split import split # 创建滚动评估数据 test_data = test_template.generate_instances( prediction_length=96, windows=10, # 10个滚动窗口 distance=96, # 非重叠窗口 )

图3:滚动评估通过多窗口滑动确保预测的泛化能力

📊 性能对比:Uni2TS在实际数据集上的表现

分布内预测性能

在29个Monash数据集上的测试显示,Moirai-MoE模型在聚合MAE指标上显著优于其他基础模型:

图4:Moirai-MoE在分布内预测任务中表现出最低的归一化MAE值

零样本迁移能力

在8个真实世界数据集上的零样本测试中,Moirai-MoE在CRPS和MAE指标上均取得最佳表现:

图5:零样本设置下Moirai-MoE在多个领域数据集上的性能对比

🛠️ 实用教程:从数据准备到模型部署

数据准备与预处理

使用Uni2TS内置的数据构建工具准备自定义数据集:

# 处理ETTh1数据集 python -m uni2ts.data.builder.simple ETTh1 dataset/ETT-small/ETTh1.csv \ --dataset_type wide \ --date_offset '2017-10-23 23:00:00' \ --normalize

配置文件位于cli/conf/finetune/data/etth1.yaml,支持多种数据格式和预处理选项。

模型微调实战

使用命令行接口快速微调预训练模型:

python -m cli.train \ -cp conf/finetune \ exp_name=my_experiment \ model=moirai_1.1_R_small \ model.patch_size=32 \ model.context_length=1000 \ model.prediction_length=96 \ data=etth1 \ val_data=etth1

评估与性能分析

内置评估脚本支持多种指标计算:

python -m cli.eval \ run_name=my_evaluation \ model=moirai_1.1_R_small \ data=etth1_test \ data.prediction_length=96

💡 最佳实践与调优技巧

1. 参数配置建议

  • 上下文长度与预测长度比例:通常设置为10:1到20:1,根据数据特性调整
  • Patch大小:对于高频数据使用较小patch(8-16),低频数据使用较大patch(32-64)
  • 批处理大小:根据GPU内存调整,通常32-128之间

2. 数据增强策略

  • 使用时间序列的滑动窗口增加训练样本
  • 应用随机缩放和抖动增强模型鲁棒性
  • 考虑季节性分解预处理

3. 模型选择指南

  • 小规模数据:使用Moirai-1.1-R-small模型
  • 中等规模数据:推荐Moirai-1.1-R-base
  • 大规模复杂数据:优先选择Moirai-MoE模型
  • 零样本需求:Moirai2模型提供更好的泛化能力

📈 实际应用场景

金融时间序列预测

Uni2TS在股票价格预测、汇率预测等金融场景中表现出色,支持多变量输入和概率预测。

能源需求预测

电力负荷预测、可再生能源发电量预测等能源领域应用,支持长序列预测和不确定性量化。

物联网传感器数据分析

处理传感器生成的时间序列数据,支持异常检测和趋势预测。

零售销量预测

商品销量预测、库存管理等零售应用,支持季节性模式和促销效应建模。

🔍 高级功能探索

自定义损失函数

Uni2TS支持多种损失函数,位于src/uni2ts/loss/目录:

from uni2ts.loss.packed import PackedDistributionLoss # 使用自定义损失函数 loss_fn = PackedDistributionLoss( distribution="normal", reduction="mean", )

多任务学习支持

框架支持同时学习多个相关的时间序列任务,通过共享表示提升泛化能力。

分布式训练优化

支持多GPU训练和混合精度训练,加速大规模数据集上的训练过程。

🎯 总结与展望

Uni2TS作为统一的时间序列预测框架,通过创新的Transformer架构和混合专家设计,在多个基准测试中展现了卓越的性能。无论是学术研究还是工业应用,它都提供了完整的解决方案。

关键优势总结:

  1. 统一架构:支持多种时间序列任务的统一处理
  2. 零样本能力:强大的预训练模型支持无需微调的预测
  3. 灵活配置:丰富的参数选项满足不同场景需求
  4. 完整工具链:从数据准备到模型部署的全流程支持

开始使用Uni2TS,探索时间序列预测的新可能性!通过example/目录中的Jupyter Notebook示例快速上手,或参考项目文档深入了解高级功能。

【免费下载链接】uni2tsUnified Training of Universal Time Series Forecasting Transformers项目地址: https://gitcode.com/gh_mirrors/un/uni2ts

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

返回列表