tf.compat.v1.tpu.shard
Разделяет computation для параллельного выполнения.
tf.compat.v1.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_shard_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/r2.3/api_docs/python/tf/compat/v1/tpu/shard