tf.experimental.dtensor.Mesh
Представляет конфигурацию Mesh над определённым списком измерений Mesh.
tf.experimental.dtensor.Mesh(
dim_names: List[str],
global_device_ids: np.ndarray,
local_device_ids: List[int],
local_devices: List[Union[tf_device.DeviceSpec, str]],
mesh_name: str = '',
global_devices: Optional[List[Union[tf_device.DeviceSpec, str]]] = None,
use_xla_spmd: bool = USE_XLA_SPMD
)
Сеть состоит из именованных измерений с размерами, которые описывают, как упорядочена группа устройств. Определение расположения тензоров в терминах измерений сетки позволяет нам эффективно определять коммуникацию, необходимую при вычислении операции с тензорами разных расположений.
Сеть предоставляет информацию не только о размещении тензоров, но и о топологии базовых устройств. Например, мы можем сгруппировать 8 TPU в одномерный массив для параллелизма данных или в сетку для (двухстороннего) параллелизма данных и (четырёхстороннего) параллелизма модели.
Обратитесь к Концепции DTensor для подробного обсуждения и примеров.
Примечание: утилитыdtensor.create_meshиdtensor.create_distributed_meshпредоставляют более простой API для создания сетей для одно- или многоклиентских случаев использования.
| Аргументы | |
|---|---|
dim_names | Список строк, обозначающих имена измерений. |
global_device_ids | Массив NumPy глобальных идентификаторов устройств используется для создания DeviceSpecs, описывающих сеть. Форма этого массива определяет размер каждого измерения сетки. Значения в этом массиве должны увеличиваться последовательно, начиная с 0. Этот аргумент одинаков для каждого клиента DTensor. |
local_device_ids | Список локальных идентификаторов устройств, являющихся подмножеством значений в global_device_ids. Они указывают положение локальных устройств в глобальной сети. У разных клиентов DTensor должны быть разные значения local_device_ids. Все local_device_ids от всех клиентов DTensor должны охватывать все элементы в global_device_ids. |
local_devices | Список устройств, размещённых локально. Элементы соответствуют 1:1 элементам local_device_ids. |
mesh_name | Название сети. В настоящее время редко используется, в основном для указания, основана ли она на CPU, GPU или TPU. |
global_devices | optional Список глобальных устройств. Устанавливается, когда используется несколько сетей устройств. |
use_xla_spmd | optional Булево значение. Если True, будет использоваться XLA SPMD вместо DTensor SPMD. |
| Атрибуты | |
|---|---|
dim_names | |
name | |
single_device | |
size | |
strides | Возвращает массив шагов для этой сетки. Если форма сетки [(device_id / (b*c*d)) % a, (device_id / (c*d)) % b, (device_id / (d)) % c, (device_id) % d] Это то же самое, что и |
Методы
as_proto
as_proto()
as_proto(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> tensorflow::dtensor::MeshProto
Возвращает сообщение протокола MeshProto.
contains_dim
contains_dim()
contains_dim(self: tensorflow.python._pywrap_dtensor_device.Mesh, dim_name: str) -> bool
Возвращает True, если сетка содержит заданное имя измерения.
coords
coords(
device_idx: int
) -> tf.Tensor
Преобразует индекс устройства в тензор координат сетки.
device_location
device_location()
device_location(self: tensorflow.python._pywrap_dtensor_device.Mesh, arg0: int) -> List[int]
device_type
device_type()
device_type(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> str
Возвращает тип устройства Mesh.
dim_size
dim_size()
dim_size(self: tensorflow.python._pywrap_dtensor_device.Mesh, dim_name: str) -> int
Возвращает размер измерения сетки.
from_device
@classmethod
from_device(
device: str
) -> 'Mesh'
Создаёт сеть из одного устройства по строке устройства.
from_proto
@classmethod
from_proto(
proto: layout_pb2.MeshProto
) -> 'Mesh'
Создаёт экземпляр сетки из входного proto.
from_string
@classmethod
from_string(
mesh_str: str
) -> 'Mesh'
global_device_ids
global_device_ids() -> np.ndarray
Возвращает глобальный список устройств в виде массива.
global_devices
global_devices()
global_devices(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> List[str]
Возвращает список глобальных спецификаций устройств, представленных в виде строк.
host_mesh
host_mesh() -> 'Mesh'
Возвращает хост-сетку.
is_remote
is_remote()
is_remote(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> bool
Возвращает True, если сетка содержит только удалённые устройства.
is_single_device
is_single_device()
is_single_device(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> bool
Возвращает True, если сетка представляет собой устройство без распределения.
local_device_ids
local_device_ids()
local_device_ids(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> Span[int]
Возвращает список локальных идентификаторов устройств.
local_device_locations
local_device_locations() -> List[Dict[str, int]]
Возвращает список локальных расположений устройств.
Расположение устройства — это словарь из имён измерений и индексов по этим измерениям.
local_devices
local_devices()
local_devices(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> Span[str]
Возвращает список локальных спецификаций устройств, представленных в виде строк.
min_global_device_id
min_global_device_id()
min_global_device_id(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> int
Возвращает минимальный глобальный идентификатор устройства.
num_local_devices
num_local_devices()
num_local_devices(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> int
Возвращает количество локальных устройств.
shape
shape()
shape(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> Список[int]
Возвращает форму сетки.
to_string
to_string()
to_string(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> строка
Возвращает строковое представление сетки.
unravel_index
unravel_index()
Возвращает словарь от идентификатора устройства до {имя_измерения: индекс_измерения}.
Например, для сетки 3x2 вернёт следующее:
{ 0: {'x': 0, 'y', 0},
1: {'x': 0, 'y', 1},
2: {'x': 1, 'y', 0},
3: {'x': 1, 'y', 1},
4: {'x': 2, 'y', 0},
5: {'x': 2, 'y', 1} }
use_xla_spmd
use_xla_spmd()
use_xla_spmd(self: tensorflow.python._pywrap_dtensor_device.Mesh) -> bool
Возвращает True, если сетка будет использовать XLA для SPMD вместо DTensor SPMD.
__contains__
__contains__()
contains(self: tensorflow.python._pywrap_dtensor_device.Mesh, dim_name: строка) -> bool
__eq__
__eq__()
eq(self: tensorflow.python._pywrap_dtensor_device.Mesh, arg0: tensorflow.python._pywrap_dtensor_device.Mesh) -> bool
__getitem__
__getitem__(
dim_name: str
) -> MeshDimension
© 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/Mesh