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架构和混合专家设计,在多个基准测试中展现了卓越的性能。无论是学术研究还是工业应用,它都提供了完整的解决方案。
关键优势总结:
- 统一架构:支持多种时间序列任务的统一处理
- 零样本能力:强大的预训练模型支持无需微调的预测
- 灵活配置:丰富的参数选项满足不同场景需求
- 完整工具链:从数据准备到模型部署的全流程支持
开始使用Uni2TS,探索时间序列预测的新可能性!通过example/目录中的Jupyter Notebook示例快速上手,或参考项目文档深入了解高级功能。
【免费下载链接】uni2tsUnified Training of Universal Time Series Forecasting Transformers项目地址: https://gitcode.com/gh_mirrors/un/uni2ts
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考