Using PEFT at Hugging Face
🤗 Parameter-Efficient Fine-Tuning (PEFT) is a library for efficiently adapting pre-trained language models to various downstream applications without fine-tuning all the model’s parameters.
Exploring PEFT on the Hub
You can find PEFT models by filtering at the left of the models page.
Installation
To get started, you can check out the Quick Tour in the PEFT docs. To install, follow the PEFT installation guide. You can also use the following one-line install through pip:
$ pip install peft
Using existing models
All PEFT models can be loaded from the Hub. To use a PEFT model you also need to load the base model that was fine-tuned, as shown below. Every fine-tuned model has the base model in its model card.
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel, PeftConfig
base_model = "mistralai/Mistral-7B-v0.1"
adapter_model = "dfurman/Mistral-7B-Instruct-v0.2"
model = AutoModelForCausalLM.from_pretrained(base_model)
model = PeftModel.from_pretrained(model, adapter_model)
tokenizer = AutoTokenizer.from_pretrained(base_model)
model = model.to("cuda")
model.eval()
Once loaded, you can pass your inputs to the tokenizer to prepare them, and call model.generate()
in regular transformers
fashion.
inputs = tokenizer("Tell me the recipe for chocolate chip cookie", return_tensors="pt")
with torch.no_grad():
outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=10)
print(tokenizer.batch_decode(outputs.detach().cpu().numpy(), skip_special_tokens=True)[0])
It outputs the following:
Tell me the recipe for chocolate chip cookie dough. 1. Preheat oven to 375 degrees F (190 degrees C). 2. In a large bowl, cream together 1/2 cup (1 stick) of butter or margarine, 1/2 cup granulated sugar, and 1/2 cup packed brown sugar. 3. Beat in 1 egg and 1 teaspoon vanilla extract. 4. Mix in 1 1/4 cups all-purpose flour. 5. Stir in 1/2 teaspoon baking soda and 1/2 teaspoon salt. 6. Fold in 3/4 cup semisweet chocolate chips. 7. Drop by
If you want to load a specific PEFT model, you can click Use in PEFT
in the model card and you will be given a working snippet!
Additional resources
- PEFT repository
- PEFT docs
- PEFT models