Tensorflow Estimator-逐渐降低GPU利用率

时间:2019-07-18 15:21:21

标签: python tensorflow

我正在循环训练相同的tf.Estimator模型(5025056可训练参数):

# simplified code
for model in [model, model]:
    tf.reset_default_graph()
    estimator = tf.estimator.Estimator(model_fn=model.get_model_fn())
    evaluation_hook = tf.contrib.estimator.InMemoryEvaluatorHook(
        estimator=estimator,
        input_fn=lambda: model.eval_input_fn()
    )
    estimator.train(
        input_fn=lambda: model.train_input_fn(),
        hooks=[evaluation_hook]
    )

这里准备了数据集:

def train_input_fn():
    dataset = tf.data.TFRecordDataset("some_filename")
    dataset = dataset.shuffle(3000)
    dataset = dataset.repeat()
    dataset = dataset.batch(384)
    dataset = dataset.prefetch(1)
    return dataset

我的数据集包含9000个样本的图像,并存储在TFRecord(163M)中。 GPU为GeForce GTX 1080 Ti,CPU为i5-6600 CPU @ 3.30GHz。 在第一个模型的训练过程中,一切看起来都很好-htop显示每个内核的工作方式大致相同(主要是在0-50%利用率之间跳转)和gpu统计信息(如下所示)使用vidia-smi --query-gpu=timestamp,pstate,temperature.gpu,utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv -l 1)表明卡正在100%上工作-温度85°C左右,100%的gpu和内存利用率,也使用了大部分内存(10GB )。 直到(4000的步骤5000为止,张量流打印global_step/sec的值范围为1.01.115GB的可用16GB的RAM已使用,没有交换。

在该步骤之后,时间global_step/sec越来越短。对于步骤5000,它是0.617275。 第二个模型以相似的值开始,但是在步骤2000左右,它只是0.0938672并递减(在训练结束时下降到0.0368357)。在此过程中,nvidia-smi显示utilization.gpuutilization.memory越来越0%(尽管memory.used始终显示相同的金额,即{ {1}}),并且CPU正在单个内核的10GB上工作。 RAM与开始训练时处于同一级别,并且没有交换发生。

看起来像在CPU而不是GPU上经过一些历时的tensorflow训练之后?可能是什么原因造成的? TF版本为100%

0 个答案:

没有答案