我正在尝试使用张量流配置文件来测量详细的 GPU 内存使用情况,例如 conv1 激活、权重等。我尝试使用 TF 配置文件。据报告峰值使用量为 4000MB。但同时,我使用nvidia-smi进行测量,报告了10000MB的使用量。它们有很大的差异,我不知道根本原因是什么。有人可以提出一些继续进行的建议吗?
TF简介:
英伟达-SMI:
张量流版本:1.9.0
首先,TF 在启动时总是会分配大部分(如果不是全部)可用 GPU 内存。它实际上可以让 TF 更有效地使用内存。要改变这种行为,人们可能需要设置一个环境标志export TF_FORCE_GPU_ALLOW_GROWTH=true。此处提供更多选项。
完成此操作后,nvidia-smi 仍会报告夸大的内存使用量。因为 TF nvidia-smi 报告分配的内存,而探查器报告正在使用的实际峰值内存。
BFC用作内存分配器。每当 TF 用完 4GB 内存时,它就会分配两倍的8GB. 下次它会尝试分配 16GB。同时,程序可能仅9GB在选择时使用内存,但16GB分配情况将由 nvidia-smi 报告。此外,BFC 并不是 Tensorflow 中唯一分配 GPU 内存的东西,因此,它实际上可以使用9GB+something.
这里的另一个评论是,过去用于报告内存使用情况的张量流本机工具并不是特别精确。因此,我想说,分析器实际上可能有点低估了峰值内存使用情况。
这是有关内存管理的一些信息https://github.com/miglopst/cs263_spring2018/wiki/Memory-management-for-tensorflow
另一个用于检查内存使用情况的高级链接:https://github.com/yaroslavvb/memory_util
| 归档时间: |
|
| 查看次数: |
1297 次 |
| 最近记录: |