Spec-Zone.ru › TensorFlow

tf.compat.v1.tpu.shard

Разбивает computation для параллельного выполнения.

tf.compat.v1.tpu.shard(
    computation: Callable[..., Any],
    inputs: Optional[List[core_types.Tensor]] = None,
    num_shards: int = 1,
    input_shard_axes: Optional[List[int]] = None,
    outputs_from_all_shards: Union[bool, List[bool]] = True,
    output_shard_axes: Optional[List[int]] = None,
    infeed_queue: Optional[tpu_feed.InfeedQueue] = None,
    device_assignment: Optional[tf.tpu.experimental.DeviceAssignment] = None,
    name: Optional[Text] = None,
    xla_options: Optional[tf.tpu.XLAOptions] = None
) -> List[core_types.Tensor]

inputs должен быть списком тензоров или None (эквивалентом пустого списка); каждому из них соответствует ось разбиения (из input_shard_axes). Каждый вход разбивается на num_shards частей вдоль соответствующей оси, после чего вычисления выполняются параллельно для каждого шарда.

Тензоры передаются всем шардам, если они захвачены лексически в computation. Например:

x = tf.constant(7) def computation(): return x + 3 ... = shard(computation, ...)

в качестве входных данных.

Если outputs_from_all_shards имеет значение true, выходные данные всех шардов 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 (Устарело) Ничего не делает.
xla_options Экземпляр tpu.XLAOptions, задающий параметры, передаваемые компилятору XLA. Для параметров по умолчанию используйте None.
Возвращает
Список выходных тензоров.
Вызывает исключения
ValueError Если num_shards <= 0
ValueError Если len(input_shard_axes) != len(inputs)
ValueError Если len(output_shard_axes) != len(выходных данных из computation)

© 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/compat/v1/tpu/shard

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API