exporting model after lora
This commit is contained in:
38
easydistill/mmkd/exporting.py
Normal file
38
easydistill/mmkd/exporting.py
Normal file
@@ -0,0 +1,38 @@
|
||||
import torch
|
||||
from peft import PeftModel
|
||||
from transformers import Qwen2_5_VLForConditionalGeneration, AutoProcessor
|
||||
|
||||
# --- 1. Define your model paths ---
|
||||
base_model_path = "Qwen/Qwen2.5-VL-3B-Instruct" # The original student model
|
||||
adapter_path = "./result/" # The folder where your LoRA adapter was saved
|
||||
merged_model_path = "./qwen-3b-distilled-merged/" # Where to save the new, merged model
|
||||
|
||||
print("Loading base model...")
|
||||
# --- 2. Load the base model ---
|
||||
# Loading on the CPU
|
||||
base_model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
|
||||
base_model_path,
|
||||
torch_dtype=torch.bfloat16,
|
||||
trust_remote_code=True,
|
||||
device_map="cpu",
|
||||
)
|
||||
|
||||
print("Loading LoRA adapter...")
|
||||
# --- 3. Load the LoRA adapter onto the base model ---
|
||||
model = PeftModel.from_pretrained(base_model, adapter_path)
|
||||
|
||||
print("Merging adapter into the base model...")
|
||||
# --- 4. Merge the weights ---
|
||||
# Combines the LoRA weights into the base model's layers.
|
||||
model = model.merge_and_unload()
|
||||
|
||||
print(f"Saving merged model to {merged_model_path}...")
|
||||
# --- 5. Save the new, standalone model ---
|
||||
# The saved model is a standard Hugging Face model.
|
||||
model.save_pretrained(merged_model_path)
|
||||
|
||||
# --- 6. Save the processor for easy use later ---
|
||||
processor = AutoProcessor.from_pretrained(base_model_path, trust_remote_code=True)
|
||||
processor.save_pretrained(merged_model_path)
|
||||
|
||||
print("Merge complete!")
|
Reference in New Issue
Block a user