[当前,我有多个子过程,这些子过程对来自分布式文件系统的数据进行采样并写入本地tfrecords文件(数据集的大小超过了本地存储)。我的主要培训过程是使用TFRecordsDataset
和tf.data.Dataset.from_generator
遍历文件,将它们写入磁盘。
可以,但是写磁盘只是为了再次读取它显然不是最佳选择。我想知道是否有更好的方法可以使用子过程将样本直接移交给Tensorflow。我无法通过Python将数据传递给主要的训练过程,因为它需要多个CPU内核才能移动那么多数据,以及Python的GIL瓶颈。
我试图将数据写入命名管道,但是TFRecordsDataset执行查找操作,因此无法从管道读取,只能从文件读取。还有其他想法吗?
我正在使用高IO模型(单个GPU可以处理600 MB /秒的不可压缩数据)。它需要大约4个CPU内核来单独处理IO,因此主要的训练循环过程无法做到这一点。 ...