1. 问题:
我有一个tf.data.Dataset我用train_on_batch.
我的数据集如下所示:
Generate TFRecord path > tf.data.TFRecordDataset > Parse single example > Batch(2) > Map(merge) > Map(normalize) > Map(split to inputs,labels) > Batch(batch_size) > Prefetch(1)
Run Code Online (Sandbox Code Playgroud)
我曾经RunMetadata用 Chrome 输出一个可读的时间轴。看起来IteratorGetNext只在 CPU 上运行并且占用了大量时间。
(我无法发布图片,IteratorGetNext耗时 617 毫秒,MEMCPYHtoD耗时 58 毫秒,训练耗时 500 毫秒)
我似乎找不到让 IteratorGetNext 在 GPU 上运行的方法,即使是部分运行。目前,CPU 使用率为 100%,GPU 使用率最高为 40-60%。
我希望是这样的:
Read from disk > Move from CPU to GPU > Preprocess.
我目前只使用一个 GPU,但我计划稍后使用更多 GPU,因此可扩展的解决方案将是完美的!
顺便说一下,我在带有 CUDA 10.0 和 python …