Spec-Zone.ru › TensorFlow 2.3

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 Словарь с именами задач в качестве ключей и количеством задач в задаче в качестве значения. По умолчанию соответствует количеству «workers» задачам (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.3/api_docs/python/tf/distribute/cluster_resolver/SlurmClusterResolver

Spec-Zone.ru

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