Spec-Zone.ru › TensorFlow 2.9

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

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

Это возвращает имя задачи и индекс задачи для процесса, который вызывает эту функцию в соответствии с его рангом и спецификацией кластера. Имя задачи и индекс задачи устанавливаются после построения кластера с помощью 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) на рабочий процесс.

Дополнительно, мы позволяем вызывающим сторонам указывать task_type и task_id, если они хотят нацелиться на определённую задачу 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/versions/r2.9/api_docs/python/tf/distribute/cluster_resolver/SlurmClusterResolver

Spec-Zone.ru

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