Skip to content

Commit 923cbe7

Browse files
committed
feat: add header format check and key __metadata__ ignored
1 parent af99ce3 commit 923cbe7

1 file changed

Lines changed: 19 additions & 13 deletions

File tree

checkpoint_engine/ps.py

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import zmq
2020
from loguru import logger
2121
from pydantic import BaseModel, PlainSerializer, PlainValidator, WithJsonSchema
22-
from safetensors.torch import _getdtype, safe_open
22+
from safetensors.torch import _TYPES, _getdtype, safe_open
2323
from torch.multiprocessing.reductions import reduce_tensor
2424

2525
from checkpoint_engine.device_utils import DeviceManager, get_ip, npu_generate_uuid
@@ -499,22 +499,28 @@ def _inplace_pin_memory(file_path: str) -> MemoryBuffer:
499499
time.sleep(3)
500500
header_tensor = t[flag_size:start_pos]
501501
header = json.loads(header_tensor.numpy().tobytes())
502+
if "__metadata__" in header:
503+
header.pop("__metadata__")
502504

503505
metas: list[ParameterMeta] = []
504506
offset = 0
505-
for name, meta in sorted(header.items(), key=lambda x: x[1]["data_offsets"]):
506-
start, end = meta["data_offsets"]
507-
# safetensors format ensures offsets are aligned
508-
assert offset == start, f"offset {offset} should be equal to start {start}"
509-
metas.append(
510-
ParameterMeta(
511-
name=name,
512-
dtype=_getdtype(meta["dtype"]),
513-
shape=torch.Size(meta["shape"]),
514-
manually_aligned=False,
507+
try:
508+
for name, meta in sorted(header.items(), key=lambda x: x[1]["data_offsets"]):
509+
start, end = meta["data_offsets"]
510+
# safetensors format ensures offsets are aligned
511+
assert offset == start, f"offset {offset} should be equal to start {start}"
512+
metas.append(
513+
ParameterMeta(
514+
name=name,
515+
dtype=_getdtype(meta["dtype"]),
516+
shape=torch.Size(meta["shape"]),
517+
manually_aligned=False,
518+
)
515519
)
516-
)
517-
offset = end
520+
offset = end
521+
except Exception as e:
522+
logger.error(f"fail to parse safetensors header from {file_path}: {e}")
523+
raise
518524

519525
buffer = t[start_pos:]
520526
assert offset == buffer.nbytes, (

0 commit comments

Comments
 (0)