Keras/TF CPU 创建了太多线程
Keras/TF CPU creating too many threads
即使在 linux 机器上使用 Tensorflow CPU(运行 一个简单的 CNN 模型拟合)设置 tf.config.threading.set_inter_op_parallelism_threads(1)
和 tf.config.threading.set_intra_op_parallelism_threads(1)
Keras 之后也在创建许多线程。无论我尝试什么,它似乎都在经历合适的时期时创建了 94 个线程。尝试过 tf.compat.v1.ConfigProto
设置但没有任何帮助。如何限制线程数?
是 tensorflow 创建了很多线程的原因。
使用上述 2 种类型的并行性(内部和内部),您对 TensorFlow 生成的线程数量的控制有限。通过设置这两个变量你可以得到的最小线程数是N,其中N是你的核心数cpu(不知道你用的是不是gpu)
intra_op_parallelism_threads = 1
inter_op_parallelism_threads = 1
即使通过设置环境变量OMP_NUM_THREADS和MKL_NUM_THREADS也无助于进一步减少线程数
以下讨论表明,在不更改 TensorFlow 源代码的情况下,不可能将线程数减少到 N 以下。
- How can I confine TensorFlow C API to use one and only one thread in total
- How to stop TensorFlow from multi-threading
- https://github.com/tensorflow/tensorflow/issues/42510
- https://github.com/tensorflow/tensorflow/issues/33627
即使在 linux 机器上使用 Tensorflow CPU(运行 一个简单的 CNN 模型拟合)设置 tf.config.threading.set_inter_op_parallelism_threads(1)
和 tf.config.threading.set_intra_op_parallelism_threads(1)
Keras 之后也在创建许多线程。无论我尝试什么,它似乎都在经历合适的时期时创建了 94 个线程。尝试过 tf.compat.v1.ConfigProto
设置但没有任何帮助。如何限制线程数?
使用上述 2 种类型的并行性(内部和内部),您对 TensorFlow 生成的线程数量的控制有限。通过设置这两个变量你可以得到的最小线程数是N,其中N是你的核心数cpu(不知道你用的是不是gpu)
intra_op_parallelism_threads = 1
inter_op_parallelism_threads = 1
即使通过设置环境变量OMP_NUM_THREADS和MKL_NUM_THREADS也无助于进一步减少线程数
以下讨论表明,在不更改 TensorFlow 源代码的情况下,不可能将线程数减少到 N 以下。
- How can I confine TensorFlow C API to use one and only one thread in total
- How to stop TensorFlow from multi-threading
- https://github.com/tensorflow/tensorflow/issues/42510
- https://github.com/tensorflow/tensorflow/issues/33627