| import torch
|
| from transformers import AutoModelForCausalLM, AutoTokenizer
|
| from peft import PeftModel
|
| import os
|
|
|
| BASE_MODEL_NAME = "TinyLlama/TinyLlama-1.1B-Chat-v1.0"
|
|
|
| ADAPTER_CHECKPOINT_PATH = "./model_output/phi2_finetuned_logs/checkpoint-575"
|
|
|
|
|
|
|
| MERGED_MODEL_PATH = "./updated_logger"
|
|
|
| print(f"loading base model from: {BASE_MODEL_NAME}")
|
|
|
| try:
|
| base_model = AutoModelForCausalLM.from_pretrained(
|
| BASE_MODEL_NAME,
|
| low_cpu_mem_usage=True,
|
| return_dict=True,
|
| torch_dtype = torch.float16,
|
| trust_remote_code=True,
|
| device_map="auto"
|
| )
|
| except Exception as e:
|
| print(f"error loading model: {e}")
|
| exit()
|
|
|
| tokenizer = AutoTokenizer.from_pretrained(
|
| BASE_MODEL_NAME,
|
| trust_remote_code=True
|
| )
|
| if tokenizer.pad_token is None:
|
| tokenizer.pad_token = tokenizer.eos_token
|
| tokenizer.padding_side = "left"
|
|
|
| try:
|
| model = PeftModel.from_pretrained(base_model, ADAPTER_CHECKPOINT_PATH)
|
| except Exception as e:
|
| print(f"error loading the adapter checkpoint")
|
| print("ensure the adapter checkpoint is correct and retry again")
|
|
|
| merged_model = model.merge_and_unload()
|
| print("adapters merged successfully!!")
|
|
|
| print("saving the merged model...")
|
|
|
| os.makedirs(MERGED_MODEL_PATH, exist_ok=True)
|
| merged_model.save_pretrained(MERGED_MODEL_PATH)
|
| tokenizer.save_pretrained(MERGED_MODEL_PATH)
|
|
|
| print(f"model merged and saved to {MERGED_MODEL_PATH}") |