Hugging Face PEFT
PEFT(파라미터 효율적 미세조정) 방법인 LoRA를 사용하여 모델을 훈련하려면, 기본 모델과 PEFT 구성을 get_peft_model로 래핑(wrapping)하여 준비합니다. 예를 들어, bigscience/mt0-large 모델의 경우, 전체 매개변수의 단 0.19%만 훈련하게 됩니다.
from transformers import AutoModelForSeq2SeqLM
from peft import get_peft_config, get_peft_model, LoraConfig, TaskType
model_name_or_path = "bigscience/mt0-large"
tokenizer_name_or_path = "bigscience/mt0-large"
peft_config = LoraConfig(
task_type=TaskType.SEQ_2_SEQ_LM, inference_mode=False, r=8, lora_alpha=32, lora_dropout=0.1
)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name_or_path)
model = get_peft_model(model, peft_config)
model.print_trainable_parameters()trainable params: 2,359,296 || all params: 1,231,940,608 || trainable%: 0.1915
LoRA 미세조정된 모델을 적재해서 활용(inference)하기
from peft import AutoPeftModelForCausalLM
from transformers import AutoTokenizer
import torch
model = AutoPeftModelForCausalLM.from_pretrained("ybelkada/opt-350m-lora").to("cuda")
tokenizer = AutoTokenizer.from_pretrained("facebook/opt-350m")
model.eval()
inputs = tokenizer("Preheat the oven to 350 degrees and place the cookie dough", return_tensors="pt")
outputs = model.generate(input_ids=inputs["input_ids"].to("cuda"), max_new_tokens=50)
print(tokenizer.batch_decode(outputs, skip_special_tokens=True)[0])Preheat the oven to 350 degrees and place the cookie dough in the center of the oven.
In a large bowl, combine the flour, baking powder, baking soda, salt, and cinnamon.
In a separate bowl, combine the egg yolks, sugar, and vanilla.
Loading...