【问题标题】:OOM when allocating tensor with shape[1,144,144,144,128]使用 shape[1,144,144,144,128] 分配张量时的 OOM
【发布时间】:2018-01-24 01:10:36
【问题描述】:

我用的电脑是1080,GPU内存是8GB,我的电脑内存是32GB,但是阵列数据可能太大了我无法恢复,电脑告诉我资源耗尽。如果无论如何要解决这个问题或评估我需要这么大的 numpy 数组的 GPU 内存,那么我可以购买更好的计算机进行计算。顺便说一下,我使用的 batch_size 是 1,所以我已经将内存减少到最小,或者我应该考虑减少原始列和我的 numpy 数组的高度,我认为这会影响我的结果的分辨率。

如果有人可以回答我的问题。谢谢

【问题讨论】:

    标签: python image-processing memory machine-learning gpu


    【解决方案1】:

    您使用的张量本身很大,但对于 8Gb GPU 来说并没有那么大。 144 * 144 * 144 * 128 约为 3.8 亿,因此即使使用 32 位项目,它也需要 1.5GiB。我有一个 8Gb 的 GeForce GTX 1070(和你一样大),这是我的 Tensorflow 实验:

    import numpy as np
    import tensorflow as tf
    
    X = tf.placeholder(dtype=tf.int32, shape=(1, 144, 144, 144, 128))
    init = tf.global_variables_initializer()
    
    with tf.Session() as session:
      session.run(init)
      value = session.run([X], feed_dict={X: np.zeros(shape=(1, 144, 144, 144, 128))})
      print np.array(value).shape
    

    输出:

    name: GeForce GTX 1070
    major: 6 minor: 1 memoryClockRate (GHz) 1.7465
    pciBusID 0000:01:00.0
    Total memory: 7.92GiB
    Free memory: 4.14GiB
    2017-08-17 20:05:54.312424: I tensorflow/core/common_runtime/gpu/gpu_device.cc:908] DMA: 0 
    2017-08-17 20:05:54.312430: I tensorflow/core/common_runtime/gpu/gpu_device.cc:918] 0:   Y 
    2017-08-17 20:05:54.312444: I tensorflow/core/common_runtime/gpu/gpu_device.cc:977] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
    (1, 1, 144, 144, 144, 128)
    

    请注意,可用内存远低于 8Gb,因为我使用 2 个 UHD 显示器。因此,这可能是您的第一个原因:其他进程可能会消耗大量 GPU 资源。

    接下来,您没有提供您的神经网络架构,但如果您使用的是深度卷积神经网络,请注意第一层会消耗大量内存用于参数和梯度。您可能想阅读this helpful page for details。如果是这种情况,您可能需要插入另一个 GPU 并将图形拆分到所有可用的 GPU (here's how you can do it)。 NVidia 提供 12Gb 显存 GPU。

    最后,您始终可以考虑降低所有变量的浮动精度tf.float64 -> tf.float32 -> tf.float16。这可以节省 8 倍的内存,有时仅够在 GPU 上运行。

    【讨论】:

    • 感谢您的回复,我已经通过让老板购买更好的机器解决了这个问题。并且可以通过使用特殊的更浅的网络和使用 int32 或 int16 来缓解这个问题
    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多