Как моя программа Tensorflow на Python может распечатать, какое устройство {CPU, GPU, TPU} оно использует?

#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 )