【问题标题】:Tensorflow: how to manually shard a datasetTensorflow:如何手动分片数据集
【发布时间】:2020-05-27 10:57:43
【问题描述】:

我正在使用 MirroredStrategy 执行多 GPU 训练,但它似乎没有正确分片数据。您如何手动分片数据?

我知道我可以将shard 方法用于tf.data 数据集,但为此我需要访问工作人员ID,但我不知道如何获得它。如何访问工作人员 ID?

【问题讨论】:

    标签: python tensorflow tensorflow-datasets distributed-tensorflow


    【解决方案1】:

    MirroredStrategy 在单个工作人员上运行(对于多个工作人员,有MultiWorkerMirroredStrategy)。因为它只在一个工作人员上运行,MirroredStrategy 运行单个Dataset 管道,没有任何数据分片。在每一步,MirroredStrategy 为每个工作人员请求一个数据集元素。

    【讨论】:

    • 有没有办法使用 MultiWorkerMirroredStrategy 手动分片?
    • 是的,您可以使用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/…
    • 单机训练时如何控制worker数?它会自动为每个 GPU 创建一个工人,还是每台机器一个工人?
    猜你喜欢
    • 2018-12-10
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 2022-10-15
    • 2022-10-03
    • 1970-01-01
    相关资源
    最近更新 更多