|
19 | 19 | import zmq |
20 | 20 | from loguru import logger |
21 | 21 | from pydantic import BaseModel, PlainSerializer, PlainValidator, WithJsonSchema |
22 | | -from safetensors.torch import _getdtype, safe_open |
| 22 | +from safetensors.torch import _TYPES, _getdtype, safe_open |
23 | 23 | from torch.multiprocessing.reductions import reduce_tensor |
24 | 24 |
|
25 | 25 | from checkpoint_engine.device_utils import DeviceManager, get_ip, npu_generate_uuid |
@@ -499,22 +499,28 @@ def _inplace_pin_memory(file_path: str) -> MemoryBuffer: |
499 | 499 | time.sleep(3) |
500 | 500 | header_tensor = t[flag_size:start_pos] |
501 | 501 | header = json.loads(header_tensor.numpy().tobytes()) |
| 502 | + if "__metadata__" in header: |
| 503 | + header.pop("__metadata__") |
502 | 504 |
|
503 | 505 | metas: list[ParameterMeta] = [] |
504 | 506 | 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 | + ) |
515 | 519 | ) |
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 |
518 | 524 |
|
519 | 525 | buffer = t[start_pos:] |
520 | 526 | assert offset == buffer.nbytes, ( |
|
0 commit comments