限制Tensorflow CPU和内存使用量

pek*_*apa 9 python memory-management cpu-usage tensorflow

我已经看到有关Tensorflow的GPU内存的几个问题,但我已经将它安装在没有GPU支持的Pine64上.

这意味着我使用非常有限的资源(仅限CPU和RAM)运行它,而Tensorflow似乎想要一切,完全冻结我的机器.


有没有办法限制分配给Tensorflow的处理能力和内存量?类似于bazel自己--local_resources旗帜的东西?

Yar*_*tov 12

这将创建一个一次运行一个op的会话,每个op只运行一个线程

sess = tf.Session(config=
    tf.ConfigProto(inter_op_parallelism_threads=1,
                   intra_op_parallelism_threads=1))
Run Code Online (Sandbox Code Playgroud)

不确定限​​制内存,它似乎按需分配,当我的网络需要100GB的RAM时,我已经让TensorFlow冻结我的机器,所以我的解决方案是制作需要更少内存的网络

  • 这给我抛出了异常 `TypeError: target must be a string, but got <class 'tensorflow.core.protobuf.config_pb2.ConfigProto'> Exception AttributeError: "'Session' object has no attribute '_session'" in <bound method Session <tensorflow.python.client.session.Session 对象在 0x7f8411bba0d0>> 的 .__del__ 忽略了`,但添加了 `config` 关键字(即 `sess = tf.Session(config=tf.ConfigProto(inter_op_parallelism_threads=1, intra_op_parallelism_threads=1) )`) 解决了这个问题。 (2认同)

Rom*_*ler 5

对于 TensorFlow 2.x,这个问题已在以下线程中得到解答:

在 Tensorflow 2.x 中,不再有会话。直接使用config API在程序启动时设置并行度。

import tensorflow as tf

tf.config.threading.set_intra_op_parallelism_threads(2)
tf.config.threading.set_inter_op_parallelism_threads(2)
with tf.device('/CPU:0'):
    model = tf.keras.models.Sequential([...
Run Code Online (Sandbox Code Playgroud)

https://www.tensorflow.org/api_docs/python/tf/config/threading

  • 内存使用情况如何? (3认同)