Don't reload model for the merge step;
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
import configparser
|
||||
import torch
|
||||
|
||||
from peft import PeftModel
|
||||
from sympy.printing import str
|
||||
|
||||
class Context:
|
||||
model: PeftModel
|
||||
|
||||
accel: bool
|
||||
device: str
|
||||
purgeTargetDirectories: bool
|
||||
|
||||
@@ -7,15 +7,17 @@ class Merger:
|
||||
def mergeAndStore(self, context: Context):
|
||||
if not context.mergeFull:
|
||||
return
|
||||
|
||||
if not context.model:
|
||||
if not context.storeAdapter:
|
||||
raise Exception("Configuration problem: mergeFull requires storeAdapter")
|
||||
|
||||
print("Reloading model")
|
||||
print("Loading model")
|
||||
baseModel = ModelLoader().load(context.locBaseModel, False, True, context)
|
||||
peftModel = PeftModel.from_pretrained(baseModel, context.locAdapter)
|
||||
context.model = PeftModel.from_pretrained(baseModel, context.locAdapter)
|
||||
|
||||
print("Merging")
|
||||
mergedModel = peftModel.merge_and_unload()
|
||||
mergedModel = context.model.merge_and_unload()
|
||||
|
||||
print("Dequantize")
|
||||
try:
|
||||
|
||||
10
Trainer.py
10
Trainer.py
@@ -16,7 +16,8 @@ class Trainer:
|
||||
|
||||
baseModel = ModelLoader().load(context.locBaseModel, False, True, context)
|
||||
sftTrainer = self.__createTrainer(baseModel, context)
|
||||
try:
|
||||
context.model = sftTrainer.model
|
||||
|
||||
vInplace = context.validate and context.vInplace
|
||||
validator = None
|
||||
if vInplace:
|
||||
@@ -46,13 +47,6 @@ class Trainer:
|
||||
if context.storeAdapter:
|
||||
self.__storeAdapter(sftTrainer, context)
|
||||
|
||||
finally:
|
||||
del sftTrainer
|
||||
del baseModel
|
||||
gc.collect()
|
||||
if context.accel:
|
||||
torch.cuda.empty_cache()
|
||||
|
||||
def __createTrainer(self, baseModel, context: Context):
|
||||
tokenizer = AutoTokenizer.from_pretrained(
|
||||
context.locBaseModel,
|
||||
|
||||
Reference in New Issue
Block a user