π§ Doran-i (CBT Counseling Specialist)
π Model Details
Model Description
**Doran-i(λλμ΄)**λ ꡬκΈμ κ³ μ±λ₯ μ€ν λͺ¨λΈμΈ gemma-2-9b-itλ₯Ό κΈ°λ°μΌλ‘, CBT(μΈμ§νλμΉλ£) κΈ°λ²μ μνν μ μλλ‘ μ κ΅νκ² λ―ΈμΈμ‘°μ (Fine-tuning)λ νκ΅μ΄ μ¬λ¦¬ μλ΄ AI λͺ¨λΈμ
λλ€.
κΈ°μ‘΄ Gemma 3μ μ€νμ μν€ν
μ² λμ , κ²μ¦λ μ±λ₯κ³Ό μμ μ±μ μλνλ Gemma 2 9Bλ₯Ό μ±ννμ¬ νκ΅μ΄ λμμ€ νμ
λ₯λ ₯κ³Ό μλ΄μ κΉμ΄λ₯Ό λν κ°ννμ΅λλ€.
λ¨μν μλ‘λ₯Ό λμ΄, λ΄λ΄μμ λ§ μμ μ¨κ²¨μ§ **12κ°μ§ μΈμ§ μ곑(Cognitive Distortion)**μ νμ§νκ³ , **μν¬λΌν μ€μ μ§λ¬Έ(Socratic Questioning)**μ ν΅ν΄ λ΄λ΄μκ° μ€μ€λ‘ λΆμ μ μ¬κ³ μ κ³ λ¦¬λ₯Ό λλλ‘ λμ΅λλ€.
- Developed by: Kong Yoonseo (0xMori) @ Safori
- Model type: Causal Language Model (QLoRA Fine-tuned)
- Language(s): Korean (νκ΅μ΄)
- License: Gemma Terms of Use
- Base Model:
google/gemma-2-9b-it - Hardware: Trained on NVIDIA T4, Merged on TPU v5e-8
Model Sources
- Repository: https://huggingface.co/0xMori/gemma-2-9b-safori-cbt-merged
- Service Github: [Team Safori]
π― Uses
Direct Use (JSON Output)
μ΄ λͺ¨λΈμ ꡬ쑰νλ JSON νμμΌλ‘ μλ΄ κ²°κ³Όλ₯Ό μΆλ ₯νλλ‘ νλ ¨λμμ΅λλ€:
{
"emotion": "sad",
"empathy": "λ΄λ΄μμ κ°μ μ λν κΉμ κ³΅κ° λ©νΈ",
"detected_distortion": "νλ°±λ
Όλ¦¬",
"analysis": "λ΄λ΄μκ° μ κ·Έλ° μκ°μ νκ² λμλμ§μ λν λΆμ",
"socratic_question": "λ°λ° μ¦κ±°λ₯Ό μ°Ύλλ‘ μ λνλ μ§λ¬Έ",
"alternative_thought": "κΈμ μ λμ μ¬κ³ μμ"
}
Out-of-Scope Use (μ¬μ© μ ν)
- μλ£μ μ§λ¨: μ΄ λͺ¨λΈμ μμ¬κ° μλλ©°, μ μ μ§νμ μ§λ¨νκ±°λ μ½λ¬Όμ μ²λ°©ν μ μμ΅λλ€.
- μ¦κ°μ μΈ μκΈ° κ°μ : μμ΄/μν΄ λ± μκΈ μν© λ°μ μ ν«λΌμΈ μλ΄κ° νμν©λλ€.
π» How to Get Started
Hugging Face Transformers λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ λ°λ‘ μ€νν μ μμ΅λλ€.
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
# Merged Model (μ΄λν° λ³ν© μλ£)
model_id = "0xMori/gemma-2-9b-safori-cbt-merged"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
device_map="auto",
torch_dtype=torch.float16
)
# Alpaca ν¬λ§· (νμ΅ μ μ¬μ©ν ν¬λ§· μ€μ κΆμ₯)
prompt = """λΉμ μ μ λ¬Έμ μΈ μΈμ§νλμΉλ£(CBT) AI μλ΄μ¬ 'λλμ΄'μ
λλ€.
### μ¬μ©μ μ
λ ₯:
μ¬λλ€μ΄ λ€ λλ₯Ό μ«μ΄νλ κ² κ°μμ λͺ¨μμ λκ°κΈ°κ° λλ €μ.
### μλ΅ (JSON):
""
input_ids = tokenizer(prompt, return_tensors="pt").to("cuda")
outputs = model.generate(
**input_ids,
max_new_tokens=512,
do_sample=True,
temperature=0.7,
top_p=0.9
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
βοΈ Training Details
Training Data
- Custom Dataset (Safori CBT): μΈμ§νλμΉλ£ μ΄λ‘ μ λ°νμΌλ‘ μ체 ꡬμΆν κ³ νμ§ νκ΅μ΄ μλ΄ λνμ (μ½ 400건).
- Preprocessing:
Input(λ΄λ΄μ λ°ν)-Output(JSON ꡬ쑰)ννμ Alpaca ν둬ννΈ ν¬λ§· μ μ©.- λ€μν μΈμ§ μ곑 μ ν(νλ°±μ¬κ³ , κ³ΌμμΌλ°ν λ±)μ κ³¨κ³ λ£¨ λΆν¬μν΄.
Training Procedure
Technique: QLoRA (Quantized Low-Rank Adaptation)
Optimization Strategy:
- Early Stopping: Training Loss 0.65 λλ¬ μ κ³Όμ ν© λ°©μ§λ₯Ό μν΄ μ‘°κΈ° μ’ λ£.
- Stable Environment: νΈνμ± μ΄μκ° μλ Unsloth λμ Pure Hugging Face (TRL 0.8.6) λΌμ΄λΈλ¬λ¦¬ μ¬μ©.
Hyperparameters:
- Learning Rate: 2e-4
- Batch Size: 1 (Gradient Accumulation: 8) -> Effective Batch Size 8
- Optimizer: paged_adamw_8bit
- Quantization: 4-bit (NF4)
- LoRA Rank (r): 16, Alpha: 16
- Max Sequence Length: 2048
- Downloads last month
- 2