如何测量 TensorFlow 模型的 GPU 内存使用情况



我的目标是弄清楚保存为.pb文件的TensorFlow模型在推理过程中使用了多少GPU内存。通过将per_process_gpu_memory_fraction限制为值 0.01 并在输入图像上成功运行模型,我预计内存使用量为 120MB(基于 12,000MB GPU(。

conf = tf.ConfigProto()
conf.gpu_options.per_process_gpu_memory_fraction=0.01
session = tf.Session(config=conf)

当我通过nvidia-smi观察实际的GPU内存使用情况时,我看到利用率为550MB。根据这里的答案(https://stackoverflow.com/a/55532954(,我测量了创建TF会话所需的默认内存,相当于150MB。现在的问题是剩余的 550MB(测量(- 150MB(会话(- 120MB(型号(= 280MB 来自哪里。我想排除任何其他使用 GPU 内存的因素,只量化模型本身的使用量。在这种情况下,我可以简单地假设 120MB 吗?

在运行 python 代码之前,请尝试将 TF_FORCE_GPU_ALLOW_GROWTH 设置为 true:

os.environ['TF_FORCE_GPU_ALLOW_GROWTH'] = 'true'

在导入张量流之前先放这个。

然后测量 GPU 内存利用率。此外,它还取决于 Tensorflow 内存分配器如何分配 GPU 上的内存。因此,它通常会比内存中的实际模型大一点。

还可以尝试此处提到的建议:如何限制张量流 GPU 内存使用?

最新更新