AutoGluon-Cloud 分布式训练#
AutoGluon-Cloud 目前支持 Tabular 的分布式训练。
Tabular 预测器在底层训练多个模型的交叉验证折叠,并在单台机器上并行训练模型。将此策略扩展到机器集群是很自然的。
使用 AutoGluon-Cloud,我们可以帮助您启动集群、分派作业并拆除集群。这与您通常训练 TabularCloudPredictor
的方式没有太大区别。您只需在初始化预测器时指定 backend="ray_aws"
即可。
cloud_predictor = TabularCloudPredictor(
...,
backend="ray_aws"
)
然后像往常一样调用 fit 方法。
cloud_predictor.fit(predictor_init_args=predictor_init_args, predictor_fit_args=predictor_fit_args)
如何控制集群中的实例数量#
下一节将介绍默认启动的实例数量。您可以通过将 instance_count
传递给 fit()
来控制在集群中创建多少实例。
cloud_predictor.fit(..., instance_count=4)
如何确定 instance_count
的通用策略#
非 HPO#
默认情况下,此值由交叉验证折叠数(TabularPredictor
中的 num_bag_folds
)决定。我们将启动与折叠数相同数量的实例,以便每个折叠都在专用机器上进行训练。默认值在大多数情况下应该有效。
当然,您可以降低此值以节省预算,但这会减慢训练过程,因为单个实例需要并行训练多个折叠并分割其资源。设置大于折叠数的值是没有意义的,因为我们不支持单个模型的分布式训练。
HPO#
在进行 HPO 时,很难预先确定要使用多少实例。因此,我们默认使用 1 个实例,您需要指定要使用的实例数量。最快的选择当然是使实例数量与试验次数相匹配。然而,这很可能是不可能的,因为 HPO 通常涉及大量的试验。
一般来说,建议尽量使(每实例 vCPU 数 * 实例数)能被试验次数整除。我们会将资源平均分配给任务;因此,不可整除的值会导致一些资源无法被充分利用。
举一个推荐的例子,假设您想进行 128 次试验的 HPO。选择 8 个 m5.2xlarge
(8 个 vCPU)将使计算资源能被试验次数整除:128 / (8 * 8) = 2。这将导致两个批次,每个批次包含 64 个作业,分配到 64 个 vCPU 上。