tf.distribute.cluster_resolver.ClusterResolver
Абстрактный класс для всех реализаций ClusterResolver.
Здесь определена основа для всех реализаций ClusterResolver. ClusterResolver позволяют TensorFlow взаимодействовать с различными системами управления кластерами (например, GCE, AWS и т. д.) и предоставляют TensorFlow необходимые сведения для настройки распределенного обучения.
Благодаря взаимодействию TensorFlow с этими системами можно автоматически обнаруживать IP-адреса различных рабочих узлов TensorFlow и разрешать их. В конечном счете это позволит автоматически восстанавливаться после сбоев базовых машин и масштабировать кластеры рабочих узлов TensorFlow в обе стороны.
Примечание для реализующих подкласс tf.distribute.cluster_resolver.ClusterResolver: Помимо этих абстрактных методов, если применимы атрибуты task_type, task_id и rpc_layer, их также следует реализовать либо как свойства с методами получения и установки, либо присвоив значения непосредственно атрибутам self._task_type, self._task_id или self._rpc_layer, чтобы использовались методы получения и установки базового класса. Пример см. в tf.distribute.clusterresolver.SimpleClusterResolver.init_.
Как правило, стратегии tf.distribute с несколькими клиентами, такие как tf.distribute.experimental.MultiWorkerMirroredStrategy, требуют наличия свойств task_type и task_id в используемом ими ClusterResolver. С другой стороны, эти понятия неприменимы к стратегиям с одним клиентом, таким как tf.distribute.experimental.TPUStrategy, поскольку предполагается, что программа выполняется только для одной задачи, поэтому нет необходимости создавать ветви кода в зависимости от типа и идентификатора задачи.
- task_type — имя текущего именованного задания сервера (например, 'worker', 'ps' в задании распределенного обучения с параметризацией).
- task_id — порядковый индекс сервера в рамках типа задачи.
- rpc_layer — протокол, используемый TensorFlow для взаимодействия с другими серверами TensorFlow в распределенной среде.
| Атрибуты | |
|---|---|
environment | Возвращает текущую среду, в которой работает TensorFlow. Возможны два значения: "google" (если TensorFlow работает во внутренней среде Google) или пустая строка (если TensorFlow работает в другой среде). Если вы реализуете ClusterResolver, работающий как в среде Google, так и в мире открытого исходного кода (например, ClusterResolver для TPU или аналогичный), необходимо возвращать соответствующую строку в зависимости от среды, которую следует определить. В противном случае, если вы реализуете ClusterResolver, предназначенный только для 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
@abc.abstractmethod cluster_spec()
Получает текущее состояние кластера и возвращает tf.train.ClusterSpec.
| Возвращает | |
|---|---|
Объект tf.train.ClusterSpec, представляющий состояние кластера на момент вызова этой функции. |
Реализующие эту функцию должны обеспечить актуальность возвращаемого ClusterSpec на момент ее вызова. Обычно для этого необходимо при каждом вызове получать информацию из базовой системы управления кластерами и заново создавать cluster_spec, а не пытаться кэшировать данные.
master
@abc.abstractmethod
master(
task_type=None, task_id=None, rpc_layer=None
)
Получает имя или URL главного узла сеанса.
Примечание: это полезно только для TensorFlow 1.x.
| Аргументы | |
|---|---|
task_type | (Необязательно) Тип задачи TensorFlow главного узла. |
task_id | (Необязательно) Индекс задачи TensorFlow главного узла. |
rpc_layer | (Необязательно) Протокол RPC для указанного кластера. |
| Возвращает | |
|---|---|
| Имя или URL главного узла сеанса. |
Реализующие эту функцию должны обеспечить актуальность возвращаемого главного узла на момент ее вызова. Обычно для этого необходимо получать сведения о главном узле при каждом вызове функции.
num_accelerators
num_accelerators(
task_type=None, task_id=None, config_proto=None
)
Возвращает количество ядер ускорителей на один рабочий узел.
Возвращает количество доступных на каждом рабочем узле ядер ускорителей (например, GPU и TPU).
При необходимости вызывающий код может указать task_type и task_id, чтобы запросить количество ускорителей для конкретной задачи TensorFlow. Это позволяет поддерживать неоднородные среды, в которых количество ядер ускорителей на узел различается.
| Аргументы | |
|---|---|
task_type | (Необязательно) Тип задачи TensorFlow для машины, сведения о которой требуется получить. |
task_id | (Необязательно) Индекс задачи TensorFlow для машины, сведения о которой требуется получить. |
config_proto | (Необязательно) Конфигурация для запуска нового сеанса, чтобы запросить количество имеющихся в нем ядер ускорителей. |
| Возвращает | |
|---|---|
| Сопоставление типов ускорителей с количеством ядер. |
© 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/ClusterResolver