tf.compat.v1.tpu.replicate
Создаёт оператор графа, который выполняет реплицированное вычисление на TPU.
tf.compat.v1.tpu.replicate(
computation, inputs=None, infeed_queue=None, device_assignment=None, name=None,
maximum_shapes=None, padding_spec=None
)
Пример базового использования, когда inputs имеет статическую форму:
def computation(x): x = x + 1 return tf.math.reduce_mean(x) x = tf.convert_to_tensor([1., 2., 3.]) y = tf.convert_to_tensor([4., 5., 6.]) tf.compat.v1.tpu.replicate(computation, inputs=[[x], [y]])
Если у inputs динамические формы, и вы хотите автоматически разбить входные данные на группы, чтобы избежать перекомпиляции XLA. Смотрите пример расширенного использования ниже:
def computation(x): x = x + 1 return tf.math.reduce_mean(x) # Assume input tensors in two replicas `x` and `y` both have dynamic shape # ([None, 2]). tf.compat.v1.tpu.replicate( computation, inputs=[x, y], maximum_shapes=[tf.TensorShape([None, None])], padding_spec=tf.compat.v1.tpu.PaddingSpec.POWER_OF_TWO)
| Аргументы | |
|---|---|
computation |
Функция Python, которая создаёт вычисление для репликации. |
inputs |
Список списков входных тензоров или None (эквивалентно [[]]), индексированные по [replica_num][input_num]. Все реплики должны иметь одинаковое количество входных данных. Каждый вход может быть вложенной структурой, содержащей значения, преобразуемые в тензоры. Обратите внимание, что передача списка N-мерных совместимых значений приведёт к списку N-мерных скалярных тензоров, а не к одному тензору ранга N. Если вам нужно другое поведение, преобразуйте часть входных данных в тензоры с помощью tf.convert_to_tensor. |
infeed_queue |
Если не None, то кортеж аргументов, которые необходимо добавить в качестве входных данных для вычисления. |
device_assignment |
Если не None, описание соответствия между логическими ядрами в вычислении и физическими ядрами в топологии TPU. Используется по умолчанию, если None. Описание соответствия можно опустить, если каждая реплика вычисления использует только одно ядро, и либо реплик одна, либо их количество равно количеству ядер в системе TPU. |
name |
(Устаревшее) Ничего не делает. |
maximum_shapes |
Вложенная структура tf.TensorShape, представляющая форму, к которой следует дополнить соответствующую компоненту каждого элемента входных данных в каждой реплике. Любые неизвестные размерности (например, tf.compat.v1.Dimension(None) в tf.TensorShape или -1 в тензор-подобном объекте) будут дополнены до максимального размера по этой размерности во всех репликах. Структура maximum_shapes должна быть такой же, как и inputs[0]. |
padding_spec |
Перечисление, заданное tpu.PaddingSpec. Это описывает политику дополнения, когда форма inputs по tpu.replicate динамическая. Одно из применений — включение автоматического разбиения входных данных на группы (bucketing), установив значение в tpu.PaddingSpec.POWER_OF_TWO, что может помочь уменьшить перекомпиляцию в XLA. |
| Возвращаемые значения | |
|---|---|
Список выходов, индексированные по [replica_num] каждый выход может быть вложенной структурой, такой же, как и та, которую возвращает computation(), за исключением нескольких случаев. Исключения: 1) Выход None: возвращается NoOp, который зависит от вычисления. 2) Выход единственного значения: возвращается кортеж, содержащий значение. 3) Выходы только с операциями: возвращается NoOp, который зависит от вычисления. |
| Исключения | |
|---|---|
ValueError |
Если у всех реплик неравное количество входных тензоров. |
ValueError |
Если количество входных данных в реплике не соответствует количеству формальных параметров для computation. |
ValueError |
Если статические inputs размерности не совпадают со значениями, заданными в maximum_shapes. |
ValueError |
Если структура входных данных в каждой реплике не соответствует структуре maximum_shapes. |
© 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/compat/v1/tpu/replicate