我正在使用Tensorflow,并注意到使用多个节点时,单个步骤的速度比使用一个节点时要慢,因此我对在Sagemaker上多个训练节点上的“步骤”定义有些困惑。
如果我的批次大小是10,我有5个训练节点,那么一个“步骤”是每个节点2个还是每个节点10个?
如果我的批次大小是1,有5个节点,又会怎样?
注意 – 这里的“节点”是指单个训练实例,由train_instance_count=5
创建的数量
回答:
请查看这个笔记本以了解使用TF进行分布式训练的示例:https://github.com/awslabs/amazon-sagemaker-examples/blob/master/sagemaker-python-sdk/tensorflow_distributed_mnist/tensorflow_distributed_mnist.ipynb
“每个实例将预测数据集的一个批次,计算损失并最小化优化器。这个过程的一个完整循环被称为训练步骤。
全局步骤是一个在实例之间共享的全局变量。对于分布式训练来说这是必要的,这样优化器就可以跟踪运行之间的训练步骤数:
train_op = optimizer.minimize(loss, tf.train.get_or_create_global_step())这是分布式训练所需的唯一更改!”