Spec-Zone.ru › TensorFlow

tf.distribute.cluster_resolver.TPUClusterResolver

Резолвер кластера для TPU Google Cloud.

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

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

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

Дополнительные сведения см. в руководстве по миграции.

tf.compat.v1.distribute.cluster_resolver.TPUClusterResolver

tf.distribute.cluster_resolver.TPUClusterResolver(
    tpu=None,
    zone=None,
    project=None,
    job_name='worker',
    coordinator_name=None,
    coordinator_address=None,
    credentials='default',
    service=None,
    discovery_url=None
)

Используется в блокнотах

Используется в руководстве Используется в учебных материалах
  • Переход с TPU embedding_columns на слой TPUEmbedding
  • Переход с TPUEstimator на TPUStrategy
  • Использование TPU
  • Обучение с Orbit
  • Классификация изображений с Model Garden
  • Сегментация экземпляров с Model Garden
  • Обнаружение объектов с Model Garden
  • Семантическая сегментация с Model Garden

Это реализация резолверов кластера для сервиса TPU Google Cloud.

TPUClusterResolver поддерживает следующие среды: Google Compute Engine, Google Kubernetes Engine и внутренняя среда Google.

Его можно передать в tf.distribute.TPUStrategy для поддержки обучения TF2 на TPU Cloud.

Аргументы
tpu Строка, соответствующая используемому TPU. Это может быть имя TPU или адрес gRPC-узла TPU. Если значение не задано, будет предпринята попытка автоматически определить адрес TPU в TPU Cloud. Если задано значение "local", предполагается, что TPU подключен непосредственно к виртуальной машине, а не по сети.
zone Зона, в которой расположены TPU. Если значение не указано или пусто, предполагается, что зона TPU совпадает с зоной виртуальной машины GCE; ее местоположение будет определено с помощью сервиса метаданных GCE.
project Имя проекта GCP, содержащего TPU Cloud. Если значение не указано или пусто, будет предпринята попытка определить имя проекта виртуальной машины GCE с помощью сервиса метаданных GCE.
job_name Имя задания TensorFlow, к которому относятся TPU.
coordinator_name Имя координатора. Установите значение None, если координатор не должен включаться в вычисляемый ClusterSpec.
coordinator_address Адрес координатора (обычно пара ip:port). Если задано значение None, будет запущен сервер TF. Если coordinator_name имеет значение None, сервер TF не будет запущен, даже если coordinator_address имеет значение None.
credentials Учетные данные GCE. Если указано значение None, используются учетные данные по умолчанию из oauth2client.
service Объект API GCE, возвращаемый функцией googleapiclient.discovery. Если указан пользовательский объект службы, параметр credentials игнорируется.
discovery_url Шаблон URL, указывающий на местоположение службы обнаружения. Он должен содержать два параметра — {api} и {apiVersion}, — которые после подстановки формируют абсолютный URL документа обнаружения для этой службы. Это значение будет переопределено переменной среды 'TPU_API_DISCOVERY_URL'.
Вызывает исключения
ImportError Если googleapiclient не установлен.
ValueError Если TPU не указаны.
RuntimeError Если указано пустое имя TPU и выполнение происходит в среде Google Cloud.
Атрибуты
environment Возвращает текущую среду, в которой выполняется 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.

tpu_hardware_feature Возвращает сохраненные сведения о топологии TPU.

Методы

cluster_spec

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

cluster_spec()

Возвращает объект ClusterSpec на основе актуальных сведений о TPU.

При каждом вызове этого метода сведения извлекаются с помощью API GCE.

Возвращает
ClusterSpec со сведениями об узлах, полученными от TPU Cloud, или None.
Вызывает исключения
RuntimeError Если указанный TPU неисправен.

connect

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

@staticmethod
connect(
    tpu=None, zone=None, project=None
)

Инициализирует TPU и возвращает TPUClusterResolver.

Этот API подключается к удаленному кластеру TPU и инициализирует аппаратное обеспечение TPU. Пример использования:

resolver = tf.distribute.cluster_resolver.TPUClusterResolver.connect(
    tpu='')

Этот метод можно рассматривать как удобную оболочку для следующего кода:

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
tf.config.experimental_connect_to_cluster(resolver)
tf.tpu.experimental.initialize_tpu_system(resolver)
Аргументы
tpu Строка, соответствующая используемому TPU. Это может быть имя TPU или адрес gRPC-узла TPU. Если значение не задано, будет предпринята попытка автоматически определить адрес TPU в TPU Cloud.
zone Зона, в которой расположены TPU. Если значение не указано или пусто, предполагается, что зона TPU совпадает с зоной виртуальной машины GCE; ее местоположение будет определено с помощью сервиса метаданных GCE.
project Имя проекта GCP, содержащего TPU Cloud. Если значение не указано или пусто, будет предпринята попытка определить имя проекта виртуальной машины GCE с помощью сервиса метаданных GCE.
Возвращает
Экземпляр объекта TPUClusterResolver.
Вызывает исключения
NotFoundError Если в режиме eager не найдены устройства TPU.

get_coordination_service_leader

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

get_coordination_service_leader()

Возвращает расположение службы координации.

Служба координации должна находиться на TPU worker0.

Возвращает
Строку, указывающую путь расположения.

get_job_name

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

get_job_name()

get_master

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

get_master()

get_tpu_system_metadata

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

get_tpu_system_metadata()

Возвращает метаданные системы TPU.

С помощью этого метода можно получить некоторые сведения о системе TPU, например общее число ядер, число рабочих узлов TPU и устройства. Например:

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
tpu_system_metadata = resolver.get_tpu_system_metadata()
num_hosts = tpu_system_metadata.num_hosts
Возвращает
Объект tf.tpu.experimental.TPUSystemMetadata.

master

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

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

Возвращает строку Master для использования в сеансе.

В обычном случае возвращается путь grpc (grpc://1.2.3.4:8470) первого экземпляра в ClusterSpec, возвращенном функцией cluster_spec.

Если при создании TPUClusterResolver используется имя, не являющееся именем TPU, вместо него возвращается это имя (например, если аргумент tpus при создании этого TPUClusterResolver имел значение 'grpc://10.240.1.2:8470', будет возвращено 'grpc://10.240.1.2:8470').

Аргументы
task_type (Необязательный параметр, строка) Тип задачи TensorFlow для главного узла.
task_id (Необязательный параметр, целое число) Индекс задачи TensorFlow для главного узла.
rpc_layer (Необязательный параметр, строка) Протокол RPC, который TensorFlow должен использовать для связи с TPU.
Возвращает
Строку подключения, используемую при создании сеанса.
Вызывает исключения
ValueError Если ни один из указанных TPU не существует.

num_accelerators

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

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

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

Метод подключается к главному узлу, получает список всех присутствующих на нем устройств и подсчитывает их. Кроме того, перед возвратом числа ядер TPU на один узел он проверяет, что число устройств на каждом узле кластера одинаково.

Аргументы
task_type Не используется.
task_id Не используется.
config_proto Используется для подключения к главному узлу TPU с целью получения метаданных системы.
Вызывает исключения
RuntimeError Если после повторных попыток не удается связаться с рабочим узлом TPU или если число устройств TPU на узлах различается.

set_tpu_topology

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

set_tpu_topology(
    serialized_tpu_topology
)

Задает сведения о топологии TPU, сохраненные в этом резолвере.

__enter__

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

__enter__()

__exit__

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

__exit__(
    type, value, traceback
)

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

Spec-Zone.ru

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