El tutorial o código que verás en este artículo es la resolución más sencilla y efectiva que hallamos a esta inquietud o dilema.
Solución:
Tensorflow ejecuta automáticamente los cálculos en tantos núcleos como estén disponibles en una sola máquina.
Si tiene un clúster distribuido, asegúrese de seguir las instrucciones en https://www.tensorflow.org/how_tos/distributed/ para configurar el clúster. (por ejemplo, cree el tf.ClusterSpec correctamente, etc.)
Para ayudar a depurar, puede usar el log_device_placement
opciones de configuración en la sesión para que Tensorflow imprima dónde se colocan realmente los cálculos. (Nota: esto funciona tanto para GPU como para Tensorflow distribuido).
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
Tenga en cuenta que, si bien el algoritmo de ubicación de cómputo de Tensorflow funciona bien para gráficos de cómputo pequeños, es posible que pueda obtener un mejor rendimiento en gráficos de cómputo grandes al colocar manualmente los cómputos en dispositivos específicos. (por ejemplo, usando with tf.device(...):
bloques.)
Para Tensorflow 1.x, puede configurar la sesión de Tensorflow y usar esta sesión para el backend de 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)
Para Tensorflow 2.x, la mayoría de los módulos anteriores están obsoletos. Entonces necesitas llamarlos, por ejemplo, así tensorflow.compat.v1.ConfigProto
.
Recuerda que puedes optar por la opción de agregar una reseña si diste con la contestación.