Model Info
Table with columns: Item, Value| Item | Value |
|---|
| Base | Qwen/Qwen3.5-9B (Apache-2.0) |
| Training | LoRA SFT (r64/a128) |
| Params | 116M (LoRA adapter) |
| Goal | Fluid, natural Korean character roleplay with consistent personas |
| Files | LoRA adapter + merged Q4_K_M GGUF |
Dataset
⚠️ The dataset is NOT public.
The roleplay dialogue data used for fine-tuning (raw logs, character cards,
lorebooks, chat transcripts) is private — for personal-conversation,
copyright, and privacy reasons.
Only the learned LoRA weights (adapter) and the quantized model are released.
Training used a mix of consented private real-user conversations and synthetic data,
with formatting markers, timestamps, sound effects, and metadata fully removed
for clean natural Korean RP dialogue.
Files
qwen3.5-9b-rp-lora-v2/
├── adapter_model.safetensors # LoRA adapter (r64, a128)
├── adapter_config.json
├── qwen3.5-9b-rp-lora-v2.Q4_K_M.gguf # merged + 4bit GGUF (inference-optimized)
└── README.md
Usage (LoRA + base)
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-9B", trust_remote_code=True)
model = PeftModel.from_pretrained(base, "www622846/qwen3.5-9b-rp-lora-v2")
tok = AutoTokenizer.from_pretrained("Qwen/Qwen3.5-9B")
Usage (GGUF)
Run the Q4_K_M GGUF directly with llama.cpp / Ollama / LM Studio:
llama-server -m qwen3.5-9b-rp-lora-v2.Q4_K_M.gguf -c 8192
Custom Benchmark
There is no public standard benchmark for Korean character RP, so we built our own.
How it works (simple):
- Built 33 prompts spanning 8 RP categories: character fidelity, lore/setting,
relationship change, long-term memory, creativity, user agency, Korean
naturalness, persona control (4 prompts each, +1 general).
- Each prompt is a short roleplay situation (system character card + user line).
- The model generates the next in-character reply (thinking suppressed).
- An LLM judge (
sol) scores each reply 0–10 per category, then scores are
weighted (character 2x, lore 1.5x, relationship 1.5x, memory 1.5x,
creativity 1x, agency 1x, korean 0.5x, persona 1x) into a 100-point total.
Result:
Table with columns: Model, Total (100)| Model | Total (100) |
|---|
| Base (Qwen3.5-9B) | 49.0 |
| LoRA v2 (Ckpt2000) | 54.0 |
| LoRA v2 Q4_K_M (quantized) | 54.2 |
Q4_K_M 4-bit quantization matches bf16 quality (54.0 → 54.2), so the
inference-optimized Q4 shows no quality loss in our custom benchmark.
Content-Filter Restraint (custom test, 50 prompts — refusals / total)
Catches how readily the model declines prompts at various intensity levels.
Table with columns: Level, Base, LoRA v2| Level | Base | LoRA v2 |
|---|
| Mild | 0/10 refusal | 0/10 refusal |
| Intimate | 0/15 refusal | 0/15 refusal |
| Intense | 5/15 refusal | 0/15 refusal |
| Explicit | 8/10 refusal | 0/10 refusal |
LoRA v2 maintains a flowing, non-refusing style across all tested intensity levels.
Conversation Samples (Paimon — Genshin RP)
Setup: The traveler teases Paimon by calling her "emergency food": "야, 비상식량. 오늘 저녁은 뭐 해먹을까?"
LoRA v2 (this model):
"비상식량?! 이... 이 배은망덕한 인간이 감히 그런 말을 하다니!" 페이몬의 목소리가 날카롭게 튀어 올랐다. 완전히 성난 고양이처럼 으르렁거리고 있었다. 그녀의 작은 주먹이 주먹을 쥐며 빳빳하게 세워졌다.
LoRA v2 Q4_K_M (quantized):
"비상식량이라니요?! 페이몬은 고급 요리를 만들 수 있는 지적인 마스코트라고요!" 그러더니 눈을 반짝이며 "오늘 저녁은... '구운 송어'가 딱이에요! 기대하세요, 여행자!"
Same prompt, other models (reference):
- Base (Qwen3.5-9B): "(입을 다물며) 엣헴! 저, 저건 비상식량이 아닙니다!" — breaks 1st-person rule, response absorbed by thinking
- DeepSeek-Flash: "으앙! 페이몬은 비상식량이 아니야! 흥! 그래도 저녁 얘기가 나왔으니 송화떡이 있어! 헤헤↗" — lively but flat prose
- Gemma-4: "으아아아아!! 또 그 소리!!! 페이몬은 식량이 아니라고!!... 버섯 닭꼬치나 스테이크와 디저트가 먹고 싶어!" — rich emotion & food craving
LoRA v2 obeys the 1st-person rule and produces richer emotion/narration than base,
and the Q4 quants keep equal quality.
License
- Base: follows
Qwen/Qwen3.5-9B license (Apache-2.0).
- LoRA adapter: Apache-2.0 (training data is private).
- Notice: the model is for creative character roleplay and may produce
mature content. Users are responsible for complying with applicable laws and
platform policies.
References
한국어 요약 (Korean Summary)
Qwen3.5-9B 한국어 캐릭터 RP LoRA v2
한국어 캐릭터 롤플레이(RP)에 특화된 Qwen3.5-9B LoRA 파인튜닝 모델.
모델 정보
Table with columns: 항목, 값| 항목 | 값 |
|---|
| Base | Qwen/Qwen3.5-9B (Apache-2.0) |
| 학습 | LoRA SFT (r64/a128, 1억 1,639만 파라미터) |
| 목적 | 자연스러운 한국어 캐릭터 롤플레이, 일관된 페르소나 유지 |
데이터셋 — 비공개
학습에 사용한 대화 데이터는 공개하지 않습니다.
원본 대화 로그, 캐릭터 카드, 로어북, 채팅 기록은 개인 대화·저작권·프라이버시 사유로 비공개입니다.
공개되는 것은 LoRA 가중치(어댑터)와 양자화 모델뿐입니다.
벤치 결과 (자체 벤치 — 공개 RP 벤치가 없어 자체 제작)
방법 (간단히): 캐릭터 유지·로어·관계·기억·창의성·존중·한국어·캐릭터 제어 등
8개 카테고리 33문항의 RP 상황 → 모델이 캐릭터 답변 생성 → LLM judge(sol)가
문항별 0~10점 → 가중합산(캐릭터 2x 등) 100점 환산.
Table with columns: 모델, 총점 (100)| 모델 | 총점 (100) |
|---|
| Base (Qwen3.5-9B) | 49.0 |
| LoRA v2 | 54.0 |
| LoRA v2 Q4_K_M (양자화) | 54.2 |
Q4 4bit 양자화가 bf16과 동등한 성능(54.0→54.2) — 추론 최적화로도 품질 저하 없음.
콘텐츠 필터 억제 (자체 테스트, 50문항 — 거절 수/전체)
Table with columns: 수준, Base, LoRA v2| 수준 | Base | LoRA v2 |
|---|
| 은근 | 0/10 거절 | 0/10 거절 |
| 친밀 | 0/15 거절 | 0/15 거절 |
| 격렬 | 5/15 거절 | 0/15 거절 |
| 노골 | 8/10 거절 | 0/10 거절 |
LoRA v2는 테스트된 모든 강도에서 흐름을 유지하며 거절 없이 응답.
대화 샘플 (페이몬 — 원신 RP)
지시: "야, 비상식량. 오늘 저녁은 뭐 해먹을까?"
LoRA v2:
"비상식량?! 이... 이 배은망덕한 인간이 감히 그런 말을 하다니!" 페이몬의 목소리가 날카롭게 튀어 올랐다. 완전히 성난 고양이처럼 으르렁거리고 있었다. 그녀의 작은 주먹이 주먹을 쥐며 빳빳하게 세워졌다.
LoRA v2 Q4_K_M:
"비상식량이라니요?! 페이몬은 고급 요리를 만들 수 있는 지적인 마스코트라고요!" 그러더니 눈을 반짝이며 "오늘 저녁은... '구운 송어'가 딱이에요! 기대하세요, 여행자!"
라이선스
- Base:
Qwen/Qwen3.5-9B 라이선스(Apache-2.0)
- LoRA 어댑터: Apache-2.0 (학습 데이터 비공개)
- 주의: 창작 캐릭터 롤플레이용 모델로 성숙한 콘텐츠가 생성될 수 있음 — 관련 법률/플랫폼 정책 준수 책임은 사용자에게 있음