|
import argparse |
|
import os |
|
import torch |
|
from safetensors.torch import load_file |
|
|
|
|
|
def main(file): |
|
print(f"loading: {file}") |
|
if os.path.splitext(file)[1] == ".safetensors": |
|
sd = load_file(file) |
|
else: |
|
sd = torch.load(file, map_location="cpu") |
|
|
|
values = [] |
|
|
|
keys = list(sd.keys()) |
|
for key in keys: |
|
if "lora_up" in key or "lora_down" in key: |
|
values.append((key, sd[key])) |
|
print(f"number of LoRA modules: {len(values)}") |
|
|
|
if args.show_all_keys: |
|
for key in [k for k in keys if k not in values]: |
|
values.append((key, sd[key])) |
|
print(f"number of all modules: {len(values)}") |
|
|
|
for key, value in values: |
|
value = value.to(torch.float32) |
|
print(f"{key},{str(tuple(value.size())).replace(', ', '-')},{torch.mean(torch.abs(value))},{torch.min(torch.abs(value))}") |
|
|
|
|
|
def setup_parser() -> argparse.ArgumentParser: |
|
parser = argparse.ArgumentParser() |
|
parser.add_argument("file", type=str, help="model file to check / 重みを確認するモデルファイル") |
|
parser.add_argument("-s", "--show_all_keys", action="store_true", help="show all keys / 全てのキーを表示する") |
|
|
|
return parser |
|
|
|
|
|
if __name__ == "__main__": |
|
parser = setup_parser() |
|
|
|
args = parser.parse_args() |
|
|
|
main(args.file) |
|
|