MCPcopy Create free account
hub / github.com/MoonshotAI/checkpoint-engine / _fast_np_load

Function _fast_np_load

checkpoint_engine/pin_memory.py:47–99  ·  view source on GitHub ↗

load *.np file and return memmap and related tensor meta

(fn: str)

Source from the content-addressed store, hash-verified

45
46 # deprecated, will be removed in the future
47 def _fast_np_load(fn: str) -> dict[str, tuple["FileMeta", torch.Tensor]]:
48 """load *.np file and return memmap and related tensor meta"""
49
50 def parse_npy_header(fin: BinaryIO) -> dict[str, Any]:
51 start = fin.tell()
52 major, minor = np.lib.format.read_magic(fin)
53 if major == 1 and minor == 0:
54 read_header_fn = np.lib.format.read_array_header_1_0
55 elif major == 2 and minor == 0:
56 read_header_fn = np.lib.format.read_array_header_2_0
57 else:
58 raise ValueError(
59 f"unknown version {major}.{minor} when parsing npy header from {fn}"
60 )
61 shape, is_fortran, dtype = read_header_fn(fin)
62 return {
63 "shape": shape,
64 "is_fortran": is_fortran,
65 "dtype": dtype,
66 "header_length": fin.tell() - start,
67 }
68
69 meta_fn = fn + ".meta"
70 with open(meta_fn, "rb") as fin:
71 meta_lst = pickle.load(fin)
72
73 tensors = []
74 offset = 0
75 with open(fn, "rb") as fin:
76 fin.seek(0, os.SEEK_END)
77 filesize = fin.tell()
78 fin.seek(0)
79 while fin.tell() < filesize:
80 tensor_meta = parse_npy_header(fin)
81 tensor = np.memmap(
82 fn,
83 dtype=tensor_meta["dtype"],
84 mode="c",
85 offset=offset + tensor_meta["header_length"],
86 shape=tensor_meta["shape"],
87 )
88 offset += tensor_meta["header_length"] + tensor.nbytes
89 fin.seek(offset)
90 tensors.append(tensor)
91
92 assert len(meta_lst) == len(tensors)
93 ret = {}
94 for meta, tensor in zip(meta_lst, tensors):
95 if meta["type"] == torch.Tensor:
96 tensor = torch.from_numpy(tensor)
97 tensor = tensor.view(dtype=meta["dtype"]).view(*meta["shape"])
98 ret[meta["key"]] = (meta, tensor)
99 return ret
100
101 tp_rank = 0
102 if file_path.endswith(".npy"):

Callers 1

_load_checkpoint_fileFunction · 0.85

Calls 1

parse_npy_headerFunction · 0.85

Tested by

no test coverage detected