如何简便训练AWS DeepAR模型?无需S3存储文件的实现方法问询
本地无S3简化训练DeepAR的可行方案
目前有两种完全本地运行、无需上传数据到S3、代码量极低的训练方案可选,都适配你已整理好的数据集结构:
方案1:GluonTS官方原生实现(推荐)
GluonTS是AWS官方开源的时间序列建模工具,内置原生DeepAR实现,你的现有数据结构和其要求的输入格式完全匹配,无需额外转换:
- 安装依赖:
可选MXNet或PyTorch后端,二选一即可:# MXNet后端 pip install gluonts mxnet # PyTorch后端 pip install gluonts torch - 完整训练代码示例:
# MXNet后端导入,用PyTorch的话替换为下一行注释内容 from gluonts.dataset.common import ListDataset from gluonts.model.deepar import DeepAREstimator from gluonts.mx import Trainer # PyTorch后端导入 # from gluonts.dataset.common import ListDataset # from gluonts.torch import DeepAREstimator, Trainer # 直接使用你已整理好的字典列表作为输入 # 替换freq为你的数据实际时间频率:日度用"1D"、小时用"1H"、周度用"1W"等 train_dataset = ListDataset( data_iter=你的字典列表变量名, freq="1D" ) # 定义DeepAR模型,参数按需调整 estimator = DeepAREstimator( freq="1D", prediction_length=3, # 替换为你需要预测的未来时间步长度 context_length=9, # 一般设置为预测长度的2-3倍即可 use_feat_static_cat=True, # 用到cat分类协变量则开启 cardinality=[10,5,20], # 每个分类协变量的取值总数,按需修改 use_feat_dynamic_real=True, # 用到dynamic_feat动态协变量则开启 trainer=Trainer(epochs=15, batch_size=32) ) # 直接训练得到预测器 predictor = estimator.train(training_data=train_dataset) # 后续预测直接调用predict方法即可 # pred_result = predictor.predict(测试数据集)
方案2:PyCaret低代码实现
如果希望进一步简化调参流程,可使用封装度更高的PyCaret时间序列模块:
- 安装依赖:
pip install pycaret[timeseries] - 核心代码仅3行,仅需提前将你的字典列表转换为PyCaret要求的长格式时间序列DataFrame即可:
# 初始化配置,fh为预测长度,替换为你的实际值 s = setup(data=转换后的df, fh=3, session_id=123) # 直接创建并训练DeepAR模型 deepar_model = create_model('deepar') # 自动调参+预测 tuned_model = tune_model(deepar_model) pred_result = predict_model(tuned_model)
两种方案均全程运行在本地环境,不需要依赖任何云服务,也不需要上传数据到外部存储。
内容的提问来源于stack exchange,提问作者Ravaal
相关产品推荐
相关产品推荐

