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