Model size doubles after .merge_and_unload() and .save_pretrained()
My System Info
peft==0.4.0 accelerate==0.18.0 transformers==4.28.0 py310
Reproduction
After training, I merge the peft weights with base model using:
model_ft = PeftModel.from_pretrained(
AutoModelForCausalLM.from_pretrained(
base_model_path,
return_dict=True,
torch_dtype='auto',
use_cache=True,
),
peft_path,
torch_dtype=torch.float16
).merge_and_unload()Then for inference as standalone model, I save to disk using
model.save_pretrained(destination_path)
tokenizer.save_pretrained(destination_path)And later load it back again whenever needed using
inference_model = AutoModelForCausalLM.from_pretrained(
model_path,
return_dict=True,
torch_dtype=torch.float16,
use_cache=True,
device_map="auto"
)Expected behavior
I am training Star Coder 7B, which initially has a size of around 15GB. I began the training with specific LoRa Rank and alpha parameters. To experiment with different combinations of these parameters, I stopped the training process few times, performed a "merge_and_unload" operation. Afterward, I restart the training with a new combination of LoRa and alpha values on top of latest stored model. This approach worked well up to approximately 500-600 steps. However, after that point, I noticed an issue: when I saved my model after merging, its disk size unexpectedly ballooned to 30GB, even though my "adapter_bin" file is only around 400MB. Not sure why the model size increased?
Source: bigcode-project/starcoder