Spec-Zone.ru › TensorFlow 2.4

tf.distribute.cluster_resolver.SlurmClusterResolver

Просмотреть исходный код на GitHub

ClusterResolver для систем с менеджером задач Slurm.

Наследуется от: ClusterResolver

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения более подробной информации.

tf.compat.v1.distribute.cluster_resolver.SlurmClusterResolver

tf.distribute.cluster_resolver.SlurmClusterResolver(
    jobs=None, port_base=8888, gpus_per_node=None, gpus_per_task=None,
    tasks_per_node=None, auto_set_gpu=True, rpc_layer='grpc'
)

Это реализация ClusterResolver для кластеров Slurm. Это позволяет указать задания и количество задач, количество задач на узел, количество графических процессоров на каждом узле и количество графических процессоров для каждой задачи. Она извлекает системные атрибуты из переменных среды Slurm, определяет имена выделенных вычислительных узлов, строит кластер и возвращает объект ClusterResolver, который можно использовать для распределенного TensorFlow.

Аргументы
jobs Словарь с именами задач в качестве ключей и количеством задач в задании в качестве значения. По умолчанию соответствует количеству задач «worker» (Slurm).
port_base Первый номер порта для начала работы процессов на узле.
gpus_per_node Количество графических процессоров, доступных на каждом узле. По умолчанию соответствует количеству графических процессоров, отчётливому nvidia-smi
gpus_per_task Количество графических процессоров, используемых для каждой задачи. По умолчанию графические процессоры распределяются равномерно между задачами на узле.
tasks_per_node Количество задач, выполняемых на каждом узле. Может быть целым числом, если количество задач на узел постоянно, или словарем, сопоставляющим имена хостов количеству задач на этом узле. Если не задано, запрашивается информация из переменной среды Slurm.
auto_set_gpu Автоматически устанавливает видимые устройства CUDA при определении кластера, устанавливая переменную среды CUDA_VISIBLE_DEVICES. По умолчанию True.
rpc_layer Протокол, используемый TensorFlow для связи между узлами. По умолчанию 'grpc'.
Исключения
RuntimeError Если запрошено больше графических процессоров на узел, чем доступно, или запрошено больше задач, чем назначено, или при неудачном разрешении отсутствующих значений из среды.
Атрибуты
environment Возвращает текущую среду, в которой выполняется TensorFlow.

Возможны два значения возврата: "google" (когда TensorFlow выполняется во внутренней среде Google) или пустая строка (когда TensorFlow выполняется где-то ещё).

Если вы реализуете ClusterResolver, который работает как в среде Google, так и в открытых источниках (например, TPU ClusterResolver или аналогичный), вам нужно будет вернуть соответствующую строку, в зависимости от среды, которую необходимо определить.

В противном случае, если вы реализуете ClusterResolver, который будет работать только в открытом TensorFlow, вам не нужно реализовывать этот атрибут.

task_id Возвращает идентификатор задачи, который этот ClusterResolver указывает.

В распределённой среде TensorFlow каждая задача может иметь применимый идентификатор задачи, который представляет собой индекс экземпляра внутри его типа задачи. Это полезно, когда пользователю необходимо выполнить определённый код в зависимости от индекса задачи. Например,

cluster_spec = tf.train.ClusterSpec({
"ps": ["localhost:2222", "localhost:2223"],
"worker": ["localhost:2224", "localhost:2225", "localhost:2226"]
})

# SimpleClusterResolver is used here for illustration; other cluster
# resolvers may be used for other source of task type/id.
simple_resolver = SimpleClusterResolver(cluster_spec, task_type="worker",
task_id=0)

...

if cluster_resolver.task_type == 'worker' and cluster_resolver.task_id == 0:
# Perform something that's only applicable on 'worker' type, id 0. This
# block will run on this particular instance since we've specified this
# task to be a 'worker', id 0 in above cluster resolver.
else:
# Perform something that's only applicable on other ids. This block will
# not run on this particular instance.

Возвращает None если такая информация недоступна или неприменима в текущей распределённой среде, например, при обучении с помощью tf.distribute.cluster_resolver.TPUClusterResolver.

Дополнительную информацию см. в документации класса tf.distribute.cluster_resolver.ClusterResolver.

task_type Возвращает тип задачи, который этот ClusterResolver указывает.

В распределенной среде TensorFlow каждая задача может иметь применимый тип задачи. Действительные типы задач в TensorFlow включают «chief»: рабочий узел, назначенный дополнительной ответственностью, «worker»: обычный рабочий узел для обучения/оценивания, «ps»: сервер параметров или «evaluator»: узел оценки, который оценивает контрольные точки по метрикам.

См. Многоузловую конфигурацию для получения дополнительной информации о типах задач «chief» и «worker», которые наиболее часто используются.

Доступ к такой информации полезен, когда пользователю необходимо выполнить определённый код в зависимости от типов задач. Например,

cluster_spec = tf.train.ClusterSpec({
"ps": ["localhost:2222", "localhost:2223"],
"worker": ["localhost:2224", "localhost:2225", "localhost:2226"]
})

# SimpleClusterResolver is used here for illustration; other cluster
# resolvers may be used for other source of task type/id.
simple_resolver = SimpleClusterResolver(cluster_spec, task_type="worker",
task_id=1)

...

if cluster_resolver.task_type == 'worker':
# Perform something that's only applicable on workers. This block
# will run on this particular instance since we've specified this task to
# be a worker in above cluster resolver.
elif cluster_resolver.task_type == 'ps':
# Perform something that's only applicable on parameter servers. This
# block will not run on this particular instance.

Возвращает None если такая информация недоступна или неприменима в текущей распределенной среде, например, при обучении с помощью tf.distribute.experimental.TPUStrategy.

Дополнительную информацию см. в документации класса tf.distribute.cluster_resolver.ClusterResolver.

Методы

cluster_spec

Просмотреть исходный код

cluster_spec()

Возвращает объект ClusterSpec на основе последней информации о группе экземпляров.

Это возвращает объект ClusterSpec для использования на основе информации из указанных параметров инициализации и переменных среды Slurm. Спецификация кластера определяется каждый раз при вызове этой функции. Разрешитель извлекает имена узлов узлов с помощью scontrol и упаковывает задачи в этом порядке, пока узел a не будет иметь количество задач, равное спецификации. Графические процессоры на узлах назначаются задачам в соответствии со спецификацией путём установки переменной среды CUDA_VISIBLE_DEVICES.

Возвращает
Объект ClusterSpec, содержащий информацию об узлах, полученную из переменных среды Slurm.

get_task_info

Просмотреть исходный код

get_task_info()

Возвращает имя задачи и идентификатор задачи для процесса, вызвавшего эту функцию.

Это возвращает имя задачи и индекс задачи для процесса, вызвавшего эту функцию, в соответствии с его рангом и спецификацией кластера. Имя задачи и индекс задачи устанавливаются после построения кластера с помощью cluster_spec, в противном случае по умолчанию равны None.

Возвращает
Строка, определяющая имя задачи, к которой относится процесс, и целое число, определяющее индекс задачи, к которой относится процесс в этой задаче.

master

Просмотреть исходный код

master(
    task_type=None, task_id=None, rpc_layer=None
)

Возвращает строку master для подключения к мастеру TensorFlow.

Аргументы
task_type (Необязательно) Переопределяет тип задачи по умолчанию.
task_id (Необязательно) Переопределяет индекс задачи по умолчанию.
rpc_layer (Необязательно) Переопределяет протокол RPC по умолчанию, используемый TensorFlow для связи между узлами.
Возвращает
Строка подключения к мастеру TensorFlow.

num_accelerators

Просмотреть исходный код

num_accelerators(
    task_type=None, task_id=None, config_proto=None
)

Возвращает количество ускорителей на рабочий узел.

Возвращает количество ядер ускорителей (таких как графические процессоры и TPU) на каждый рабочий узел.

Дополнительно, мы разрешаем вызывающим сторонам указывать тип задачи и идентификатор задачи, если они хотят нацелить запрос на определенную задачу TensorFlow, чтобы получить количество ускорителей. Это поддерживает гетерогенные среды, где количество ядер ускорителей на хост отличается.

Аргументы
task_type (Необязательно) Тип задачи TensorFlow узла, который мы хотим запросить.
task_id (Необязательно) Индекс задачи TensorFlow узла, который мы хотим запросить.
config_proto (Необязательно) Конфигурация для запуска новой сессии, чтобы получить количество ядер ускорителей.
Возвращает
Карта типов ускорителей к количеству ядер.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.4/api_docs/python/tf/distribute/cluster_resolver/SlurmClusterResolver

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API