我正在使用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上找到答案,但是似乎这里没有提到在分布式计算机上的工作方式。
答案 0 :(得分:1)
您在脚本中使用TensorFlow estimator APIs吗?如果是,我认为您应该按照in the documentation here所述将脚本包装在sagemaker.tensorflow.TensorFlow
类中来运行脚本。如果您以这种方式进行培训,则实例之间的并行化和通信应该是开箱即用的。
但是请注意,当您增加实例数量时,缩放比例将不是线性的。在实例之间进行通信需要花费时间,并且脚本中可能存在不可并行的瓶颈,例如将数据加载到内存中。