@data.setter
# pylint: disable=C2801
def data(self, value):
requires_grad = getattr(self, "requires_grad", None)
if isinstance(value, DTensorBase):
local_value = value.to_local()
if hasattr(value, "device_mesh"):
self._device_mesh = value.device_mesh
if hasattr(value, "placements"):
self._placements = value.placements
if hasattr(value, "layout"):
self._layout = value.layout
else:
local_value = value
data_descriptor = _tensor_data_descriptor()
with getattr(torch, "_C").DisableTorchFunctionSubclass():
data_descriptor.__set__(self, local_value)
data_descriptor.__set__(self._local_tensor, local_value)
if requires_grad is not None and hasattr(self, "requires_grad_"):
self.requires_grad_(requires_grad)
def numpy(self, *args, **kwargs):
"""Return the local shard as a NumPy array.