tf.distribute.cluster_resolver.TPUClusterResolver
| Просмотреть исходный код на GitHub |
Резольвер кластера для TPUs Google Cloud.
Наследуется от: 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:порт). Если установлено в None, будет запущен сервер TF. Если coordinator_name равно None, сервер TF не будет запущен, даже если coordinator_address равно None. |
credentials | Кредиты GCE. Если None, используются стандартные учетные данные из oauth2client |
service | Объект API GCE, возвращаемый функцией googleapiclient.discovery. Если вы указываете пользовательский объект сервиса, параметр credentials будет проигнорирован. |
discovery_url | Шаблон URL, указывающий на расположение сервиса discovery. Он должен иметь два параметра {api} и {apiVersion}, которые, при заполнении, создают абсолютный URL к документу discovery для этого сервиса. Переменная среды '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.
Возвращает Для получения дополнительной информации, пожалуйста, обратитесь к документации класса |
tpu_hardware_feature | Возвращает сохранённую информацию о топологии TPU. |
Методы
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_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 должен использовать для связи с 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 на хост отличается. |
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/versions/r2.9/api_docs/python/tf/distribute/cluster_resolver/TPUClusterResolver