【发布时间】:2020-05-27 10:57:43
【问题描述】:
我正在使用 MirroredStrategy 执行多 GPU 训练,但它似乎没有正确分片数据。您如何手动分片数据?
我知道我可以将shard 方法用于tf.data 数据集,但为此我需要访问工作人员ID,但我不知道如何获得它。如何访问工作人员 ID?
【问题讨论】:
标签: python tensorflow tensorflow-datasets distributed-tensorflow
我正在使用 MirroredStrategy 执行多 GPU 训练,但它似乎没有正确分片数据。您如何手动分片数据?
我知道我可以将shard 方法用于tf.data 数据集,但为此我需要访问工作人员ID,但我不知道如何获得它。如何访问工作人员 ID?
【问题讨论】:
标签: python tensorflow tensorflow-datasets distributed-tensorflow
MirroredStrategy 在单个工作人员上运行(对于多个工作人员,有MultiWorkerMirroredStrategy)。因为它只在一个工作人员上运行,MirroredStrategy 运行单个Dataset 管道,没有任何数据分片。在每一步,MirroredStrategy 为每个工作人员请求一个数据集元素。
【讨论】:
strategy.experimental_distribute_datasets_from_function(dataset_fn) 创建数据集。 tf.distribute 会将input_context 参数传递给您的dataset_fn,它将通过input_context.input_pipeline_id 告诉您当前的工作人员ID。有关示例,请参阅这些文档:tensorflow.org/api_docs/python/tf/distribute/experimental/…