Является ли Tensorflow 2.0 с API Keras поточно-ориентированным? - PullRequest
0 голосов
/ 25 марта 2020

Является ли Tensorflow 2.0 поточно-ориентированным?

Точнее говоря, вызывает ли fit / predict или другие методы на той же модели из разных потоков безопасные в Tensorflow 2.0 (с использованием Keras API)?

Я не смог найти четкого ответа из документации или поиска в Интернете.

Я видел этот вопрос от 2017 года, в котором говорится, что Keras (хотя в этом вопросе упоминался бэкэнд Theano ) является поточно-ориентированным, но вы должны вызвать закрытый метод model._make_predict_function(), прежде чем вызывать predict() (который, я считаю, не рекомендуется) Тем не менее, я прочитал это сообщение в блоге от 2019 года, в котором говорится, что он не является потокобезопасным.

Я также нашел этот вопрос от 2018 года, в котором говорится, что Tensorflow (pre-Keras) является поточно-ориентированным, но вы должны убедиться, что вы используете стандартную чистоту графа (что я считаю неуместным для Tensorflow 2. * из-за стремительного выполнения). Когда я посмотрел потокобезопасность в нетерпеливом исполнении, я увидел эту статью в документах, где упоминается поточностная безопасность нетерпеливого исполнения, но это относится к Java.

И Еще более запутанно, я видел реализацию A3 C в Github с Keras с этого года (2020), которая использовала блокировки перед обучением сетей с общей политикой / ценностями, намекая на то, что Keras не является поточно-ориентированным, и вам нужно приобрести заблокировать перед тренировкой общей модели. Тем не менее, мне кажется, что реализация имеет недостатки, потому что каждый работник создавал и использовал свою собственную уникальную блокировку, которая отказывается от цели иметь блокировку. Я пришел к выводу, что либо его код выполнялся успешно независимо от «блокировки», потому что Keras является поточно-ориентированным, либо у него есть ошибка.

Я провел свой собственный финальный тест, где я запустил два потока, подходящих к одному и тому же. смоделируйте для разных выходов (для одного и того же постоянного ввода) и попытались вызвать предикат во время обучения, и это, кажется, работает, но я задаю этот вопрос, потому что хочу убедиться. Есть ли случаи, когда Tensorflow 2.0 / Keras не безопасны для потоков?

1 Ответ

0 голосов
/ 28 марта 2020

По словам участника Keras в этой проблеме GitHub:

Модели Keras не могут быть гарантированно поточно-ориентированными. Рассмотрим наличие независимых копий модели в каждом потоке для вывода процессора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...