Использование тензорного потока в кластерной среде приводит к ошибке из-за вызова fork () / system () - PullRequest
0 голосов
/ 10 сентября 2018

Я использую Keras с бэкэндом TensorFlow в кластерной среде. Я не делаю никакого обратного распространения в сети, я использую только predict(...), layer.get_weights() и layer.set_weights(...).

Я управляю параметрами нейронной сети напрямую, оптимизирую функцию пригодности, используя стратегии эволюции.

У меня есть мастер, генерирующий N наборов параметров (весов и смещений), которые затем передаются работникам с использованием MPI. Для этого я использую mpi4py. Затем эти работники устанавливают эти параметры в своем собственном экземпляре последовательной модели (керас) и оценивают функцию пригодности, прогнозируя действия с использованием этой сети. Затем пригодность передается обратно мастеру, который адаптирует распределение, из которого выбираются наборы параметров.

При запуске моего кода я получаю следующее предупреждение:

Процесс MPI выполнил операцию, включающую вызов fork() системный вызов для создания дочернего процесса. Открытый MPI в настоящее время работать в состоянии, которое может привести к повреждению памяти или другие системные ошибки; Ваша работа MPI может зависать, зависать или производить тихий повреждение данных. Использование fork() (или system() или других вызовов, которые создавать дочерние процессы) настоятельно не рекомендуется.

Я реализовал версию моего алгоритма без keras / tenorflow, и ошибка исчезла. Поэтому я полагаю, что тензор потока выполняет вызов system() или fork(). Можно ли предотвратить использование таких вызовов tenorflow?

...