tf.distribute.cluster_resolver.TPUClusterResolver
Резольвер кластера для Google Cloud TPUs.
Наследуется от: ClusterResolver
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
)
Используется в ноутбуках
| Используется в руководстве | Используется в учебниках |
|---|---|
Это реализация резольверов кластеров для сервиса Google Cloud TPU.
TPUClusterResolver поддерживает следующие различные среды: Google Compute Engine, Google Kubernetes Engine, внутренние среды Google.
Он может быть передан в tf.distribute.TPUStrategy для поддержки обучения TF2 на Cloud TPUs.
| Args | |
|---|---|
tpu | Строка, соответствующая TPU для использования. Может быть именем TPU или gRPC-адресом TPU-рабочего узла. Если не задано, будет попытка автоматического определения адреса TPU на Cloud TPUs. Если установлено значение "local", предполагается, что TPU подключен напрямую к виртуальной машине, а не через сеть. |
zone | Зона размещения TPUs. Если опущено или пусто, предполагается, что зона TPU совпадает с зоной виртуальной машины GCE, которую мы попытаемся определить из сервиса метаданных GCE. |
project | Имя проекта GCP, содержащего Cloud TPUs. Если опущено или пусто, мы попытаемся определить имя проекта виртуальной машины GCE из сервиса метаданных GCE. |
job_name | Имя задачи TensorFlow, к которой относятся TPUs. |
coordinator_name | Имя, используемое для координатора. Устанавливается в None, если координатор не должен быть включен в вычисленном ClusterSpec. |
coordinator_address | Адрес координатора (обычно пара ip:порт). Если установлено значение 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' переопределит этот параметр. |
| Raises | |
|---|---|
ImportError | Если googleapiclient не установлен. |
ValueError | Если TPUs не указаны. |
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.
Возвращает Дополнительную информацию см. в документе класса |
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.
Возвращает Дополнительную информацию см. в документе класса |
tpu_hardware_feature | Возвращает хранящуюся информацию о топологии TPU. |
Методы
cluster_spec
cluster_spec()
Возвращает объект ClusterSpec на основе последних данных о TPU.
Мы получаем информацию из API GCE каждый раз, когда вызывается этот метод.
| Возвращает | |
|---|---|
| Объект ClusterSpec, содержащий информацию о узлах, полученную от Cloud TPUs, или None. |
| Raises | |
|---|---|
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)
| Args | |
|---|---|
tpu | Строка, соответствующая TPU для использования. Может быть именем TPU или gRPC-адресом TPU-рабочего узла. Если не задано, будет попытка автоматического определения адреса TPU на Cloud TPUs. |
zone | Зона размещения TPUs. Если опущено или пусто, предполагается, что зона TPU совпадает с зоной виртуальной машины GCE, которую мы попытаемся определить из сервиса метаданных GCE. |
project | Имя проекта GCP, содержащего Cloud TPUs. Если опущено или пусто, мы попытаемся определить имя проекта виртуальной машины GCE из сервиса метаданных GCE. |
| Возвращает | |
|---|---|
| Экземпляр объекта TPUClusterResolver. |
| Raises | |
|---|---|
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