-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.py
More file actions
24 lines (23 loc) · 1.05 KB
/
Copy pathutils.py
File metadata and controls
24 lines (23 loc) · 1.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from modeling_gemma import PaliGemmaForConditionalGeneration, PaliGemmaConfig
from transformers import AutoTokenizer
import json
import glob
from safetensors import safe_open
from typing import Tuple
import os
def load_hf_model(model_path: str, device: str) -> Tuple[PaliGemmaForConditionalGeneration, AutoTokenizer]:
tokenizer = AutoTokenizer.from_pretrained(model_path, padding_side="right")
assert tokenizer.padding_side == "right"
safetensors_files = glob.glob(os.path.join(model_path, "*.safetensors"))
tensors = {}
for safetensors_file in safetensors_files:
with safe_open(safetensors_file, framework="pt", device="cpu") as f:
for key in f.keys():
tensors[key] = f.get_tensor(key)
with open(os.path.join(model_path, "config.json"), "r") as f:
model_config_file = json.load(f)
config = PaliGemmaConfig(**model_config_file)
model = PaliGemmaForConditionalGeneration(config).to(device)
model.load_state_dict(tensors, strict=False)
model.tie_weights()
return (model, tokenizer)