如何在多核上运行Keras?

时间:2017-01-11 10:29:30

标签: python multithreading python-3.x tensorflow keras

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

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

2 个答案:

答案 0 :(得分:8)

Tensorflow会在单个计算机上可用的核心上自动运行计算。

如果您有分布式群集,请务必按照https://www.tensorflow.org/how_tos/distributed/中的说明配置群集。 (例如,正确创建tf.ClusterSpec等)

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

# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

请注意,虽然Tensorflow的计算放置算法适用于小型计算图,但您可以通过手动将计算放在特定设备中,从而在大型计算图上获得更好的性能。 (例如,使用with tf.device(...):块。)

答案 1 :(得分:3)

您可以配置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)