Spec-Zone.ru › TensorFlow 2.3

tf.distribute.cluster_resolver.UnionResolver

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

Выполняет объединение базовых объектов ClusterResolver.

Наследуется от: ClusterResolver

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

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

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.distribute.cluster_resolver.UnionResolver

tf.distribute.cluster_resolver.UnionResolver(
    *args, **kwargs
)

Этот класс выполняет объединение на основе двух или более существующих объектов ClusterResolver. Он объединяет базовые объекты ClusterResolver и возвращает единый ClusterSpec при вызове cluster_spec. Подробное описание функции объединения приведено в функции cluster_spec.

Для дополнительных свойств ClusterResolver, таких как тип задачи, индекс задачи, уровень RPC, среда и т. д., мы вернем значение из первого объекта ClusterResolver в объединении.

Пример объединения двух объектов ClusterResolver:

cluster_0 = tf.train.ClusterSpec({"worker": ["worker0.example.com:2222",
                                             "worker1.example.com:2222"]})
cluster_resolver_0 = SimpleClusterResolver(cluster, task_type="worker",
                                           task_id=0,
                                           rpc_layer="grpc")

cluster_1 = tf.train.ClusterSpec({"ps": ["ps0.example.com:2222",
                                         "ps1.example.com:2222"]})
cluster_resolver_1 = SimpleClusterResolver(cluster, task_type="ps",
                                           task_id=0,
                                           rpc_layer="grpc")

# Its task type would be "worker".
cluster_resolver = UnionClusterResolver(cluster_resolver_0,
                                        cluster_resolver_1)

Пример переопределения количества GPU в экземпляре TFConfigClusterResolver:

tf_config = TFConfigClusterResolver()
gpu_override = SimpleClusterResolver(tf_config.cluster_spec(),
                                     num_accelerators={"GPU": 1})
cluster_resolver = UnionResolver(gpu_override, tf_config)
Аргументы
*args объекты, подлежащие объединению.
**kwargs rpc_layer - (необязательно) переопределить значение для уровня RPC, используемого TensorFlow. task_type - (необязательно) переопределить значение для текущего типа задачи. task_id - (необязательно) переопределить значение для текущего индекса задачи.
Исключения
TypeError Если какой-либо аргумент не является подклассом ClusterResolvers.
ValueError Если не переданы никакие аргументы.
Атрибуты
environment Возвращает текущую среду, в которой выполняется TensorFlow.

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

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

В противном случае, если вы реализуете ClusterResolver, который будет работать только в открытом TensorFlow, вам не нужно реализовывать это свойство.

rpc_layer
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 из ClusterResolver.

Возвращаемое значение
ClusterSpec, содержащий информацию об узлах, объединенную из всех базовых ClusterResolver.
Исключения
KeyError Если при объединении двух или более словарей обнаружены конфликтующие ключи, возникает это исключение.
Примечание: Если несколько ClusterResolver экспонируют ClusterSpec с одинаковым именем задачи, мы объединим список/словарь рабочих узлов.

Если все базовые ClusterSpec экспонируют набор рабочих узлов в виде списков, мы конкатенируем списки рабочих узлов, начиная со списка рабочих узлов из первого ClusterResolver, переданного в конструктор.

Если любой из ClusterSpec экспонирует набор рабочих узлов в виде словаря, мы будем рассматривать все наборы рабочих узлов как словари (даже если они возвращаются как списки) и объединим их только в словарь, если нет конфликтующих ключей. Если есть конфликтующий ключ, мы будем генерировать KeyError.

master

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

master(
    task_type=None, task_id=None, rpc_layer=None
)

Возвращает адрес главного узла для создания сессии.

Обычно возвращает главный узел из первого переданного ClusterResolver, но вы можете переопределить его, указав task_type и task_id.

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

© 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/UnionResolver

Spec-Zone.ru

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