Получите количество графических процессоров, используемых в Tensorflow Distributed в многоузловом подходе - PullRequest
1 голос
/ 30 июня 2019

Я сейчас пытаюсь сравнить Horovod и Tensorflow Distributed API.

При использовании Horovod я могу получить доступ к общему количеству графических процессоров, используемых в настоящее время, следующим образом:

import horovod.tensorflow as hvd
size = hvd.size()

Аналогичная концепция доступна при использовании PyTorch Distributed API:

size = int(os.environ["WORLD_SIZE"])

Я хотел бы выполнить ту же операцию и получить количество графических процессоров, используемых в настоящее время для нескольких графических процессоров / узлов с официальным API TF Distributed.

Я не могу использовать CUDA_VISIBLE_DEVICESпеременная окружения, так как она будет работать только на одном узле.

1 Ответ

0 голосов
/ 07 июля 2019

Несколько выводов, которые отвечают на мой вопрос:

  • Эквивалент hvd.size(): (сессия должна быть запущена и инициализирована первой в отличие от hvd! В противном случае вы просто получите "1")==> tf.distribute.get_strategy().num_replicas_in_sync

  • Эквивалент hvd.rank(): (сессия должна быть запущена и инициализирована первой в отличие от hvd! В противном случае вы просто получите «0»)

    def get_rank():
        replica_id = tf.distribute.get_replica_context().replica_id_in_sync_group
        if isinstance(replica_id, tf.Tensor):
            return tf.get_static_value(replica_id) != 0)
        else:
            return 0
  • Работает ли TF Distributed?: tf.distribute.has_strategy() => True/False (то же самое замечание, что и выше, иначе вы просто получите False)
...