Python 如何在多核上运行Keras?

Python 如何在多核上运行Keras?,python,multithreading,python-3.x,tensorflow,keras,Python,Multithreading,Python 3.x,Tensorflow,Keras,我在集群上使用Keras和Tensorflow后端(创建神经网络)。我如何在集群上(在多个内核上)以多线程方式运行它,或者这是由Keras自动完成的?例如,在Java中,可以创建几个线程,每个线程运行在一个内核上 如果可能,应使用多少个核?Tensorflow会自动在一台机器上可用的尽可能多的核上运行计算 如果您有分布式群集,请确保按照中的说明配置群集。(例如,正确创建tf.ClusterSpec等) 为了帮助调试,您可以在会话上使用log\u device\u placement配置选项,将T

我在集群上使用Keras和Tensorflow后端(创建神经网络)。我如何在集群上(在多个内核上)以多线程方式运行它,或者这是由Keras自动完成的?例如,在Java中,可以创建几个线程,每个线程运行在一个内核上


如果可能,应使用多少个核?

Tensorflow会自动在一台机器上可用的尽可能多的核上运行计算

如果您有分布式群集,请确保按照中的说明配置群集。(例如,正确创建tf.ClusterSpec等)

为了帮助调试,您可以在会话上使用
log\u device\u placement
配置选项,将Tensorflow打印出来,显示实际放置计算的位置。(注意:这适用于GPU和分布式Tensorflow。)


请注意,尽管Tensorflow的计算布局算法对小型计算图形效果良好,但通过在特定设备中手动放置计算,您可能能够在大型计算图形上获得更好的性能。(例如,将
与tf.device(…):
块一起使用。)

对于Tensorflow 1.x,您可以配置Tensorflow的会话,并将此会话用于keras后端:

session_conf = tensorflow.ConfigProto(intra_op_parallelism_threads=8, inter_op_parallelism_threads=8)
tensorflow.set_random_seed(1)
sess = tensorflow.Session(graph=tensorflow.get_default_graph(), config=session_conf)
keras.backend.set_session(sess)
对于Tensorflow 2.x,上面的大多数模块都不推荐使用。例如,您需要调用它们,如
tensorflow.compat.v1.ConfigProto

session_conf = tensorflow.ConfigProto(intra_op_parallelism_threads=8, inter_op_parallelism_threads=8)
tensorflow.set_random_seed(1)
sess = tensorflow.Session(graph=tensorflow.get_default_graph(), config=session_conf)
keras.backend.set_session(sess)