распараллелить для цикла в тензорном потоке для обучения нескольких моделей параллельно - PullRequest
0 голосов
/ 16 мая 2018

У меня есть несколько моделей, которые я хочу тренировать параллельно в тензорном потоке.Модели в настоящее время находятся внутри цикла.Когда я пытался тренировать модель, обучение проходило последовательно, а не параллельно.Мой вопрос похож на тот, который задавали здесь (но никто не ответил на этот вопрос).Однако я тренирую модель, а не делаю вывод.Один из комментариев к этому вопросу: « Чтобы ускорить его, можно использовать один процесс с одной средой выполнения TensorFlow. TensorFlow не был оптимизирован для случая нескольких сред совместного использования GPU ».

В соответствии с приведенным выше комментарием, я заметил, что если я просто создаю одну большую модель (например, даже одну модель с большим общим количеством параметров, чем несколько моделей в объединенном цикле), она выполняется быстрее (например, 0,19сек / шаг для этой большой модели).Это контрастирует с циклом обучения для четырех разных моделей (что занимает около 0,55 с / шаг для всего цикла - почти в 4 раза больше, чем у модели большего размера).Может ли кто-нибудь посоветовать мне, как распараллелить это для цикла for, чтобы все итерации цикла for выполнялись параллельно (то есть почти за 0,19 с / шаг для всего цикла вместо 0,55 с / шаг)?Все мои модели могут уместиться в памяти графического процессора.

PS: из-за характера моей работы я не могу использовать tf. while_loop, так как он требует определения функций потерь в while_loop.Есть ли какой-либо другой способ сделать этот тип распараллеливания цикла for на GPU (например, возможно, используя threading )?Я также не использую per_process_gpu_memory_fraction в тензорном потоке, так как другой вопрос, приведенный выше, показал, что он замедляет работу.

Кроме того, возможно ли выполнить такое распараллеливание в керасе или pytorch?

Любая помощь будет высоко ценится.Спасибо.

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