我需要帮助优化自定义 TensorFlow 模型。我有一个 40GB ZLIB 压缩的 .TFRecords 文件,其中包含我的训练数据。每个样本由两个 384x512x3 图像和一个 384x512x2 向量场组成。我正在按如下方式加载我的数据:
num_threads = 16
reader_kwargs = {'options': tf.python_io.TFRecordOptions(tf.python_io.TFRecordCompressionType.ZLIB)}
data_provider = slim.dataset_data_provider.DatasetDataProvider(
dataset,
num_readers=num_threads,
reader_kwargs=reader_kwargs)
image_a, image_b, flow = data_provider.get(['image_a', 'image_b', 'flow'])
image_as, image_bs, flows = tf.train.batch(
[image_a, image_b, flow],
batch_size=dataset_config['BATCH_SIZE'], # 8
capacity=dataset_config['BATCH_SIZE'] * 10,
num_threads=num_threads,
allow_smaller_final_batch=False)
但是,我每秒只能获得大约 0.25 到 0.30 的全局步数。(慢的!)
这是我用于并行阅读器的 TensorBoard dash。它始终保持在 99%-100%。
我绘制了一段时间内的 GPU 使用情况(每秒百分比)。它看起来数据匮乏,但我不知道如何解决这个问题。我尝试增加/减少线程数,但似乎没有什么不同。我正在使用具有 4 个 CPU 和 61GB RAM 的 NVIDIA K80 GPU 进行训练。
我怎样才能让这列火车更快?