tf.experimental.dtensor.Layout
Представляет информацию о расположении DTensor.
tf.experimental.dtensor.Layout(
sharding_specs: List[str],
mesh: tf.experimental.dtensor.Mesh
)
Используется в блокнотах
| Используется в руководстве | Используется в учебниках |
|---|---|
Макет описывает, как распределенный тензор разделен по сетке (и, следовательно, по устройствам). Для каждой оси тензора соответствующий фрагмент разбиения указывает, по какой размерности сетки она разбита. Специальный фрагмент разбиения UNSHARDED указывает, что ось дублируется на всех устройствах этой сетки.
Для получения подробного обсуждения и примеров обратитесь к Концепциям DTensor.
Например, рассмотрим одномерную сетку:
Mesh(["TPU:0", "TPU:1", "TPU:2", "TPU:3", "TPU:4", "TPU:5"], [("x", 6)])
Эта сетка организует 6 устройств TPU в одномерный массив. Layout([UNSHARDED], mesh) — это макет для тензора ранга 1, который дублируется на 6 устройствах.
Для другого примера рассмотрим двумерную сетку:
Mesh(["TPU:0", "TPU:1", "TPU:2", "TPU:3", "TPU:4", "TPU:5"],
[("x", 3), ("y", 2)])
Эта сетка организует 6 устройств TPU в 3x2 двумерный массив. Layout(["x", UNSHARDED], mesh) — это макет для тензора ранга 2, чья первая ось разбита по размерности сетки "x", а вторая ось дублируется. Если мы разместим np.arange(6).reshape((3, 2)) с помощью этого макета, отдельные компоненты тензоров будут выглядеть следующим образом:
Device | Component TPU:0 [[0, 1]] TPU:1 [[0, 1]] TPU:2 [[2, 3]] TPU:3 [[2, 3]] TPU:4 [[4, 5]] TPU:5 [[4, 5]]
| Args | |
|---|---|
sharding_specs | Список спецификаций фрагментации, каждая из которых соответствует оси тензора. Каждая спецификация (dim_sharding) может быть либо размерностью сетки, либо специальным значением UNSHARDED. |
mesh | Конфигурация сетки для тензора. |
| Атрибуты | |
|---|---|
mesh | |
rank | |
shape | |
sharding_specs | |
type | |
Методы
as_proto
as_proto()
as_proto(self: tensorflow.python._pywrap_dtensor_device.Layout) -> tensorflow::dtensor::LayoutProto
Возвращает сообщение протокола LayoutProto.
batch_sharded
@classmethod
batch_sharded(
mesh: tf.experimental.dtensor.Mesh,
batch_dim: str,
rank: int,
axis: int = 0
) -> 'Layout'
Возвращает макет, фрагментированный по размерности пакет.
delete
delete(
dims: List[int]
) -> 'Layout'
Возвращает макет с удаленными заданными размерностями.
from_device
@classmethod
from_device(
device: str
) -> 'Layout'
Создаёт макет одного устройства из сетки одного устройства.
from_proto
@classmethod
from_proto(
layout_proto: layout_pb2.LayoutProto
) -> 'Layout'
Создаёт экземпляр из LayoutProto.
from_single_device_mesh
@classmethod
from_single_device_mesh(
mesh: tf.experimental.dtensor.Mesh
) -> 'Layout'
Создаёт макет одного устройства из сетки одного устройства.
from_string
@classmethod
from_string(
layout_str: str
) -> 'Layout'
Создаёт экземпляр из удобочитаемой строки.
global_shape_from_local_shape
global_shape_from_local_shape()
global_shape_from_local_shape(self: tensorflow.python._pywrap_dtensor_device.Layout, local_shape: List[int]) -> tuple
Возвращает глобальную форму, вычисленную из этой локальной формы.
inner_sharded
@classmethod
inner_sharded(
mesh: tf.experimental.dtensor.Mesh,
inner_dim: str,
rank: int
) -> 'Layout'
Возвращает макет, фрагментированный по внутренней размерности.
is_batch_parallel
is_batch_parallel()
is_batch_parallel(self: tensorflow.python._pywrap_dtensor_device.Layout) -> bool
is_fully_replicated
is_fully_replicated()
is_fully_replicated(self: tensorflow.python._pywrap_dtensor_device.Layout) -> bool
Возвращает True, если все оси тензора дублируются.
is_single_device
is_single_device()
is_single_device(self: tensorflow.python._pywrap_dtensor_device.Layout) -> bool
Возвращает True, если макет представляет собой устройство без распределения.
local_shape_from_global_shape
local_shape_from_global_shape()
local_shape_from_global_shape(self: tensorflow.python._pywrap_dtensor_device.Layout, global_shape: List[int]) -> tuple
Возвращает локальную форму, вычисленную из этой глобальной формы.
num_shards
num_shards()
num_shards(self: tensorflow.python._pywrap_dtensor_device.Layout, idx: int) -> int
Возвращает количество фрагментов для размерности тензора idx.
offset_to_shard
offset_to_shard()
Сопоставление смещения в сплющенном списке с индексом фрагмента.
offset_tuple_to_global_index
offset_tuple_to_global_index(
offset_tuple
)
Сопоставление смещения с индексом в глобальном тензоре.
replicated
@classmethod
replicated(
mesh: tf.experimental.dtensor.Mesh,
rank: int
) -> 'Layout'
Возвращает дублируемый макет ранга rank.
to_parted
to_parted() -> 'Layout'
Возвращает «разделенный» макет из статического макета.
Разделенный макет содержит оси, которые большинство расширителей SPMD обрабатывают как независимые.
FIXME(b/285905569): Точные семантика всё ещё изучается.
to_string
to_string()
to_string(self: tensorflow.python._pywrap_dtensor_device.Layout) -> str
__eq__
__eq__()
eq(self: tensorflow.python._pywrap_dtensor_device.Layout, arg0: tensorflow.python._pywrap_dtensor_device.Layout) -> bool
© 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/experimental/dtensor/Layout