tf.distribute.cluster_resolver.TPUClusterResolver
| Просмотреть исходный код на GitHub |
Резольвер кластера для 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.
| Аргументы | |
|---|---|
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: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 | Если 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.
Возвращает Дополнительную информацию см. в строке документа класса |
Методы
cluster_spec
cluster_spec()
Возвращает объект ClusterSpec на основе последней информации о TPU.
Мы получаем информацию из API GCE каждый раз, когда вызывается этот метод.
| Возвращает | |
|---|---|
| ClusterSpec, содержащий информацию о хостах, полученную от Cloud TPUs, или 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 в Cloud TPUs. |
zone | Зона расположения TPUs. Если опущено или пусто, предполагается, что зона TPU совпадает с зоной виртуальной машины GCE, которую мы попытаемся определить из сервиса метаданных GCE. |
project | Название проекта GCP, содержащего Cloud TPUs. Если опущено или пусто, мы попытаемся определить имя проекта виртуальной машины GCE из сервиса метаданных GCE. |
| Возвращает | |
|---|---|
| Экземпляр объекта TPUClusterResolver. |
| Возбуждает исключения | |
|---|---|
NotFoundError | Если в режиме eager не найдены устройства TPU. |
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_medata = resolver.get_tpu_system_metadata() num_hosts = tpu_system_medata.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, возвращается это имя (например, если при создании TPUClusterResolver значение аргумента tpus было 'grpc://10.240.1.2:8470', будет возвращено 'grpc://10.240.1.2:8470').
| Аргументы | |
|---|---|
task_type | (Необязательно, строка) Тип задачи TensorFlow для мастера. |
task_id | (Необязательно, целое число) Индекс задачи TensorFlow для мастера. |
rpc_layer | (Необязательно, строка) Протокол RPC, который TensorFlow должен использовать для связи с TPUs. |
| Возвращает | |
|---|---|
| Строка, строка подключения для создания сеанса. |
| Исключения | |
|---|---|
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 на каждом узле отличается. |
__enter__
__enter__()
__exit__
__exit__(
type, value, traceback
)
© 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/TPUClusterResolver