目前,我的机器上有4 1080个GPU,并且我有一个强大的CPU用于执行图像分类项目。但是,由于我的模型很小,但是我的训练数据非常大(无法适合内存中的整个数据集),因此我必须动态读取和处理一批样本。现在我发现GPU的利用率只有50%左右,而我所有的CPU内核都已被充分利用。
因此,解决方案之一是我想将我的输入管道(我正在使用tf.data.dataset作为我的输入管道)拆分到另一台没有GPU的机器上,以加快输入管道的速度,在GPU上获得更多利用。我可以分配输入管道有两个选项: 1)只需分发数据扩充,一台机器读取所有原始图像并发送到另一台机器,然后将其发送回带有GPU的机器进行训练。 2)只需将数据集的全部/部分复制到所有仅CPU的计算机上,它们就可以独立处理自己的输入管道,并将其发送回带有GPU的计算机进行训练。
我认为实施选项2)会容易得多。我没有在不同机器上编码分布式培训的经验。我在网上阅读的所有示例都涉及在具有自己的GPU的多台机器上进行分布式培训。就我而言,由于我只打算单独分配输入管道,因此有没有更简单的实现示例?