YEJI 4B rsLoRA v8 - 한국어 운세 생성 모델 (No-Thinking Optimized)
Qwen3-4B-Instruct-2507 (Non-thinking Only) 기반의 한국어 운세 생성 전문 모델입니다. v7의 <think> 태그 출력 문제를 해결하기 위해 thinking 기능이 비활성화된 베이스 모델로 재학습되었습니다.
모델 설명
이 모델은 v7의 개선 버전으로, Qwen3-4B-Instruct-2507 Non-thinking Only 베이스를 사용하여 불필요한 사고 과정 출력을 완전히 제거했습니다. 33,000건 이상의 한국어 운세 데이터셋으로 학습되었으며, 동양 운세(사주), 서양 운세(타로, 별자리), 티키타카 대화 형식을 지원합니다.
v7 대비 주요 개선사항
- ✅
<think>태그 출력 완전 제거: 2507 Instruct (Non-thinking Only) 베이스 사용 - ✅ 더 깔끔한 JSON 출력: 불필요한 사고 과정 노이즈 제거
- ✅ 더 빠른 추론 속도: thinking 오버헤드 없음
- ✅ 안정적인 구조화 출력: Pydantic 스키마 준수율 향상
주요 특징
- Base Model: Qwen/Qwen3-4B-Instruct-2507 (Non-thinking Only)
- Fine-tuning Method: rsLoRA (Rank-Stabilized LoRA)
- Training Data: 33,528개의 한국어 운세 대화 샘플
- System Prompt:
/no_think불필요 (베이스 자체가 non-thinking) - Model Size: ~8GB
- vLLM Support: ✅ 완전 호환
지원 운세 유형
동양 운세 (Eastern Fortune)
- 사주팔자 기반 운세
- 오행, 천간지지 분석
- 12운성, 신살 해석
서양 운세 (Western Fortune)
- 타로 카드 리딩
- 별자리 운세
- 행성 배치 분석
티키타카 대화 (Chat)
- 자연스러운 대화형 운세
- 맥락 기반 응답
- 사용자 맞춤형 조언
학습 세부사항
| 항목 | 값 |
|---|---|
| Base Model | Qwen/Qwen3-4B-Instruct-2507 (Non-thinking Only) |
| Fine-tuning Method | rsLoRA (Rank-Stabilized LoRA) |
| LoRA Rank (r) | 64 |
| LoRA Alpha | 128 |
| Target Modules | q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj |
| Dataset | tellang/yeji-fortune-telling-ko-v3 |
| Dataset Size | 33,528 samples |
| Training Epochs | 5 |
| Learning Rate | 5e-5 |
| Batch Size | 8 (per device) |
| Gradient Accumulation Steps | 4 |
| Effective Batch Size | 32 |
| Max Sequence Length | 4096 |
| Optimizer | AdamW |
| LR Scheduler | Cosine with warmup |
| Warmup Ratio | 0.1 |
| Weight Decay | 0.01 |
사용 방법
vLLM을 사용한 추론 (권장)
from vllm import LLM, SamplingParams
# 모델 로드
llm = LLM(
model="tellang/yeji-4b-rslora-v8",
trust_remote_code=True,
max_model_len=4096,
dtype="auto"
)
# 샘플링 파라미터
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.9,
max_tokens=2048,
repetition_penalty=1.1
)
# 프롬프트 구성 (v8은 /no_think 불필요)
system_prompt = "당신은 전문 운세 상담가입니다."
user_message = "오늘의 연애운을 알려주세요."
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_message}
]
# 추론 실행
outputs = llm.chat(
messages=messages,
sampling_params=sampling_params
)
print(outputs[0].outputs[0].text)
Transformers를 사용한 추론
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
# 모델 및 토크나이저 로드
model_name = "tellang/yeji-4b-rslora-v8"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
# 프롬프트 구성
system_prompt = "당신은 전문 운세 상담가입니다."
user_message = "오늘의 연애운을 알려주세요."
messages = [
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_message}
]
# 토크나이징
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=2048,
temperature=0.7,
top_p=0.9,
repetition_penalty=1.1,
do_sample=True
)
response = tokenizer.decode(outputs[0][len(inputs.input_ids[0]):], skip_special_tokens=True)
print(response)
프롬프트 가이드
시스템 프롬프트 (v8 개선)
당신은 전문 운세 상담가입니다. 사용자의 생년월일, 시간, 질문 유형을 바탕으로 정확하고 공감적인 운세를 제공합니다.
출력 형식:
- JSON 구조화 출력 (Pydantic 스키마 준수)
- 키워드 3개 (긍정/부정/중립)
- 상세 해석
- 조언 및 주의사항
참고: v8은 /no_think 프롬프트가 불필요합니다. 베이스 모델 자체가 non-thinking입니다.
동양 운세 예시
messages = [
{"role": "system", "content": "당신은 전문 운세 상담가입니다."},
{"role": "user", "content": """
사용자 정보:
- 생년월일: 1990년 5월 15일
- 생시: 14시 30분
- 성별: 여성
- 질문 유형: 연애운
사주 정보:
- 일주: 갑인일주
- 오행: 목(3), 화(2), 토(1), 금(1), 수(1)
- 신살: 도화살
오늘의 연애운을 JSON 형식으로 알려주세요.
"""}
]
서양 운세 예시
messages = [
{"role": "system", "content": "당신은 전문 타로 리더입니다."},
{"role": "user", "content": """
타로 스프레드:
1. 과거: 컵 에이스 (정방향)
2. 현재: 검 5 (역방향)
3. 미래: 별 (정방향)
질문: 이번 달 사랑운은 어떤가요?
JSON 형식으로 해석해주세요.
"""}
]
모델 성능
| 평가 지표 | v7 | v8 (개선) |
|---|---|---|
| Training Loss (epoch 5) | 0.2547 | 0.2381 |
| Validation Loss | 0.3124 | 0.2956 |
| BLEU Score | 42.3 | 44.7 |
| ROUGE-L | 0.58 | 0.61 |
| JSON Validity | 98.2% | 99.6% ⬆️ |
<think> Tag Leakage |
3.2% | 0.0% ✅ |
v7 vs v8 비교
| 측면 | v7 | v8 |
|---|---|---|
| Base Model | Qwen3-4B | Qwen3-4B-Instruct-2507 (Non-thinking) |
| Thinking Mode | /no_think 프롬프트 필요 |
✅ 베이스 자체가 non-thinking |
<think> 출력 |
3.2% 발생 | ✅ 0.0% (완전 제거) |
| JSON 유효성 | 98.2% | ✅ 99.6% |
| 추론 속도 | 기준선 | ✅ ~10% 더 빠름 |
| 프롬프트 복잡도 | 높음 (/no_think 필수) |
✅ 낮음 (불필요) |
버전 히스토리
- v8 (현재): Qwen3-4B-Instruct-2507 (Non-thinking Only) 기반 +
<think>태그 완전 제거 - v7: Qwen3-4B Base + rsLoRA +
/no_think시스템 프롬프트
제한사항
- Context Length: 최대 4096 토큰
- Domain Specificity: 운세 도메인 외 범용 성능은 제한적
- Hallucination: 사주/타로 전문 지식 검증 필요
라이선스
Apache License 2.0
인용
@misc{yeji-4b-rslora-v8,
author = {SSAFY 14th YEJI Team},
title = {YEJI 4B rsLoRA v8: Korean Fortune-Telling Language Model (No-Thinking Optimized)},
year = {2025},
publisher = {HuggingFace},
url = {https://huggingface.co/tellang/yeji-4b-rslora-v8}
}
관련 리소스
- Dataset: tellang/yeji-fortune-telling-ko-v3
- Base Model: Qwen/Qwen3-4B-Instruct-2507
- Previous Version: tellang/yeji-4b-rslora-v7
- GitHub: SSAFY-YEJI/yeji-ai-server
문의
질문이나 문제 발생 시 GitHub Issues를 통해 문의해주세요.
- Downloads last month
- 5