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. |
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, то будет возвращено это имя (например, если значение аргумента 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 на каждом узле отличается. |
__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.3/api_docs/python/tf/distribute/cluster_resolver/TPUClusterResolver