tf.tpu.shard
Разделение computation для параллельного выполнения.
tf.tpu.shard(
computation, inputs=None, num_shards=1, input_shard_axes=None,
outputs_from_all_shards=True, output_shard_axes=None, infeed_queue=None,
device_assignment=None, name=None
)
inputs должен быть списком тензоров или None (эквивалентным пустому списку), каждый из которых имеет соответствующую ось разделения (от input_shard_axes). Каждый вход разделяется на num_shards части по соответствующей оси, и вычисление применяется к каждому фрагменту параллельно.
Тензоры транслируются на все фрагменты, если они лексически захвачены computation. Например:
x = tf.constant(7) def computation(): return x + 3 ... = shard(computation, ...)
в качестве входных данных.
Если outputs_from_all_shards истинно, выходные данные со всех фрагментов computation конкатенируются обратно по их output_shards_axes. В противном случае каждый выходной параметр берется из произвольного фрагмента.
Входы и выходы вычисления должны быть тензорами с рангом не менее 1.
| Аргументы | |
|---|---|
computation | Функция Python, которая строит вычисление для применения к каждому фрагменту входных данных. |
inputs | Список входных тензоров или None (эквивалентное пустому списку). Каждый входной тензор имеет соответствующую ось фрагмента, заданную input_shard_axes, размер которой должен быть кратен num_shards. |
num_shards | Количество фрагментов. |
input_shard_axes | Список измерений, по которым нужно разделить inputs, или None. None означает «разделить все входы по размеру 0». Если не None, должно быть одно измерение на каждый вход. |
outputs_from_all_shards | Булево значение или список булевых значений. Для каждого выхода, если True, выходные данные со всех фрагментов конкатенируются по соответствующему output_shard_axes элементу. В противном случае каждый выходной параметр берется из произвольного фрагмента. Если аргумент является булевым значением, значение аргумента используется для каждого выхода. |
output_shard_axes | Список измерений, по которым следует конкатенировать выходные данные computation, или None. None означает «конкатенировать все выходы по размеру 0». Если не None, должно быть одно измерение на каждый выход. Игнорируется, если outputs_from_all_shards равно False. |
infeed_queue | Если не None, используемое InfeedQueue для увеличения входных данных computation. |
device_assignment | Если не None, описание DeviceAssignment отображения между логическими ядрами в вычислении и физическими ядрами в топологии TPU. Использует значение по умолчанию для назначения устройств, если None. DeviceAssignment может быть опущено, если каждый фрагмент вычисления использует только одно ядро, и либо существует только один фрагмент, либо количество фрагментов равно количеству ядер в системе TPU. |
name | (Устарело) Ничего не делает. |
| Возвращаемые значения | |
|---|---|
| Список выходных тензоров. |
| Исключения | |
|---|---|
ValueError | Если num_shards <= 0 |
ValueError | Если len(input_shard_axes) != len(inputs) |
ValueError | Если len(output_shard_axes) != len(выходы от computation) |
© 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/r1.15/api_docs/python/tf/tpu/shard