我在集群上使用 Keras 和 Tensorflow 后端(创建神经网络)。我如何在集群上(在多个内核上)以多线程方式运行它,还是由 Keras 自动完成?例如在 Java 中,可以创建多个线程,每个线程在一个核心上运行。
如果可能,应该使用多少核?
最佳答案
Tensorflow 自动在单台机器上可用的尽可能多的内核上运行计算。
如果您有分布式集群,请务必按照 https://www.tensorflow.org/how_tos/distributed/ 中的说明进行操作配置集群。 (例如正确创建 tf.ClusterSpec 等)
为了帮助调试,您可以在 session 中使用 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(...):
block 。)
关于python - 如何在多核上运行 Keras?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41588383/