Advisor / fine_tuning /scripts /merge_lora.py
ps1811's picture
Fine-tuning files added
796e424
Raw
History Blame Contribute Delete
1.21 kB
from __future__ import annotations
import argparse
from pathlib import Path
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--model_id", "--base_model", dest="model_id", required=True)
parser.add_argument("--adapter_dir", "--lora_path", dest="adapter_dir", type=Path, required=True)
parser.add_argument("--output_dir", type=Path, required=True)
args = parser.parse_args()
import torch
from peft import PeftModel
from transformers import AutoModelForCausalLM, AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained(args.model_id, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
args.model_id,
torch_dtype=torch.bfloat16,
device_map="auto",
trust_remote_code=True,
)
model = PeftModel.from_pretrained(model, str(args.adapter_dir))
merged = model.merge_and_unload()
args.output_dir.mkdir(parents=True, exist_ok=True)
merged.save_pretrained(str(args.output_dir), safe_serialization=True)
tokenizer.save_pretrained(str(args.output_dir))
print(f"Saved merged model to {args.output_dir}")
return 0
if __name__ == "__main__":
raise SystemExit(main())