【问题标题】:Prevent TensorFlow from accessing the GPU? [duplicate]阻止TensorFlow访问GPU? [复制]
【发布时间】:2017-11-17 01:36:31
【问题描述】:

有没有办法完全在 CPU 上运行 TensorFlow。我机器上的所有内存都被一个运行 TensorFlow 的单独进程占用。我尝试将 per_process_memory_fraction 设置为 0,但未成功。

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    看看这个question 或这个answer

    总结一下,你可以添加这段代码:

    import os
    os.environ["CUDA_VISIBLE_DEVICES"] = "-1"
    import tensorflow as tf
    

    只要您安装了 GPU-tensorflow 并且您不想使用任何 GPU,使用 CUDA_VISIBLE_DEVICES 环境变量就是 if not the way 之一。

    您想要export CUDA_VISIBLE_DEVICES= 或者使用带有非 GPU 安装的 TensorFlow 的 virtualenv。

    【讨论】:

    • 使用后如何重新启用我的 gpu
    • 你找到在 Python 脚本中打开/关闭 TensorFlow GPU 的解决方案了吗?
    • @GILO 您可以在下次运行脚本时更改为您的 GPU 编号,例如 = "0" 或 "0,1"
    • 所以。从命令行也可以,在启动应用程序之前:export CUDA_VISIBLE_DEVICES=-1
    【解决方案2】:

    您可以通过打开 GPU 限制为 0 的会话来仅使用 CPU:

    sess = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
    

    更多详情请见https://www.tensorflow.org/api_docs/python/tf/ConfigProto

    证明它适用于@Nicolas:

    在 Python 中,编写:

    import tensorflow as tf
    sess_cpu = tf.Session(config=tf.ConfigProto(device_count={'GPU': 0}))
    

    然后在终端中:

    nvidia-smi
    

    你会看到类似的东西:

    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID  Type  Process name                               Usage      |
    |=============================================================================|
    |    0     24869    C   /.../python                 99MiB                     |
    +-----------------------------------------------------------------------------+
    

    然后重复这个过程: 在 Python 中,编写:

    import tensorflow as tf
    sess_gpu = tf.Session()
    

    然后在终端中:

    nvidia-smi
    

    你会看到类似的东西:

    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID  Type  Process name                               Usage      |
    |=============================================================================|
    |    0     25900    C   /.../python                                   5775MiB |
    +-----------------------------------------------------------------------------+
    

    【讨论】:

    • 根据github.com/tensorflow/tensorflow/issues/9201 尚不清楚它是否有效。
    • 按照我的理解,目标是避免内存分配。如果是这样的话 - 它会起作用。见上文
    • 据我了解,它确实使用了 GPU,即使它不使用任何内存。我可能错了,但我认为问题是如何在 CPU 上运行 TensorFlow。
    • @jasekp ?你能澄清目标吗?如果目标类似于使用 cpu 进行测试,同时使用 gpu 上运行的另一个进程进行训练,那么这应该可行
    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多