Spec-Zone.ru › TensorFlow 2.4

tf.distribute.cluster_resolver.GCEClusterResolver

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

ClusterResolver для Google Compute Engine.

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

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

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

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

tf.compat.v1.distribute.cluster_resolver.GCEClusterResolver

tf.distribute.cluster_resolver.GCEClusterResolver(
    project, zone, instance_group, port, task_type='worker', task_id=0,
    rpc_layer='grpc', credentials='default', service=None
)

Это реализация резолвера кластера для платформы группы экземпляров Google Compute Engine. Указав проект, зону и группу экземпляров, этот резолвер получит IP-адреса всех экземпляров в группе экземпляров и вернёт объект ClusterResolver, подходящий для использования в распределённом TensorFlow.

Примечание: этот резолвер кластера не может получить task_type, task_id или rpc_layer. Чтобы использовать его со стратегиями распределения, такими как tf.distribute.experimental.MultiWorkerMirroredStrategy, вам необходимо указать task_type и task_id в конструкторе.

Пример использования с tf.distribute.Strategy:

# On worker 0
cluster_resolver = GCEClusterResolver("my-project", "us-west1",
                                      "my-instance-group",
                                      task_type="worker", task_id=0)
strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy(
    cluster_resolver=cluster_resolver)

# On worker 1
cluster_resolver = GCEClusterResolver("my-project", "us-west1",
                                      "my-instance-group",
                                      task_type="worker", task_id=1)
strategy = tf.distribute.experimental.MultiWorkerMirroredStrategy(
    cluster_resolver=cluster_resolver)
Аргументы
project Название проекта GCE.
zone Зона группы экземпляров GCE.
instance_group Название группы экземпляров GCE.
port Порт прослушивающего сервера TensorFlow (по умолчанию: 8470)
task_type Название задачи TensorFlow, к которой относится эта группа экземпляров VM в GCE.
task_id Индекс задачи для данной конкретной виртуальной машины в группе экземпляров GCE. В частности, каждой отдельной виртуальной машине должна быть вручную назначена уникальная порядковая индексация в группе экземпляров, чтобы их можно было различить.
rpc_layer Слой RPC, который TensorFlow должен использовать для обмена данными между экземплярами.
credentials Удостоверения GCE. Если ничего не указано, по умолчанию используется GoogleCredentials.get_application_default().
service Объект API GCE, возвращённый функцией googleapiclient.discovery. (По умолчанию: discovery.build('compute', 'v1')). Если вы укажете пользовательский объект службы, параметр credentials будет проигнорирован.
Исключения
ImportError Если googleapiclient не установлен.
Атрибуты
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, основанный на последней информации о группе экземпляров.

Это возвращает объект ClusterSpec для использования на основе информации из указанной группы экземпляров. Мы будем получать информацию из API GCE каждый раз, когда этот метод вызывается.

Возвращает
Объект ClusterSpec, содержащий информацию об узлах, полученную из GCE.

master

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

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

© 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.4/api_docs/python/tf/distribute/cluster_resolver/GCEClusterResolver

Spec-Zone.ru

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