fix: Reset model after saving merged model (#321)
* fix: Reset model after saving merged model
The adapter is lost and writes 0-byte adapters if you save an adapter after saving the merged model.
* Revert "Revert "Revert "fix: disable LoRA export for now" (#308)" (#319)"
This reverts commit 216c089974.
* Add comment as to why resetting model is needed
This commit is contained in:
+10
-7
@@ -145,18 +145,13 @@ def obtain_merge_strategy(settings: Settings, model: Model) -> str | None:
|
||||
value="merge",
|
||||
),
|
||||
Choice(
|
||||
title="Cancel",
|
||||
value="cancel",
|
||||
title="Save LoRA adapter only (can be merged later)",
|
||||
value="adapter",
|
||||
),
|
||||
],
|
||||
)
|
||||
|
||||
if strategy == "cancel":
|
||||
return None
|
||||
|
||||
return strategy
|
||||
else:
|
||||
return "merge"
|
||||
|
||||
|
||||
def run():
|
||||
@@ -754,6 +749,10 @@ def run():
|
||||
print("* Parameters:")
|
||||
for name, value in get_trial_parameters(trial).items():
|
||||
print(f" * {name} = [bold]{value}[/]")
|
||||
|
||||
# Per https://github.com/huggingface/peft/issues/868#issuecomment-1820642893 once a LoRA is merged it's
|
||||
# expected to be empty. Provide a utility function to restore the previous LoRA-ified state.
|
||||
def reset_trial_model() -> None:
|
||||
print("* Resetting model...")
|
||||
model.reset_model()
|
||||
print("* Abliterating...")
|
||||
@@ -766,6 +765,8 @@ def run():
|
||||
},
|
||||
)
|
||||
|
||||
reset_trial_model()
|
||||
|
||||
while True:
|
||||
print()
|
||||
action = prompt_select(
|
||||
@@ -812,6 +813,7 @@ def run():
|
||||
del merged_model
|
||||
empty_cache()
|
||||
model.tokenizer.save_pretrained(save_directory)
|
||||
reset_trial_model()
|
||||
|
||||
print(f"Model saved to [bold]{save_directory}[/].")
|
||||
|
||||
@@ -921,6 +923,7 @@ def run():
|
||||
private=private,
|
||||
token=token,
|
||||
)
|
||||
reset_trial_model()
|
||||
|
||||
if is_hf_path(settings.model):
|
||||
card = ModelCard.load(settings.model)
|
||||
|
||||
Reference in New Issue
Block a user