yeji-8b-rslora-v7
ํ๊ตญ์ด ์ด์ธ ํด์ ์ ๋ฌธ ์ธ์ด ๋ชจ๋ธ (ํ๋ก๋์ ํ ์ ๋ฐ๋ ๋ฒ์ )
Model Description
yeji-8b-rslora-v7์ Qwen3-8B-Base๋ฅผ rsLoRA๋ก ๋ฏธ์ธ์กฐ์ ํ ํ๊ตญ์ด ์ด์ธ ํด์ ์ ๋ฌธ ๋ชจ๋ธ์ ๋๋ค. ์ฌ์ฃผํ์, ํ๋ก, ์์ ์ ์ฑ์ (ํธ๋ก์ค์ฝํ) ๋ฑ ๋ค์ํ ์ด์ธ ๋๋ฉ์ธ์์ ๊ณ ํ์ง ํ๊ตญ์ด ํด์์ ์ ๊ณตํฉ๋๋ค.
์ด ๋ชจ๋ธ์ ํ๋ก๋์ ํ๊ฒฝ์์ ์ต๊ณ ํ์ง์ ์ ๊ณตํ๋ ํ ์ ๋ฐ๋(FP16) ๋ฒ์ ์ด๋ฉฐ, ๋น ๋ฅธ ์ถ๋ก ์ด ํ์ํ ๊ฒฝ์ฐ ์์ํ ๋ฒ์ ์ธ yeji-8b-rslora-v7-AWQ๋ฅผ ์ฌ์ฉํ์ธ์.
์ฃผ์ ํน์ง
- ๋๋ฉ์ธ ์ ๋ฌธ์ฑ: 33,528๊ฑด์ ๊ณ ํ์ง ํ๊ตญ์ด ์ด์ธ ๋ฐ์ดํฐ๋ก ํ์ต
- rsLoRA ์ํคํ ์ฒ: ํจ์จ์ ์ธ ํ๋ผ๋ฏธํฐ ์ ๋ฐ์ดํธ (3.41% trainable params)
- ๋ฉํฐ ๋๋ฉ์ธ ์ง์: ์ฌ์ฃผํ์, ํ๋ก, ํธ๋ก์ค์ฝํ ํตํฉ ํ์ต
- vLLM ์ต์ ํ: ํ๋ก๋์ ๋ฐฐํฌ๋ฅผ ์ํ vLLM ์์ ํธํ
- JSON ๊ตฌ์กฐํ ์ถ๋ ฅ: Qwen3์ ๊ฐ๋ ฅํ JSON ์์ฑ ๋ฅ๋ ฅ ํ์ฉ
Training Details
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| Base Model | Qwen/Qwen3-8B-Base |
| Fine-tuning Method | rsLoRA (Rank-Stabilized LoRA) |
| LoRA Rank (r) | 64 |
| LoRA Alpha | 128 |
| Dataset | tellang/yeji-fortune-telling-ko-v3 |
| Dataset Size | 33,528 samples |
| Epochs | 5 |
| Trainable Parameters | 174,653,440 (3.41%) |
| Total Parameters | 5,123,014,656 |
| Training Time | ~18 hours |
| GPU | NVIDIA A100 40GB |
| Precision | FP16 |
| Model Size | ~16GB |
ํ์ต ๋ฐ์ดํฐ ๊ตฌ์ฑ
- ์ฌ์ฃผํ์ (Saju): ์์์คํ, ์ฒ๊ฐ์ง์ง, ์ญ์ฑ ๊ธฐ๋ฐ ํ๊ตญ ์ ํต ๋ช ๋ฆฌํ
- ํ๋ก (Tarot): ๋ฉ์ด์ /๋ง์ด๋ ์๋ฅด์นด๋, ์ /์ญ๋ฐฉํฅ ์นด๋ ํด์
- ํธ๋ก์ค์ฝํ (Horoscope): ์์ ์ ์ฑ์ 12๊ถ์ ๋ฐ ํ์ฑ ์ํฅ ๋ถ์
Usage
vLLM ์๋ฒ ์คํ (๊ถ์ฅ)
# vLLM ์๋ฒ ์์
vllm serve tellang/yeji-8b-rslora-v7 \
--host 0.0.0.0 \
--port 8001 \
--dtype float16 \
--gpu-memory-utilization 0.95 \
--max-model-len 4096 \
--enable-prefix-caching
# API ํธ์ถ ์์ (curl)
curl http://localhost:8001/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "tellang/yeji-8b-rslora-v7",
"prompt": "<|im_start|>system\n๋น์ ์ ํ๊ตญ์ด ์ด์ธ ํด์ ์ ๋ฌธ๊ฐ์
๋๋ค.<|im_end|>\n<|im_start|>user\n์ค๋์ ์ฐ์ ์ด์ ์๋ ค์ฃผ์ธ์.<|im_end|>\n<|im_start|>assistant\n",
"max_tokens": 512,
"temperature": 0.7,
"top_p": 0.9
}'
Python (transformers)
from transformers import AutoModelForCausalLM, AutoTokenizer
model_name = "tellang/yeji-8b-rslora-v7"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
device_map="auto",
torch_dtype="auto"
)
messages = [
{"role": "system", "content": "๋น์ ์ ํ๊ตญ์ด ์ด์ธ ํด์ ์ ๋ฌธ๊ฐ์
๋๋ค."},
{"role": "user", "content": "์ค๋์ ์ฐ์ ์ด์ ์๋ ค์ฃผ์ธ์."}
]
text = tokenizer.apply_chat_template(
messages,
tokenize=False,
add_generation_prompt=True
)
inputs = tokenizer([text], return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=512,
temperature=0.7,
top_p=0.9
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Python (OpenAI SDK with vLLM)
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8001/v1",
api_key="not-needed"
)
response = client.chat.completions.create(
model="tellang/yeji-8b-rslora-v7",
messages=[
{"role": "system", "content": "๋น์ ์ ํ๊ตญ์ด ์ด์ธ ํด์ ์ ๋ฌธ๊ฐ์
๋๋ค."},
{"role": "user", "content": "์ค๋์ ์ฐ์ ์ด์ ์๋ ค์ฃผ์ธ์."}
],
temperature=0.7,
max_tokens=512
)
print(response.choices[0].message.content)
Intended Use
์ด ๋ชจ๋ธ์ ๋ค์ ์ฉ๋๋ก ์ค๊ณ๋์์ต๋๋ค:
- ํ๊ตญ์ด ์ด์ธ ํด์ ์๋น์ค: ์ฌ์ฃผ, ํ๋ก, ํธ๋ก์ค์ฝํ ์๋ ํด์
- ๋ํํ ์ ์ ์ฑ๋ด: ์ฌ์ฉ์์ ์ํธ์์ฉํ๋ ์ด์ธ ์๋ด ์์คํ
- ์ด์ธ ์ฝํ ์ธ ์์ฑ: ์ผ์ผ/์ฃผ๊ฐ/์๊ฐ ์ด์ธ ์๋ ์์ฑ
- ๋๋ฉ์ธ ์ง์ ๊ธฐ๋ฐ ์ถ์ฒ: ์ด์ธ ๊ธฐ๋ฐ ์กฐ์ธ ๋ฐ ๊ฐ์ด๋์ค ์ ๊ณต
์ฌ์ฉ ์ฌ๋ก
โ ๊ถ์ฅ ์ฌ์ฉ:
- ์ํฐํ ์ธ๋จผํธ ๋ชฉ์ ์ ์ด์ธ ์๋น์ค
- ์ ์ ์ ๋ฌธ๊ฐ์ ๋ณด์กฐ ๋๊ตฌ
- ์ด์ธ ์ฝํ ์ธ ์ด์ ์์ฑ
- ํ๊ตญ์ด ์ด์ธ ๋ฐ์ดํฐ ๋ถ์
โ ๋ถ์ ์ ํ ์ฌ์ฉ:
- ์๋ฃ, ๋ฒ๋ฅ , ๊ธ์ต ์กฐ์ธ ๋์ฒด
- ์ค๋ํ ์ธ์ ๊ฒฐ์ ์ ์ ์ผํ ๊ทผ๊ฑฐ
- ํ์ธ์ ๋ํ ๋ถ์ ์ ํ๋จ ๋๊ตฌ
Limitations
- ์ธ์ด: ํ๊ตญ์ด ์ ์ฉ (๋ค๋ฅธ ์ธ์ด ์ง์ ์ ํ์ )
- ๋๋ฉ์ธ: ์ด์ธ/์ ์ ํนํ (์ผ๋ฐ ๋ํ ์ฑ๋ฅ ๋ฒ ์ด์ค ๋ชจ๋ธ ๋๋น ํ๋ฝ ๊ฐ๋ฅ)
- ๋ฌธํ์ ๋งฅ๋ฝ: ํ๊ตญ ๋ฐ ๋์์์ ๋ฌธํ๊ถ ์ด์ธ ์ฒด๊ณ ์ค์ฌ
- ์ ํ์ฑ: ์ด์ธ ํด์์ ๊ฐ๊ด์ ์ ํ์ฑ ๋ณด์ฅ ๋ถ๊ฐ (์ํฐํ ์ธ๋จผํธ ์ฉ๋)
- VRAM ์๊ตฌ์ฌํญ: ํ ์ ๋ฐ๋ ๋ชจ๋ธ๋ก ์ฝ 16GB VRAM ํ์ (์์ํ ๋ฒ์ ๊ถ์ฅ: yeji-8b-rslora-v7-AWQ)
Model Variants
| ๋ชจ๋ธ | ์ ๋ฐ๋ | ํฌ๊ธฐ | VRAM | ์ฉ๋ |
|---|---|---|---|---|
| yeji-8b-rslora-v7 | FP16 | ~16GB | ~18GB | ์ต๊ณ ํ์ง ์ถ๋ก |
| yeji-8b-rslora-v7-AWQ | W4A16 | ~4GB | ~6-8GB | ๋น ๋ฅธ ํ๋ก๋์ ๋ฐฐํฌ |
Performance
rsLoRA v7 ๋ฒ์ ์ ์ด์ ๋ฒ์ (v5) ๋๋น ๋ค์ ๊ฐ์ ์ฌํญ์ ์ ๊ณตํฉ๋๋ค:
- โ ๋ฐ์ดํฐ ํ์ง ํฅ์: v2 โ v3 ๋ฐ์ดํฐ์ ์ ๊ทธ๋ ์ด๋ (33,528๊ฑด)
- โ ์์ ์ฑ ๊ฐ์ : rsLoRA rank ์ฆ๊ฐ (r=32 โ r=64)
- โ JSON ๊ตฌ์กฐํ ์ถ๋ ฅ: Qwen3 ๋ฒ ์ด์ค์ JSON ์์ฑ ๋ฅ๋ ฅ ํ์ฉ
- โ ๋ฉํฐ ๋๋ฉ์ธ ํตํฉ: ์ฌ์ฃผ/ํ๋ก/ํธ๋ก์ค์ฝํ ๋จ์ผ ๋ชจ๋ธ ์ฒ๋ฆฌ
Ethical Considerations
- ์ด ๋ชจ๋ธ์ ์ํฐํ ์ธ๋จผํธ ๋ชฉ์ ์ผ๋ก ์ค๊ณ๋์์ต๋๋ค
- ์ด์ธ ํด์์ ๊ณผํ์ ๊ทผ๊ฑฐ๊ฐ ์์ผ๋ฉฐ, ์ค๋ํ ๊ฒฐ์ ์ ์ฌ์ฉํ์ง ๋ง์ธ์
- ๋ชจ๋ธ ์ถ๋ ฅ์ ๋ํ ๋นํ์ ์ฌ๊ณ ๋ฅผ ๊ถ์ฅํฉ๋๋ค
- ์ฌ์ฉ์์ ์ฌ๋ฆฌ์ ์๋ ์ ์ต์ฐ์ ์ผ๋ก ๊ณ ๋ คํ์ธ์
License
Apache 2.0 License (๋ฒ ์ด์ค ๋ชจ๋ธ Qwen3-8B-Base์ ๋์ผ)
Citation
@misc{yeji-8b-rslora-v7,
author = {SSAFY YEJI Team},
title = {yeji-8b-rslora-v7: Korean Fortune-Telling Language Model},
year = {2025},
publisher = {HuggingFace},
howpublished = {\url{https://huggingface.co/tellang/yeji-8b-rslora-v7}}
}
@article{qwen3,
title={Qwen3 Technical Report},
author={Qwen Team},
year={2024}
}
Acknowledgments
- ๋ฒ ์ด์ค ๋ชจ๋ธ: Qwen/Qwen3-8B-Base
- ํ์ต ๋ฐ์ดํฐ: tellang/yeji-fortune-telling-ko-v3
- ์ถ๋ก ์์ง: vLLM
- ์์ํ: llm-compressor
Contact
- Team: SSAFY YEJI Team
- Project: YEJI Fortune-Telling Service
- Issues: GitHub Issues
- Downloads last month
- 110