Je forme un modèle LSTM sur un très grand ensemble de données sur ma machine en utilisant Keras sur le backend Tensorflow. Ma machine a 16 cœurs. Lors de la formation du modèle, j'ai remarqué que la charge dans tous les noyaux était inférieure à 40%.
J'ai parcouru différentes sources à la recherche d'une solution et j'ai essayé de fournir les cœurs à utiliser dans le backend comme
config = tf.ConfigProto(device_count={"CPU": 16})
backend.tensorflow_backend.set_session(tf.Session(config=config))
Même après cela, la charge est toujours la même.
Est-ce parce que le modèle est très petit.? Cela prend environ 5 minutes pour une époque. S'il utilise des cœurs complets, la vitesse peut être améliorée.
Comment dire à Keras ou Tensorflow d'utiliser tous les cœurs disponibles, c'est-à-dire 16 cœurs pour former le modèle. ??
J'ai parcouru ces questions de stackoverflow et essayé les solutions mentionnées ici. Ça n'a pas aidé.
Comment entraînez-vous le modèle exactement? Vous voudrez peut-être étudier l'utilisation de model.fit_generator()
mais avec un objet Keras Sequence
au lieu d'un générateur personnalisé. Cela permet d'utiliser le multitraitement en toute sécurité et entraînera l'utilisation de tous les cœurs.
Vous pouvez consulter le Keras docs pour un exemple.