tf.distribute.cluster_resolver.SlurmClusterResolver
| Просмотреть исходный код на GitHub |
ClusterResolver для системы с менеджером задач Slurm.
Наследуется от: ClusterResolver
tf.distribute.cluster_resolver.SlurmClusterResolver(
jobs, port_base=8888, gpus_per_node=1, gpus_per_task=1, tasks_per_node=None,
auto_set_gpu=True, rpc_layer='grpc'
)
Это реализация менеджеров кластеров для кластеров Slurm. Это позволяет указать задания и количество задач, количество задач на узел, количество видеокарт на каждом узле и количество видеокарт для каждой задачи. Он получает атрибуты системы из переменных окружения Slurm, определяет имена выделенных вычислительных узлов, строит кластер и возвращает объект ClusterResolver, который можно использовать для распределённого TensorFlow.
| Аргументы | |
|---|---|
jobs | Словарь с именами задач в качестве ключей и количеством задач в задании в качестве значения. |
port_base | Первый номер порта для начала процессов на узле. |
gpus_per_node | Количество видеокарт, доступных на каждом узле. |
gpus_per_task | Количество видеокарт, которые будут использоваться для каждой задачи. |
tasks_per_node | Количество задач, которые необходимо запустить на каждом узле; если не задано, по умолчанию используется значение из переменной окружения Slurm SLURM_NTASKS_PER_NODE. |
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 с открытым исходным кодом, вам не нужно реализовывать этот свойство. |
Методы
cluster_spec
cluster_spec()
Возвращает объект ClusterSpec на основе последней информации о группе экземпляров.
Это возвращает объект ClusterSpec для использования на основе информации из заданных параметров инициализации и переменных окружения Slurm. Определение кластера решается каждый раз при вызове этой функции. Менеджер извлекает имена узлов из scontrol и собирает задачи в этом порядке до тех пор, пока количество задач на узле не будет равно указанному значению. Видеокарты на узлах распределяются по задачам в соответствии с указанными параметрами путём установки переменной среды 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
)
Возвращает количество ускорительных ядер на рабочем узле.
Это возвращает количество ускорительных ядер (таких как GPU и 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/r1.15/api_docs/python/tf/distribute/cluster_resolver/SlurmClusterResolver