在Tensorflow中测量详细信息的最佳方法是什么

时间:2020-01-03 18:55:46

标签: tensorflow nvidia

我正在尝试使用tensorflow配置文件来测量详细的GPU内存使用情况,例如conv1激活,权重等。我尝试使用TF配置文件。报告最大使用量为4000MB。但与此同时,我使用nvidia-smi进行了测量,该报告为10000MB的使用。他们有很大的不同,我不知道根本原因是什么。有人可以提出一些建议继续吗?

TF配置文件:

enter image description here

nvidia-smi:

enter image description here

Tensorflow版本:1.9.0

1 个答案:

答案 0 :(得分:2)

首先,TF将在启动时始终分配最多(如果不是全部)可用的GPU内存。实际上,它允许TF更有效地使用内存。要更改此行为,可能要设置一个环境标志export TF_FORCE_GPU_ALLOW_GROWTH=truehere有更多选项可用。

完成此操作后,nvidia-smi仍会报告夸大的内存使用量。因为TF nvidia-smi报告分配的内存,而探查器报告实际使用的峰值内存。

BFC用作内存分配器。每当TF用完4GB内存时,它将分配8GB数量的两倍。下次它将尝试分配16GB。同时,程序可能只使用9GB的内存,但是16GB的分配将由nvidia-smi报告。另外,BFC并不是唯一在张量流中分配GPU内存的东西,因此,它实际上可以使用9GB+something

这里的另一条评论是,过去用于报告内存使用情况的tensorflow本机工具不是特别精确。因此,我想说的是,探查器实际上可能在低估了峰值内存使用率。

以下是有关内存管理https://github.com/miglopst/cs263_spring2018/wiki/Memory-management-for-tensorflow

的一些信息

另一个用于检查内存使用情况的高级链接:https://github.com/yaroslavvb/memory_util