maywell/korean_textbooks
Viewer โข Updated โข 4.42M โข 1.38k โข 123
How to use Eunma/korean-model with PEFT:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base_model = AutoModelForCausalLM.from_pretrained("unsloth/qwen2.5-1.5b-instruct-unsloth-bnb-4bit")
model = PeftModel.from_pretrained(base_model, "Eunma/korean-model")Qwen/Qwen2.5-1.5B-Instruct ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก maywell/korean_textbooks ๋ฐ์ดํฐ์ , ๊ทธ๋ฆฌ๊ณ LoRA(์ ๋ญํฌ ์ ์) ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํ์ธํ๋ํ ์ด๋ํฐ(LoRA ๊ฐ์ค์น) ์ ๋๋ค. ๋ฒ ์ด์ค ๊ฐ์ค์น๋ ํฌํจ๋์ง ์์ผ๋ฉฐ, ๋ฒ ์ด์ค + ์ด๋ํฐ๋ก ๋ก๋ํ์ฌ ์ฌ์ฉํฉ๋๋ค.
์ฐธ๊ณ : ํ์ต์๋ Unsloth/TRL/PEFT ์คํ์ ์ฌ์ฉํ๊ณ , ์ถ๋ก ์ HF Transformers + PEFT๋ง์ผ๋ก ๊ฐ๋ฅํฉ๋๋ค.
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch
BASE = "Qwen/Qwen2.5-1.5B-Instruct"
ADAPTER = "Eunma/korean-model"
tokenizer = AutoTokenizer.from_pretrained(BASE)
base = AutoModelForCausalLM.from_pretrained(
BASE,
load_in_4bit=True,
device_map="auto",
trust_remote_code=True
)
model = PeftModel.from_pretrained(base, ADAPTER)
model.eval()
messages = [
{ "role": "system", "content": "ํ๊ตญ์ด๋ก ์ ํํ๊ณ ์น์ ํ๊ฒ ์ค๋ช
ํ๋ ๊ต์ก ๋์ฐ๋ฏธ์
๋๋ค." },
{ "role": "user", "content": "2์ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋ํด ๊ฐ๋จํ ์ค๋ช
ํด์ค." },
]
prompt = tokenizer.apply_chat_template(messages, add_generation_prompt=True, tokenize=False)
enc = tokenizer(prompt, return_tensors="pt").to(model.device)
if "attention_mask" not in enc:
enc["attention_mask"] = torch.ones_like(enc["input_ids"])
with torch.inference_mode():
out = model.generate(
**enc,
max_new_tokens=256,
do_sample=True, temperature=0.7, top_p=0.9,
pad_token_id=tokenizer.eos_token_id,
use_cache=True
)
print(tokenizer.decode(out[0], skip_special_tokens=True))
์ด ๋ชจ๋ธ์ ๋ฒ ์ด์ค ๋ชจ๋ธ์ธ Qwen2.5-1.5B์ ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค.