Spaces:
Running
Running
Update libra/model/builder.py
Browse files- libra/model/builder.py +7 -14
libra/model/builder.py
CHANGED
@@ -24,20 +24,13 @@ from libra.constants import DEFAULT_IMAGE_PATCH_TOKEN, DEFAULT_IM_START_TOKEN, D
|
|
24 |
|
25 |
|
26 |
def load_pretrained_model(model_path, model_base, model_name, device="cpu"):
|
27 |
-
|
28 |
-
load_in_4bit=True,
|
29 |
-
bnb_4bit_compute_dtype=torch.float16,
|
30 |
-
bnb_4bit_use_double_quant=True,
|
31 |
-
bnb_4bit_quant_type='nf4'
|
32 |
-
)
|
33 |
device_map = {"": device}
|
34 |
kwargs = {
|
35 |
"device_map": device_map,
|
36 |
-
"torch_dtype": torch.
|
37 |
}
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
if 'libra' in model_name.lower():
|
42 |
# Load Libra model
|
43 |
if 'lora' in model_name.lower() and model_base is None:
|
@@ -83,24 +76,24 @@ def load_pretrained_model(model_path, model_base, model_name, device="cpu"):
|
|
83 |
model = LibraLlamaForCausalLM.from_pretrained(model_base, low_cpu_mem_usage=True, config=cfg_pretrained, **kwargs)
|
84 |
|
85 |
mm_projector_weights = torch.load(os.path.join(model_path, 'mm_projector.bin'), map_location='cpu')
|
86 |
-
mm_projector_weights = {k: v.to(torch.
|
87 |
model.load_state_dict(mm_projector_weights, strict=False)
|
88 |
else:
|
89 |
tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False)
|
90 |
-
model = LibraLlamaForCausalLM.from_pretrained(model_path,
|
91 |
else:
|
92 |
# Load language model
|
93 |
if model_base is not None:
|
94 |
# PEFT model
|
95 |
from peft import PeftModel
|
96 |
tokenizer = AutoTokenizer.from_pretrained(model_base, use_fast=False)
|
97 |
-
model = AutoModelForCausalLM.from_pretrained(model_base, quantization_config=quantization_config, torch_dtype=torch.
|
98 |
print(f"Loading LoRA weights from {model_path}")
|
99 |
model = PeftModel.from_pretrained(model, model_path)
|
100 |
print(f"Merging weights")
|
101 |
model = model.merge_and_unload()
|
102 |
print('Convert to FP16...')
|
103 |
-
model.to(torch.
|
104 |
else:
|
105 |
use_fast = False
|
106 |
tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False)
|
|
|
24 |
|
25 |
|
26 |
def load_pretrained_model(model_path, model_base, model_name, device="cpu"):
|
27 |
+
|
|
|
|
|
|
|
|
|
|
|
28 |
device_map = {"": device}
|
29 |
kwargs = {
|
30 |
"device_map": device_map,
|
31 |
+
"torch_dtype": torch.bfloat16
|
32 |
}
|
33 |
+
|
|
|
|
|
34 |
if 'libra' in model_name.lower():
|
35 |
# Load Libra model
|
36 |
if 'lora' in model_name.lower() and model_base is None:
|
|
|
76 |
model = LibraLlamaForCausalLM.from_pretrained(model_base, low_cpu_mem_usage=True, config=cfg_pretrained, **kwargs)
|
77 |
|
78 |
mm_projector_weights = torch.load(os.path.join(model_path, 'mm_projector.bin'), map_location='cpu')
|
79 |
+
mm_projector_weights = {k: v.to(torch.bfloat16) for k, v in mm_projector_weights.items()}
|
80 |
model.load_state_dict(mm_projector_weights, strict=False)
|
81 |
else:
|
82 |
tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False)
|
83 |
+
model = LibraLlamaForCausalLM.from_pretrained(model_path, low_cpu_mem_usage=True, **kwargs)
|
84 |
else:
|
85 |
# Load language model
|
86 |
if model_base is not None:
|
87 |
# PEFT model
|
88 |
from peft import PeftModel
|
89 |
tokenizer = AutoTokenizer.from_pretrained(model_base, use_fast=False)
|
90 |
+
model = AutoModelForCausalLM.from_pretrained(model_base, quantization_config=quantization_config, torch_dtype=torch.bfloat16, low_cpu_mem_usage=True, device_map="auto")
|
91 |
print(f"Loading LoRA weights from {model_path}")
|
92 |
model = PeftModel.from_pretrained(model, model_path)
|
93 |
print(f"Merging weights")
|
94 |
model = model.merge_and_unload()
|
95 |
print('Convert to FP16...')
|
96 |
+
model.to(torch.bfloat16)
|
97 |
else:
|
98 |
use_fast = False
|
99 |
tokenizer = AutoTokenizer.from_pretrained(model_path, use_fast=False)
|