我正在研究使用张量流和卷积神经网络的图像分类问题。 我的模型有以下图层。
我尝试过使用NVIDIA-SMI工具,但它显示了模型运行时的GPU内存消耗。
我想知道在GPU上运行模型之前是否有任何方法或方法可以找到内存估计值。这样我就可以考虑可用内存来设计模型
我已经尝试过使用这个method for estimation,但我的计算内存和观察到的内存利用率并不相同。
答案 0 :(得分:2)
据我了解,当您使用tensorflow-gpu打开会话时,它会分配GPUS中可用的所有内存。因此,当你查看nvidia-smi输出时,你总会看到相同数量的已用内存,即使它实际上只使用了它的一部分。打开会话时有一些选项可强制tensorflow仅分配可用内存的一部分(例如,请参阅How to prevent tensorflow from allocating the totality of a GPU memory?)
答案 1 :(得分:0)
NVIDIA-SMI ...向我展示了作为模型运行的GPU内存消耗
TF在您使用它时会预先分配所有可用内存,因此NVIDIA-SMI将显示近100%的内存使用量......
但是我的计算内存和观察到的内存利用率并不相同。
..所以这并不奇怪。
答案 2 :(得分:0)
您可以在TensorFlow中控制GPU的内存分配。计算出深度学习模型的内存要求后,可以使用tf.GPUOptions
。
例如,如果要从8 GB中分配4 GB(大约)GPU内存。
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.4
session = tf.Session(config=config, ...)
完成后,使用tf.Session
参数
config
per_process_gpu_memory_fraction
用于绑定可用的GPU内存量。
以下是文档链接: -