Spec-Zone.ru › TensorFlow

tf.distribute.cluster_resolver.ClusterResolver

Абстрактный класс для всех реализаций ClusterResolver.

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

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

Подробнее см. в руководстве по миграции.

tf.compat.v1.distribute.cluster_resolver.ClusterResolver

Здесь определена основа для всех реализаций ClusterResolver. ClusterResolver позволяют TensorFlow взаимодействовать с различными системами управления кластерами (например, GCE, AWS и т. д.) и предоставляют TensorFlow необходимые сведения для настройки распределенного обучения.

Благодаря взаимодействию TensorFlow с этими системами можно автоматически обнаруживать IP-адреса различных рабочих узлов TensorFlow и разрешать их. В конечном счете это позволит автоматически восстанавливаться после сбоев базовых машин и масштабировать кластеры рабочих узлов TensorFlow в обе стороны.

Примечание для реализующих подкласс tf.distribute.cluster_resolver.ClusterResolver: Помимо этих абстрактных методов, если применимы атрибуты task_type, task_id и rpc_layer, их также следует реализовать либо как свойства с методами получения и установки, либо присвоив значения непосредственно атрибутам self._task_type, self._task_id или self._rpc_layer, чтобы использовались методы получения и установки базового класса. Пример см. в tf.distribute.clusterresolver.SimpleClusterResolver.init_.

Как правило, стратегии tf.distribute с несколькими клиентами, такие как tf.distribute.experimental.MultiWorkerMirroredStrategy, требуют наличия свойств task_type и task_id в используемом ими ClusterResolver. С другой стороны, эти понятия неприменимы к стратегиям с одним клиентом, таким как tf.distribute.experimental.TPUStrategy, поскольку предполагается, что программа выполняется только для одной задачи, поэтому нет необходимости создавать ветви кода в зависимости от типа и идентификатора задачи.

  • task_type — имя текущего именованного задания сервера (например, 'worker', 'ps' в задании распределенного обучения с параметризацией).
  • task_id — порядковый индекс сервера в рамках типа задачи.
  • rpc_layer — протокол, используемый TensorFlow для взаимодействия с другими серверами TensorFlow в распределенной среде.
Атрибуты
environment Возвращает текущую среду, в которой работает TensorFlow.

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

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

В противном случае, если вы реализуете 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

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

@abc.abstractmethod
cluster_spec()

Получает текущее состояние кластера и возвращает tf.train.ClusterSpec.

Возвращает
Объект tf.train.ClusterSpec, представляющий состояние кластера на момент вызова этой функции.

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

master

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

@abc.abstractmethod
master(
    task_type=None, task_id=None, rpc_layer=None
)

Получает имя или URL главного узла сеанса.

Примечание: это полезно только для TensorFlow 1.x.
Аргументы
task_type (Необязательно) Тип задачи TensorFlow главного узла.
task_id (Необязательно) Индекс задачи TensorFlow главного узла.
rpc_layer (Необязательно) Протокол RPC для указанного кластера.
Возвращает
Имя или URL главного узла сеанса.

Реализующие эту функцию должны обеспечить актуальность возвращаемого главного узла на момент ее вызова. Обычно для этого необходимо получать сведения о главном узле при каждом вызове функции.

num_accelerators

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

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

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

Возвращает количество доступных на каждом рабочем узле ядер ускорителей (например, GPU и 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/api_docs/python/tf/distribute/cluster_resolver/ClusterResolver

Spec-Zone.ru

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