如何在多时间序列上训练DeepAR?GluonTS M5数据集训练时长异常
GluonTS DeepAR不同规模时间序列训练耗时一致问题解决
根因分析
- GluonTS内置
Trainer默认配置为通用大规模数据集设计:num_batches_per_epoch默认值为50,batch_size默认值为32。每轮训练会固定执行指定数量的批次计算,每个批次固定采样指定数量的时间序列。当训练集仅包含1条时间序列时,采样器会重复抽取同一条序列填充批次,单条序列和100条序列场景下的每轮训练实际计算量几乎一致,因此耗时无明显差异。 - MXNet框架的计算图编译、GPU初始化等固定开销在小训练任务中占比极高,进一步掩盖了数据量差异带来的耗时区别。
优化方案
适配数据集规模调整训练参数
针对小规模时间序列训练场景,手动下调批次相关参数即可解决耗时异常问题:
# 适配小数据集的Trainer配置 trainer = Trainer( epochs=5, batch_size=4, # 根据时间序列总数调整,不要超过总序列数 num_batches_per_epoch=5 # 根据总数据量下调每轮训练的批次数量 )
调整后单条序列训练的耗时会显著低于100条序列的训练耗时,符合正常的计算量对应关系。
可选优化(GPU环境)
开启自动混合精度训练可以进一步降低整体开销:
trainer = Trainer( epochs=5, batch_size=4, num_batches_per_epoch=5, amp=True )
内容的提问来源于stack exchange,提问作者Sebastian Chejniak
相关产品推荐
相关产品推荐

