| import json |
| import os |
|
|
| from safetensors import safe_open |
|
|
|
|
| def get_tensor(matrix_name, base_dir, index_json="model.safetensors.index.json"): |
| fp = os.path.join(base_dir, index_json) |
| with open(fp, "r") as fh: |
| index = json.load(fh) |
| try: |
| st_file = index["weight_map"][matrix_name] |
| mp = os.path.join(base_dir, st_file) |
| with safe_open(mp, framework="pt", device="cpu") as f: |
| print(f.keys()) |
| return f.get_tensor(matrix_name) |
| except Exception: |
| raise ValueError(f"Invalid key {matrix_name}") |
|
|
|
|
| def get_tensor2(matrix_name, st_file_fp): |
| try: |
| with safe_open(st_file_fp, framework="pt", device="cpu") as f: |
| return f.get_tensor(matrix_name) |
| except Exception: |
| raise ValueError("Fail to retrieve tensor keys") |
|
|
|
|
| def get_tensor_keys(base_dir, st_file): |
| try: |
| mp = os.path.join(base_dir, st_file) |
| with safe_open(mp, framework="pt", device="cpu") as f: |
| return f.keys() |
| except Exception: |
| raise ValueError("Fail to retrieve tensor keys") |
|
|
|
|
| def get_tensor_dual(matrix1, matrix2, base_dir, st_file): |
| try: |
| mp = os.path.join(base_dir, st_file) |
| with safe_open(mp, framework="pt", device="cpu") as f: |
| return f.get_tensor(matrix1), f.get_tensor(matrix2) |
| except Exception: |
| raise ValueError(f"Invalid key {matrix1}") |
|
|