为什么使用TensorFlow的Keras没有使用所有GPU内存

时间:2017-09-03 13:15:25

标签: windows tensorflow keras nvidia tensorflow-gpu

我在Windows 10中使用Keras 2.0.8和TensorFlow 1.3.0。 你知道为什么不使用所有内存吗?或者至少接近它。

开始运行流程时的输出:

  

找到具有属性的设备0:

     

名称:GeForce GTX 1060

     

major:6 minor:1 memoryClockRate(GHz)1.6705 pciBusID 0000:01:00.0

     

总内存:6.00GiB

     

可用内存:4.96GiB

在此示例中(因为OOM崩溃)显示限制为5 GB而不是6 GB。为什么呢?

  

限制:5016036966

     

InUse:5008119296

     

MaxInUse:5015917568

     

NumAllocs:329

     

MaxAllocSize:3879002624

感谢您的帮助!

PD:这是NVIDIA-SMI  结果虽然没有运行任何东西,但它

1 个答案:

答案 0 :(得分:-1)

因为它不需要使用所有内存。您的数据保存在RAM内存中,每个批次都会复制到GPU内存中。因此,增加批量大小会增加GPU的内存使用量。此外,您的模型大小将影响Tensorflow的GPU内存使用。

如果您想同时运行多个tensorflow会话,则不分配所有GPU内存实际上非常方便。但是,您也可以决定在张量流会话中设置GPU内存的分数。有关固定GPU内存分数或动态内存使用情况的信息,请检查this问题。

如果您想知道为什么您的GPU没有使用它的计算能力来100%检查this问题。