Spec-Zone.ru › TensorFlow

tf.distribute.cluster_resolver.SlurmClusterResolver

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 (Необязательно) Настройка для запуска новой сессии для запроса количества ядер ускорителей.
Возвращаемое значение
Словарь типов ускорителей и количества ядер.

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

Spec-Zone.ru

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