#python #python-3.x #tensorflow2.0 #kaggle
#python #python-3.x #tensorflow2.0 #kaggle
Вопрос:
Я пытаюсь запустить программу глубокой сегментации нейронной сети, написанную на Python / Tensorflow, работающую под управлением Kaggle. Я пытаюсь понять, как управлять устройством, используемым в фоновых запусках [СОХРАНИТЬ ВЕРСИЮ]. Первым шагом является возможность увидеть, на каких устройствах я работаю — CPU, GPU или TPU. Как моя программа Python может определить, какие устройства используются в данный момент?
Ответ №1:
Есть много способов ответить на ваш вопрос. Самое простое — проверить, какие устройства вам доступны:
with tf.Session() as sess:
devices = sess.list_devices()
Если вы хотите узнать более подробную информацию о каждом из устройств, которые вы можете запустить tf.test.gpu_device_name
, чтобы получить имя устройства GPU (или любого другого выделенного).
Комментарии:
1. Спасибо. Две проблемы: во-первых, мне пришлось изменить определение sess на
tf.compat.v1.Session()
. Во-вторых, хотя в нем правильно перечислены устройства GPU, когда у меня включен GPU, но не перечислены устройства TPU, когда они включены. Это потому, что TPU являются функцией Tensorflow 2.0?2. Кроме того,
tf.config.list_physical_devices(device_type=None)
не отображаются TPU.
Ответ №2:
Найдено решение:
def running_on_TPU():
try:
tpu = tf.distribute.cluster_resolver.TPUClusterResolver() # TPU detection
tf.config.experimental_connect_to_cluster(tpu)
tf.tpu.experimental.initialize_tpu_system(tpu)
strategy = tf.distribute.experimental.TPUStrategy(tpu)
return True
except:
return False
print( "running_on_TPU", running_on_TPU(), file = sys.stderr )