Skip to content

Commit 78094fc

Browse files
committed
convert : use writeable buffer for remote lazy tensors
1 parent b584e39 commit 78094fc

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

convert_hf_to_gguf.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5416,7 +5416,8 @@ def from_remote_tensor(cls, remote_tensor: gguf.utility.RemoteTensor):
54165416
dtype = cls._dtype_str_map[remote_tensor.dtype]
54175417
shape = remote_tensor.shape
54185418
meta = cls.meta_with_dtype_and_shape(dtype, shape)
5419-
lazy = cls(meta=meta, args=(remote_tensor,), func=lambda r: torch.frombuffer(r.data(), dtype=dtype).reshape(shape))
5419+
func = lambda r: torch.frombuffer(r.data(), dtype=dtype).reshape(shape)
5420+
lazy = cls(meta=meta, args=(remote_tensor,), func=func)
54205421
return cast(torch.Tensor, lazy)
54215422

54225423
@classmethod

gguf-py/gguf/utility.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,9 +81,10 @@ class RemoteTensor:
8181
size: int
8282
url: str
8383

84-
def data(self) -> bytes:
84+
def data(self) -> bytearray:
8585
# TODO: handle request errors (maybe with limited retries?)
86-
data = SafetensorRemote.get_data_by_range(url=self.url, start=self.offset_start, size=self.size)
86+
# NOTE: using a bytearray, otherwise PyTorch complains the buffer is not writeable
87+
data = bytearray(SafetensorRemote.get_data_by_range(url=self.url, start=self.offset_start, size=self.size))
8788
return data
8889

8990

0 commit comments

Comments
 (0)