大规模预测:许多模型和分布式训练

本文介绍了如何根据大量历史数据训练预测模型。 有关在 AutoML 中训练预测模型的说明和示例,请参阅为时序预测设置 AutoML 一文。

由于数据中序列的数量和/或历史观察的数量,时序数据可能很大。 许多模型和分层时序 (HTS) 是前一种方案的扩展解决方案,其中的数据由大量时序组成。 在这种情况下,将数据分组并在组上并行训练大量独立模型可能有利于提高模型的准确性和可扩展性。 相反,在某些情况下,一个或几个高容量模型更好。 分布式 DNN 训练便是针对这种情况。 我们将在本文的其余部分回顾有关这些方案的概念。

多模型

AutoML 中的许多模型组件使你能够并行训练和管理数百万个模型。 例如,假设你有大量商店的历史销售数据。 你可以使用多个模型为每个商店启动并行 AutoML 训练作业,如下图所示:

显示 AutoML 许多模型工作流的示意图。

在此示例中,“许多模型”训练组件将 AutoML 的模型扫描和选择独立应用于每个商店。 这种模型独立性有助于提高可扩展性,并有利于改善模型准确性,尤其是在商店销售动态存在差异时。 但是,当存在常见的销售动态时,单一模型方法可能会产生更准确的预测。 有关这种情况的更多详细信息,请参阅分布式 DNN 训练部分。

你可以配置数据分区、模型的 AutoML 设置,以及许多模型训练作业的并行度。 有关示例,请参阅我们有关许多模型组件的指南部分。

分层时序预测

业务应用程序中的时序通常具有构成层次结构的嵌套属性。 例如,地理位置和产品目录属性通常是嵌套的。 考虑一个示例,其中层次结构具有两个地理属性(省份和商店 ID),以及两个产品属性(类别和 SKU):

分层时间序列数据的示例表。

下图演示了此层次结构:

示例数据的数据层次结构图。

重要的是,叶 (SKU) 级别的销售数量加起来就是省份和总销售级别的总销售量。 在预测在层次结构的任何级别上销售的数量时,分层预测方法会保留这些聚合属性。 涉及此属性的预测在层次结构方面是一致的。

AutoML 支持分层时序 (HTS) 的以下功能:

  • 在层次结构的任何级别进行训练。 在某些情况下,叶级数据可能会比较杂乱,但聚合可能更适用于预测。
  • 在层次结构的任何级别检索点预测。 如果预测级别“低于”训练级别,则训练级别的预测将通过历史平均比例或历史平均值的比例进行分解。 当预测级别“高于”训练级别时,将根据聚合结构对训练级别进行汇总。
  • 检索训练级别等于或“低于”训练级别的分位数/概率预测。 当前建模功能支持分解概率预测。

AutoML 中的 HTS 组件是基于许多模型构建的,因此 HTS 共享了许多模型的可扩展属性。 有关示例,请参阅我们有关 HTS 组件的指南部分。

分布式 DNN 训练(预览版)

重要

此功能目前处于公开预览状态。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。

有关详细信息,请参阅适用于 Azure 预览版的补充使用条款

具有大量历史观察和/或大量相关时序的数据方案可能受益于可扩展的单一模型方法。 因此,AutoML 支持对时态卷积网络 (TCN) 模型进行分布式训练和模型搜索,这些模型是时序数据的一种深度神经网络 (DNN)。 有关 AutoML 的 TCN 模型类的详细信息,请参阅 DNN 一文

分布式 DNN 训练使用遵循时序边界的数据分区算法实现可扩展性。 下图演示了一个包含两个分区的简单示例:

分布式训练数据分区的示例图。

在训练期间,每个计算上的 DNN 数据加载程序都会仅加载完成反向传播迭代所需的内容;决不会将整个数据集读入内存。 分区将进一步在多个计算核心(通常为 GPU,可能位于多个节点上)上分布,以加速训练。 跨计算的协调由 Horovod 框架提供。

后续步骤