AWS Sagemaker |为什么多个实例训练花费的时间乘以实例编号

时间:2019-01-04 06:43:37

标签: python tensorflow amazon-sagemaker

我正在使用AWS Sagemaker进行模型训练和部署,这是模型训练的示例示例

from sagemaker.estimator import Estimator
hyperparameters = {'train-steps': 10}
instance_type = 'ml.m4.xlarge'

estimator = Estimator(role=role,
                      train_instance_count=1,
                      train_instance_type=instance_type,
                      image_name=ecr_image,
                      hyperparameters=hyperparameters)

estimator.fit(data_location)

这里提到的docker镜像是一个tensorflow系统。

假设训练模型需要1000秒,现在我将实例数增加到5,然后训练时间将增加5倍,即5000秒。根据我的理解,培训工作将分配给5台机器,因此理想情况下,每台机器将花费200秒,但似乎在每台机器上进行单独的训练。有人可以让我知道它是在总体上还是在Tensorflow上通过分布式系统工作的。

我试图在本文档https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-dg.pdf上找到答案,但是似乎这里没有提到在分布式计算机上的工作方式。

1 个答案:

答案 0 :(得分:1)

您在脚本中使用TensorFlow estimator APIs吗?如果是,我认为您应该按照in the documentation here所述将脚本包装在sagemaker.tensorflow.TensorFlow类中来运行脚本。如果您以这种方式进行培训,则实例之间的并行化和通信应该是开箱即用的。

但是请注意,当您增加实例数量时,缩放比例将不是线性的。在实例之间进行通信需要花费时间,并且脚本中可能存在不可并行的瓶颈,例如将数据加载到内存中。