kor-persona-survey-7b
Built with Qwen. [한국어 요약이 아래에 있습니다 / Korean summary below]
A 7B model distilled to answer survey and preference questions as a specific Korean persona, given a structured persona profile. Fine-tuned from Qwen2.5-7B-Instruct via QLoRA on synthetic (persona, question, response) triplets labeled by a Qwen2.5-72B-Instruct teacher, using persona profiles from nvidia/Nemotron-Personas-Korea.
Research question: How much of a 72B teacher's persona-conditioned survey-response capability can be transferred to a 7B student through synthetic-triplet distillation alone?
What it does
Input: a Korean persona profile (demographics + narrative fields) and a survey/balance-game question. Output: a structured JSON response in character:
{"choice": "짬뽕", "confidence": 0.8, "reason": "얼큰한 국물 없이는 식사가 허전해서"}
Intended for: persona-conditioned response simulation research, synthetic survey data generation, Korean role-play agent studies.
How to use
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "dobstudio/kor-persona-survey-7b"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, device_map="auto")
persona = """- 성별/나이: 여성, 58세
- 지역: 부산광역시
- 직업: 식당 운영
- 음식 성향: 매운 음식을 즐기며 직접 담근 김치에 자부심이 있음"""
question = "짜장면 vs 짬뽕, 하나만 고른다면?"
messages = [
{"role": "system", "content": f"당신은 아래 인물입니다. 이 인물의 입장에서 설문에 답하세요.\n{persona}\n\n반드시 JSON으로만 답하세요: {{\"choice\": ..., \"confidence\": 0.0~1.0, \"reason\": \"한 줄 이유\"}}"},
{"role": "user", "content": question},
]
inputs = tok.apply_chat_template(
messages, add_generation_prompt=True, return_tensors="pt", return_dict=True
).to(model.device)
out = model.generate(**inputs, max_new_tokens=128)
print(tok.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
With vLLM (recommended for batch simulation):
from vllm import LLM, SamplingParams
llm = LLM(model="dobstudio/kor-persona-survey-7b", max_model_len=2048)
outputs = llm.chat([messages], SamplingParams(temperature=0.7, max_tokens=128))
print(outputs[0].outputs[0].text)
Training
| Base model | Qwen/Qwen2.5-7B-Instruct (Apache-2.0) |
| Method | QLoRA SFT (4-bit NF4, LoRA r=16 / α=32, all linear layers, loss on response only), 2 epochs, effective batch 48, cosine lr 1e-4 |
| Teacher | Qwen/Qwen2.5-72B-Instruct-AWQ — generated response labels; disclosed for transparency |
| Training data | 27,999 synthetic triplets (28,571 after quality filtering, 95.2% pass rate from 30,000 raw): (persona from Nemotron-Personas-Korea, question from a curated 515-question bank, teacher-labeled response). Question topics: food, lifestyle, consumption, travel, leisure, work, values, digital — politically/socially sensitive topics excluded |
| Data release | An 800-triplet sample (16 questions × 50 distinct personas each): https://huggingface.co/datasets/dobstudio/kor-persona-survey-sample. The full triplet set, question bank, and the population-aggregation pipeline are not released |
| Hardware | 4× RTX 3090 (24GB); training took ~4 h |
Evaluation
All Model-level metrics are measured on held-out questions never seen in training, and are reproducible with the released model and the prompt format above.
Protocol: 51 held-out questions × 20 evaluation personas (disjoint from training personas), temperature 0.7 with fixed per-request seeds.
Model-level — standalone model metrics (reproducible)
| Metric | Base Qwen2.5-7B | This model | Teacher 72B |
|---|---|---|---|
| Format compliance (valid JSON + exact option match) | 95.5% | 98.5% | 97.0% |
| Teacher agreement (held-out) | 72.3% | 79.4% | 96.1%¹ |
| Response consistency (5-run majority reproducibility) | 98.7% | 97.6% | — |
| Persona sensitivity (TV distance vs. no-persona baseline) | 0.356 | 0.356 | — |
| Position bias (first-option preference)² | — | +1.7% | — |
| Age-conditioning sensitivity (contrastive pairs)³ | — | +20.8%p | — |
¹ Teacher self-agreement across two independent samplings — the effective ceiling for
teacher agreement under temperature 0.7. The distilled model reaches 82.6% of that
ceiling (79.4 / 96.1), up from 75.2% before distillation.
² Estimated as (first-option share, normal order + first-option share, flipped order − 1) / 2
over held-out questions; 0 = unbiased. Choice consistency under option-order flip is 90.7%,
statistically at the sampling-noise floor (91.4%).
³ Flipping only the age field (27↔67) in demographics-only profiles changes the chosen
option on 29.4% of questions vs. an 8.6% same-profile resampling noise floor — net +20.8%p
of genuine age conditioning.
Scaling ablation
We verified that the released configuration saturates this method: doubling the training data (56k triplets from 6,000 personas) left held-out teacher agreement unchanged (79.3%) despite improving validation loss (0.391 → 0.357), and a third epoch moved it only within sampling error (80.1%, n≈980). Closing the remaining gap to the teacher self-agreement ceiling likely requires methodological changes (multi-sample distribution distillation, preference optimization) rather than more of the same data.
System-level accuracy — not measured
Population-level accuracy (e.g., MAE of predicted answer distributions against real Korean survey results) is not measured in this release. All reported metrics quantify fidelity to the teacher and standalone model behavior only; no claim is made about agreement with actual public opinion.
Limitations and ethical considerations
- Synthetic personas are not real people. Outputs simulate what a fictional profile might answer based on LLM priors — they are not measurements of actual Korean public opinion and must not be presented as such.
- Joint-distribution distortion in the source data. Nemotron-Personas-Korea matches real Korean marginal distributions (age, sex, occupation) but its joint distributions (e.g., age×occupation×region) deviate from reality (see arXiv:2606.12433). Segment-level conclusions drawn from raw persona samples are unreliable without statistical correction.
- Stereotype risk. The teacher may role-play personas stereotypically, and distillation inherits this. Persona-sensitivity metrics partially quantify conditioning, not fairness.
- Domain bound. Trained on non-sensitive preference/lifestyle questions. Behavior on political, medical, or otherwise sensitive questions is untested and out of scope.
- Outputs are in Korean; other languages are untested.
Attribution & license
- Model weights: Apache-2.0. Built with Qwen.
- Persona profiles: nvidia/Nemotron-Personas-Korea, CC BY 4.0 — © NVIDIA, used with attribution as required.
- Base model: Qwen/Qwen2.5-7B-Instruct (Apache-2.0), Alibaba Cloud.
- Teacher model: Qwen/Qwen2.5-72B-Instruct-AWQ (Qwen LICENSE), Alibaba Cloud — its outputs were used to train this model, with the "Built with Qwen" notice displayed per that license.
한국어 요약
한국인 가상 인물 프로필을 주면 그 인물의 입장에서 설문/밸런스게임 문항에 구조화된 JSON으로 답하는 7B 모델입니다. Qwen2.5-72B 교사 모델이 생성한 (페르소나, 문항, 응답) 합성 데이터로 Qwen2.5-7B를 QLoRA 증류했습니다.
- 연구 질문: 72B의 페르소나 조건부 응답 능력이 증류만으로 7B에 얼마나 이식되는가
- 평가: 학습에 쓰지 않은 문항(held-out)에서 포맷 준수율, 교사 일치율, 응답 일관성, 페르소나 감수성을 측정 — 공개된 모델만으로 재현 가능
- 한계: 가상 인물의 응답은 실제 여론이 아닌 추정이며, 원본 데이터의 결합분포 왜곡으로 세부 집단 분석에는 통계 보정이 필요합니다. 민감 주제는 학습에서 제외했습니다.
- 모집단 집계 파이프라인(층화 표본추출·사후층화 가중)은 비공개이며, 본 공개물은 개인 페르소나 역할극 기능만 제공합니다.
- Downloads last month
- 7