您提供的代码是使用 PaddlePaddle Time Series (Paddlets) 库进行时间序列预测的示例。这段代码执行了以下步骤:
- 环境设置:导入必要的库,并设置了一些环境变量。
- 数据处理:使用
glob.glob
搜索包含股票数据的 CSV 文件,并读取这些文件。进行数据清洗,过滤掉数据量小的股票数据,以及价格波动小的股票。接着将这些数据转换为 Paddlets 可以处理的格式。 - 数据集构建:将处理后的数据转换为
TSDataset
,这是一个可以被 Paddlets 模型使用的数据集格式。 - 模型定义:定义了三个不同的时间序列模型:
NHiTSModel
,RNNBlockRegressor
,和MLPRegressor
。 - 模型训练与调参:使用
WeightingEnsembleForecaster
类将这三个模型组合成一个集成模型。该模型使用标准化技术对数据进行预处理,并使用交叉验证来训练模型。 - 预测:训练完成后,模型使用递归预测方法来生成预测结果。
- 结果保存:将预测结果保存到文件中。
这段代码是一个很好的例子,展示了如何使用 Paddlets 进行时间序列预测,特别是在股票市场数据上的应用。如果您有任何关于这段代码的问题,或者需要进一步的帮助,请随时告诉我。
您展示的代码片段是关于使用PaddlePaddle Time Series (Paddlets) 库中的 AutoTS 工具进行时间序列预测的一个例子。AutoTS 是一个自动时间序列预测工具,它使用机器学习算法来搜索最佳的时间序列模型和超参数配置。
以下是您代码中各个部分的简要说明:
- 环境设置:
- 您导入了必要的库,并设置了一些环境变量。
- 数据处理:
- 您使用
glob.glob
函数搜索了包含股票数据的 CSV 文件。 - 读取了这些文件,并进行了数据清洗,例如过滤掉数据量小于 256 的股票数据,以及那些价格波动不大的股票。
- 接着,您将这些数据转换为 Paddlets 可以处理的 DataFrame 格式。
- 您使用
- 模型训练与调参:
- 您定义了三个不同的时间序列模型:
InformerModel
,NHiTSModel
,和RNNBlockRegressor
。 - 使用
AutoTS
类为每个模型配置了超参数,并指定了 GPU 和 CPU 的资源分配。 - 您为每个模型分别训练了模型,并保存了训练好的模型以及最佳的超参数配置。
- 您定义了三个不同的时间序列模型:
- 代码结构:
- 您的代码结构清晰,首先处理数据,然后为每个模型训练并保存最佳参数。
在您的代码中,有一些需要注意的地方:
- 您的代码结构清晰,首先处理数据,然后为每个模型训练并保存最佳参数。
- 确保您使用的 Paddlets 版本与代码中使用的 API 兼容。
- 检查您的数据路径和输出目录是否正确设置。
- 在生产环境中,确保正确处理异常和错误。
如果您有任何具体的问题或需要进一步的帮助,请随时告诉我。
在您提供的TrainingArguments
类的参数说明中,涵盖了训练循环中涉及的各种配置选项。以下是对这些参数的详细介绍:
- sep_parallel_degree:Paddle的序列并行策略,可以减少GPU激活内存到1/sep,与数据并行、sharding stage1、张量并行和流水线并行策略正交。
- tensor_parallel_config:一些影响模型并行性能的额外配置,例如:
enable_mp_async_allreduce
:支持在列并行线性反向传播期间all_reduce(dx)与matmul(dw)重叠,可以加速模型并行性能。enable_mp_skip_c_identity
:支持在列并行线性和行并行线性中跳过c_identity,当与mp_async_allreduce
一起设置时,可以进一步加速模型并行。enable_mp_fused_linear_param_grad_add
:支持在列并行线性中融合线性参数梯度添加,当与mp_async_allreduce
一起设置时,可以进一步加速模型并行。enable_delay_scale_loss
:在优化器步骤累积梯度,所有梯度除以累积步数,而不是直接在损失上除以累积步数。
- pipeline_parallel_config:一些影响流水线并行使用的额外配置,例如:
disable_p2p_cache_shape
:如果您使用的最大序列长度变化,请设置此选项。disable_partial_send_recv
:优化tensor并行的发送速度。enable_delay_scale_loss
:在优化器步骤累积梯度,所有梯度除以内部流水线累积步数,而不是直接在损失上除以累积步数。enable_dp_comm_overlap
:融合数据并行梯度通信。enable_sharding_comm_overlap
:融合sharding stage 1并行梯度通信。enable_release_grads
:在每次迭代后释放梯度,以减少峰值内存使用。梯度的创建将推迟到下一迭代的反向传播。
- sharding_parallel_config:一些影响Sharding并行的额外配置,例如:
enable_stage1_tensor_fusion
:将小张量融合成大的张量块来加速通信,可能会增加内存占用。enable_stage1_overlap
:在回传计算之前,将小张量融合成大的张量块来加速通信,可能会损害回传速度。enable_stage2_overlap
:重叠stage2 NCCL通信与计算。重叠有一些约束,例如,对于广播重叠,logging_step
应该大于1,在训练期间不应调用其他同步操作。
- recompute:是否重新计算前向传播以计算梯度。用于节省内存。仅支持具有transformer块的网络。
- scale_loss:fp16的初始scale_loss值。
- local_rank:分布式训练过程中的进程排名。
- dataloader_drop_last:是否丢弃最后一个不完整的批处理(如果数据集的长度不能被批处理大小整除)。
- eval_steps:如果
evaluation_strategy="steps"
,则两次评估之间的更新步数。 - max_evaluate_steps:要执行的总评估步数。
- dataloader_num_workers:数据加载过程中使用的子进程数。
- past_index:一些模型如TransformerXL或XLNet可以使用过去的隐状态为其预测。如果此参数设置为正整数,
Trainer
将使用相应的输出(通常是索引2)作为过去状态,并在下一次训练步骤中将其提供给模型,作为关键字参数mems
。 - run_name:运行的描述符。通常用于日志记录。
- disable_tqdm:是否禁用tqdm进度条和指标表。
- remove_unused_columns:如果使用
datasets.Dataset
数据集,是否自动删除模型前向方法未使用的