Я использую модели, которые я не создавал, а модифицировал (из этого репозитория https://github.com/GeorgeSeif/Semantic-Segmentation-Suite)
У меня есть обученные модели, и я могу использовать их для прогнозирования достаточно хорошо, но я хочу запустить целые папки с изображениями и разделить работу между несколькими графическими процессорами. Я не совсем понимаю, как работает tf.device(), и то, что я пробовал, вообще не сработало.
Я предполагал, что могу сделать что-то вроде этого:
for i, d in enumerate(['\gpu:0', '\gpu:1']):
with tf.device(d):
output = sess.run(network, feed_dict={net_input: image_batch[i]})
Но на самом деле это не распределяет задачи по разным графическим процессорам, а также не вызывает ошибки.
Мой вопрос в том, можно ли выделить разные изображения для разных экземпляров сеанса на отдельных графических процессорах без явного изменения предварительного кода сетевого кода. Я хотел бы избежать запуска двух разных скриптов Python с CUDA_VISIBLE_DEVICES = ...
Есть ли простой способ сделать это?
Насколько я понимаю, определения операций должны быть вложены в блок «with tf.device()», однако при выводе операция — это просто загрузка модели и весов, но если я помещу это в блок «with tf. device ()» я получаю сообщение об ошибке, говорящее о том, что граф уже существует и не может быть определен дважды.