Я тренирую модель LSTM на очень огромном наборе данных на своей машине, используя Keras on Tensorflow. Моя машина имеет 16 ядер. Во время обучения модели я заметил, что нагрузка во всех ядрах ниже 40%.
Я просмотрел различные источники, которые ищут решение, и попытался предоставить ядра для использования в бэкэнд как
config = tf.ConfigProto(device_count={"CPU": 16})
backend.tensorflow_backend.set_session(tf.Session(config=config))
Даже после этого загрузка остается прежней.
Это потому, что модель очень мала. Это займет около 5 минут на эпоху. Если он использует полные ядра, скорость может быть улучшена.
Как сказать Keras или Tensorflow использовать все доступные ядра, т.е. 16 ядер для обучения модели.
Я прошел через эти вопросы с stackoverflow и попробовал решения, упомянутые там. Это не помогло.
Как вы тренируете модель точно? Возможно, вы захотите изучить использование model.fit_generator()
но с объектом model.fit_generator()
Sequence
вместо пользовательского генератора. Это позволяет безопасно использовать многопроцессорность и приведет к использованию всех ядер.
Вы можете проверить документы Keras для примера.