Text Generation
PEFT
Safetensors
Korean
lora
sft
korean
persona
cognitive-reframing
mental-health
conversational
Instructions to use thlee00/ct-nlp-sft with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- PEFT
How to use thlee00/ct-nlp-sft with PEFT:
from peft import PeftModel from transformers import AutoModelForCausalLM base_model = AutoModelForCausalLM.from_pretrained("google/gemma-4-E2B-it") model = PeftModel.from_pretrained(base_model, "thlee00/ct-nlp-sft") - Notebooks
- Google Colab
- Kaggle
CT-NLP SFT โ ๊ทน๋จ ๊ฐ์ ํ๋ฅด์๋ ๋ชจ๋ธ
Safe Sustained Disagreement ํ๋ก์ ํธ์ 2๋จ๊ณ SFT ์ด๋ํฐ. Gemma-4-E2B-it ์์ LoRA๋ฅผ ์ ์ฉํด 5๊ฐ ๊ทน๋จ ๊ฐ์ ํ๋ฅด์๋(๊ธฐ์จยท์ฌํยท๋ฒ๋ญยท์์ฌยท๊น์น )์ ๋ฐํ ์คํ์ผ๊ณผ ๋น์๋ ด ํ ๋ก ํ๋์ ์ฃผ์ ํ์ต๋๋ค.
๋ชจ๋ธ ๊ฐ์
์ผ์์ ๊ฑฑ์ ์๋๋ฆฌ์ค์ ๋ํด 5๊ฐ ํ๋ฅด์๋๊ฐ ์๋ ดํ์ง ์๊ณ ๊ฐ์์ ๊ทน๋จ ๊ด์ ์ผ๋ก ํ ๋ก ํฉ๋๋ค. ์ฌ์ฉ์๋ ์ฐธ์ฌํ์ง ์๊ณ ๊ด์ ๋ง ํ๋ฉฐ, ๊ด์ ์์ฒด๊ฐ self-distancing์ ์ ๋ฐํด ์ธ์ง ์ฌ๊ตฌ์ฑ์ ์ด๋๋ค๋ ๊ฐ์ค์ ๊ฒ์ฆํ๋ ์ฐ๊ตฌ์ฉ ๋ชจ๋ธ์ ๋๋ค.
| ํ๋ฅด์๋ | ๋ฐฉํฅ |
|---|---|
| ๊ธฐ์จ | ๊ทน๋จ์ ๊ธ์ โ ๋ฌธ์ ์์ฒด๋ฅผ ๋ฌดํจํ |
| ์ฌํ | ๊น์ ์ฌํ โ ์์ค ํ์ฅ, ํด๊ฒฐ ์์ |
| ๋ฒ๋ญ | ์ธ๋ถ ๊ท์ธ โ ๋ชจ๋ ์์ธ์ ํ์ธ/์ํฉ์ผ๋ก |
| ์์ฌ | ํ๊ตญํ โ ๋จ๊ณ์ ์ต์ ์๋๋ฆฌ์ค |
| ๊น์น | ์๊ธฐํ์ค โ ์ฒ ์ ํ 1์ธ์นญ ์๊ธฐ๋นํ |
ํ์ต ์ ๋ณด
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| Base model | google/gemma-4-E2B-it |
| LoRA r / ฮฑ | 16 / 32 |
| Dropout | 0.05 |
| Target modules | Gemma4ClippableLinear.linear (regex) |
| Epochs | 3 (best: epoch 1) |
| Optimizer | AdamW / cosine, warmup 5%, lr 2e-4 |
| Max seq len | 512 |
| ํ์ต ๋ฐ์ดํฐ | 9,756๊ฑด (utterance 8,130 + round 1,626, unsafe ๊ถค์ ์ ์ธ) |
| Eval loss (ep1) | 1.693 |
| Eval mean token accuracy | 61.2% |
| ํ๋ฅด์๋ special token | <persona:๊ธฐ์จ> โฆ <persona:๊น์น > (5์ข
, mean-init) |
Framework versions
- PEFT 0.19.1
- TRL 1.3.0
- Transformers 5.8.0.dev0
- PyTorch 2.7.0+cu128
- Datasets 4.8.5
์ฌ์ฉ๋ฒ
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
BASE = "google/gemma-4-E2B-it"
ADAPTER = "thlee00/ct-nlp-sft"
tok = AutoTokenizer.from_pretrained(ADAPTER)
model = AutoModelForCausalLM.from_pretrained(BASE, torch_dtype=torch.bfloat16, device_map="auto")
model.resize_token_embeddings(len(tok), mean_resizing=False)
model = PeftModel.from_pretrained(model, ADAPTER)
model.eval()
scenario = "์ค๋ ๋ฐํ๊ฐ ๋งํ์ด. ํ์ฅ๋์ด ์๋ฌด ๋ง๋ ์ ํ์
จ๋๋ฐ ๊ทธ๊ฒ ๋ ๋ฌด์์."
persona = "์์ฌ" # ๊ธฐ์จ / ์ฌํ / ๋ฒ๋ญ / ์์ฌ / ๊น์น
prompt = (
f"๊ฑฑ์ ์๋๋ฆฌ์ค: {scenario}\n\n"
f"<persona:{persona}> {persona}\n"
f"์ด ์๋๋ฆฌ์ค์ ๋ํด {persona}์ ๊ทน๋จ์ ๊ด์ ์ผ๋ก ๋ฐํํ์ธ์."
)
text = tok.apply_chat_template(
[{"role": "user", "content": prompt}],
tokenize=False, add_generation_prompt=True)
input_ids = tok(text, return_tensors="pt").input_ids.to(model.device)
with torch.no_grad():
out = model.generate(input_ids, max_new_tokens=200, do_sample=True, temperature=0.8, top_p=0.9)
print(tok.decode(out[0][input_ids.shape[1]:], skip_special_tokens=True))
์ฃผ์์ฌํญ
- ์ด ๋ชจ๋ธ์ ์ฐ๊ตฌ ๋ชฉ์ ์ ์ฉ์ ๋๋ค.
- ๊ทน๋จ ๊ฐ์ ํ๋ฅด์๋๋ ์น๋ฃ์ ๊ณผ์ฅ(therapeutic exaggeration)์ ์๋ํ๋ฉฐ,
๋ฌด๋ง๊ฐยท์ํด ๋ฐฉํฅ์ผ๋ก์ ์์ค์ปฌ๋ ์ด์
์ ๋ณ๋ ์ธ์ดํ๊ฐ๋(
Safeguardํด๋์ค)๋ก ์ฐจ๋จํฉ๋๋ค. - ์์ ๋๋ ์๊ธฐ ๊ฐ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ์ง ๋ง์ญ์์ค.
ํ๋ก์ ํธ
- ์ฝ๋: CT-NLP-project
- Downloads last month
- 4