我正在实施一个受NMT模型启发的模型。我正在使用存储为TFRecords文件的训练集,使用TFRecordDataset获取它并提供模型。关于Google recommendations关于输入管道性能改进的问题,我有:
num_parallel_calls
操作中使用了prefetch
和map
。然而,GPU仍然保持在最高40%,并且几乎与在CPU上运行时一样慢。因此,我对prefetch
操作感到疑惑。
如果我理解正确,它将创建一个缓冲 N 示例的特殊线程。但是这是什么意思 ?未缓冲的其他示例会发生什么?
预取缓冲区大小,完整数据集中的示例数量和批量大小之间是否存在最佳关系?在NMT代码中,预取缓冲区大小设置为1000*batch_size
,但为什么呢?如果是我使用10000个示例,批量大小为100,预取缓冲区大小应该是什么?
有关数据集加速的任何其他建议将不胜感激。