Как лучше всего использовать распределенный вывод с несколькими графическими процессорами в тензорном потоке?

Я новичок в Tensorflow и работаю над распространением тестовых изображений на несколько графических процессоров. Я прочитал много ответов о переполнении стека и примеров Github, и я думаю, что это можно сделать двумя способами.

1) использование tf.FIFOQueue() для подачи изображений каждого графического процессора, однако очередь не рекомендуется во многих ответах (из-за нового API tf.data). И у него есть некоторые проблемы (https://github.com/tensorflow/tensorflow/issues/8061< /а>)

2) с использованием API tf.data. Я не уверен, поддерживает ли этот API GPU или нет. В этом выпуске (https://github.com/tensorflow/tensorflow/issues/13610), похоже, входной конвейер с API tf.data пока не может поддерживать подачу на GPU.

Я не рассматриваю распределенный Tensorflow (поскольку наша модель и масштаб сервера не так велики)

Я буду очень признателен, если кто-то может дать мне какой-либо совет.


person Jiang Wenbo    schedule 06.02.2018    source источник


Ответы (1)


Используйте 1_. tf.data API предназначен для замены почти всех функций очередей и делает все проще и производительнее.

Он также может передавать данные на графический процессор. Во второй проблеме, на которую вы ссылаетесь, просто говорится, что предварительная обработка не будет происходить на графическом процессоре, но данные будут обрабатываться на ЦП, а затем отправляться на несколько ваших графических процессоров.

person Olivier Moindrot    schedule 16.02.2018
comment
Привет, спасибо за ответ. Недавно я начал использовать API набора данных, и мне порекомендовали использовать функцию dataset.shard для распределенных графических процессоров. Но в официальных документах не так много информации о том, как его использовать. Был ли у вас опыт работы с ним раньше? - person Jiang Wenbo; 19.02.2018