tf.distribute.cluster_resolver.TPUClusterResolver
Резолвер кластера для TPU 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
)
Используется в блокнотах
| Используется в руководстве | Используется в учебных материалах |
|---|---|
Это реализация резолверов кластера для сервиса 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.
Возвращает Дополнительные сведения см. в строке документации класса |
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 со сведениями об узлах, полученными от 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