web-dev-qa-db-fra.com

Comment faire fonctionner Keras sur plusieurs cœurs?

J'utilise Keras avec le backend Tensorflow sur un cluster (création de réseaux de neurones). Comment puis-je l'exécuter de manière multi-thread sur le cluster (sur plusieurs cœurs) ou est-ce fait automatiquement par Keras? Par exemple, en Java, on peut créer plusieurs threads, chaque thread s'exécutant sur un noyau.

Si possible, combien de cœurs devraient être utilisés?

7
BlackHawk

Tensorflow exécute automatiquement les calculs sur autant de cœurs disponibles sur une seule machine. 

Si vous avez un cluster distribué, veillez à suivre les instructions figurant à https://www.tensorflow.org/how_tos/distributed/ pour configurer le cluster. (par exemple, créez correctement tf.ClusterSpec, etc.)

Pour faciliter le débogage, vous pouvez utiliser les options de configuration log_device_placement de la session pour que Tensorflow imprime où les calculs sont réellement placés. (Remarque: cela fonctionne pour les deux GPU ainsi que pour Tensorflow distribué.)

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

Notez que si l'algorithme de placement de calcul de Tensorflow fonctionne correctement pour les petits graphiques de calcul, vous pourrez peut-être améliorer les performances sur les grands graphiques de calcul en plaçant manuellement les calculs dans des périphériques spécifiques. (par exemple, en utilisant des blocs with tf.device(...):.)

7
saeta

vous pouvez configurer la session de tensorflow et utiliser cette session pour keras backend

 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)
1
Milan_Harkhani