Tensorflow数据集表现如何?

时间:2017-12-14 13:55:56

标签: performance tensorflow tensorflow-gpu

我正在实施一个受NMT模型启发的模型。我正在使用存储为TFRecords文件的训练集,使用TFRecordDataset获取它并提供模型。关于Google recommendations关于输入管道性能改进的问题,我有:

  • 预先在CPU上预处理
  • 堆叠了几个训练样例,最多约100 MB TFrecords文件(包含更多示例的文件较少)
  • 在数据集num_parallel_calls操作中使用了prefetchmap

然而,GPU仍然保持在最高40%,并且几乎与在CPU上运行时一样慢。因此,我对prefetch操作感到疑惑。

  • 如果我理解正确,它将创建一个缓冲 N 示例的特殊线程。但是这是什么意思 ?未缓冲的其他示例会发生什么?

  • 预取缓冲区大小,完整数据集中的示例数量和批量大小之间是否存在最佳关系?在NMT代码中,预取缓冲区大小设置为1000*batch_size,但为什么呢?如果是我使用10000个示例,批量大小为100,预取缓冲区大小应该是什么?

有关数据集加速的任何其他建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

显然,数据集API在CPU and not on GPU上运行,因此这回答了问题。