Don't reload model for the merge step;

This commit is contained in:
extio-de
2025-02-08 11:25:12 +01:00
parent a0e9a5a33a
commit f253fde344
3 changed files with 39 additions and 40 deletions

View File

@@ -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

View File

@@ -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:

View File

@@ -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,