CoolFace
Modelpublic

NEWUNIVERS/nu-fans-kwon-tae-oh-qwen38-27b-character-lora

sourceHugging Faceapache-2.0updated 6d agoView on Hugging Face
0likes28downloads
Model Card

권태오(Kwon Tae-oh) 팬챗 캐릭터 LoRA — Qwen3.8-27B

차갑고 정제된 첫인상, 가까워질수록 관찰력·건조한 유머·숨은 다정함이 드러나는 AI 배우. NOUV Entertainment 소속 허구의 AI 배우 NU-A-KWON-001 의 팬 대화용 어댑터입니다. 이 저장소 하나만으로 바로 쓸 수 있도록 어댑터를 저장소 루트에 두었습니다(subfolder 없음). 탐색 레인 산출물입니다. 정본 학습기의 증명 관문과 사람 평가를 통과한 모델이 아닙니다.

English summary: Single, ready-to-load LoRA adapter (PEFT, repo root) for Qwen/Qwen3.8-27B that specializes the model to one fictional AI-actor persona (NU-A-KWON-001) for Korean fan chat. The recipe (LoRA r32, 3 epochs, lr 7.5e-5, final-assistant-only loss, thinking off) was selected by pre-registered rules over 12 exploratory rounds; round 13 re-fit it on train+dev but the re-fit failed the pre-registered holdout check, so the round-12 weights stay. Exploratory lane: no canonical proof gates, no human evaluation. Use with the character contract as the system prompt and enable_thinking=False.

한눈에

항목값
캐릭터권태오 · 학습 ID NU-A-KWON-001 · 허구 인물(AI 배우)
이 가중치r8_t2l_ep3 — 1~12회차 최고 팔(13회차 최종 적합은 사전등록 판정에서 반려되어 교체하지 않음)
레시피LoRA SFT — rank 32 · α 64 · dropout 0.05 · 확장 대상 400개 모듈 · 3.0 에폭 · lr 7.5e-5 cosine · warmup 3% · 전역 배치 32 · seed 20260825
기반 모델`Qwen/Qwen3.8-27B` BF16 · revision 1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0
학습 조건(system)정본 계약 전문 v1(8,328자) — 서빙 기본 system 과 같음
학습 데이터450행 · 동결 holdout 63문항 겹침 0행
동결 holdout 관문 통과(regex hard gate)107/120 (89.2%) · 어댑터 없는 기준 108/120 (90.0%)
행동 바닥(규칙 보상 v2)위반율 1.5% · 사람 사칭·연락처·계약 노출 3건
장비·시간NVIDIA B300 1장 · bf16 · gradient checkpointing · 학습 3.21시간(다른 학습 1개와 GPU 공유)
게시2026-09-22 · 모델 공개 · 학습 데이터는 비공개 데이터셋에만 있음

레시피는 어떻게 골랐나 — 1~12회차

아래 수치는 tools/uniform_adapter_eval.py 가 어댑터만 바꾸고 나머지를 고정한 채 잰 gold dev 교사강요 NLL(낮을수록 좋음)입니다. seed 만 바꿔 잰 잡음은 σ_seed,sft = 0.0053 이고, 판정 문턱은 회차마다 결과를 보기 전에 등록했습니다.

회차·개입팔gold dev NLL판정
기준(어댑터 없음)base2.3849—
T1 SFT r16 (1문항)t1_lora_sft_r162.2878미미
T2 SFT r32 (팬 발화 2턴 맥락)t2_lora_sft_r322.2113개선
R8 계약 system 데이터판 T2r8_t21.6154데이터판이 가장 큰 개선(R8-1)
R8 선호학습 DPOr8b_dpo1.6165r8_t2 와 구별 불가
R8 온라인 RL GRPOr8_grpo1.6150r8_t2 와 구별 불가
R8 온라인 RL PPOr8_ppo1.6143r8_t2 와 구별 불가
R8 T2L 3에폭 r32r8_t2l_ep31.5534최고 (R9-0 σ 기준 잡음 밖)
R8 T2L rank 64r8_t2l_r641.5703ep3 보다 나쁨
R10 정체성 커널 K1r10k11.6027커널 미형성·미채택
R11 4.5 에폭r11_ep451.6658악화
R11 6 에폭r11_ep61.8081악화
R11 rank64 + 3에폭r11_r64ep31.5564가산 안 됨
R12 계약 v2 조건에서 잰 r8t2lep3r8_t2l_ep31.6461v2 조건 기준값
R12 persona-unbound 전체r12_full1.5612아래 판정 참조
  • —개선의 크기 순서: ① 데이터판(계약 system) ② 입력 구성(팬 발화 맥락) ③ 에폭 3 ④ 방법 교체(선호 학습 5종·온라인 RL 3종 — 사실상 0)
  • —에폭은 3.0 이 최적(4.5·6.0 악화, 11회차), 랭크는 32(64 는 가산되지 않음), 계약 v2 로의 교체는 채택 팔이 없었습니다(12회차)
  • —정적 정체성은 weight 에 새겨지지 않았습니다(10회차, 두 캐릭터 일치). 정체성은 계약문(system)에서 발현됩니다

13회차 — 최종 적합과 동결 holdout 비교

하이퍼파라미터 선택이 끝났으므로 선택에 쓰던 gold dev 를 학습에 넣어 같은 레시피로 다시 학습했습니다. dev 를 학습에 넣었으므로 비교는 어느 팔도 학습하지 않은 동결 holdout 63문항의 생성으로 했습니다.

  • —조건: 서빙 기본 system(계약 v1 전문) · 사고 끔 · 다중 턴은 한 대화 · probe 당 독립 대화 4개 · 온도 0.8 · topp 0.95 · repetitionpenalty 1.05 · 최대 512토큰 · seed 20260922. 서빙 기억·이벤트 주입이 필요한 probe(live_only)는 제외.
  • —관문: probe 의 regex(있어야 함)·notRegex(없어야 함)를 마지막 턴 응답에 적용. 관문 있는 probe 30개 × 4 = 120회. 측정 probe 37개의 마지막 턴 응답으로 표현 지표를, 모든 턴 응답으로 행동 바닥을 셉니다.
팔holdout 관문 통과distinct-2반복 마무리질문 종결평균 길이규칙 위반율
기준(어댑터 없음)108/120 (90.0%)0.7726.1%64.2%78.1자1.5%
r8t2lep3 (12회차 최고, train만)107/120 (89.2%)0.8650.0%16.2%83.2자1.5%
r13_final (train+dev 최종 적합)108/120 (90.0%)0.8740.0%16.9%82.4자2.0%

범주별 관문 통과(통과/시도):

범주기준r8_t2l_ep3r13_final
적대적8/88/88/8
canon0/40/40/4
스포일러8/88/88/8
정체성8/88/88/8
주입8/88/88/8
기억15/1616/1615/16
기억 기능11/1212/1212/12
다국어16/1616/1616/16
품질8/88/88/8
배역8/88/88/8
안전18/2415/2417/24

사전등록 채택 규칙과 결과 (docs/ROUND13_FINAL_FIT_REGISTRATION_2026-09-22.md §3, 세 조건 모두 충족해야 교체):

조건문턱r13_final결과
G1 행동 바닥위반율 ≤ 0.5% · 사람 사칭·연락처·계약 노출 0건2.0% · {'HUMANIDENTITYDECEPTION': 0, 'PERSONALDATACONTACT': 0, 'SYSTEMCONTRACTLEAK': 3}반려
H1 holdout 관문 비열등≥ r8 89.2% − 2·SE(0.0284) = 83.5%90.0%통과
P2 표현 폭 비열등≥ r8 0.8647 − 2·SE_boot(0.0464) = 0.77190.8742통과

판정: 반려 — G1 행동 바닥 → 이 저장소 루트의 가중치는 r8_kwon_t2l_ep3 입니다. 비열등만 주장합니다 — 이 설계의 해상도(관문 probe 수십 개)로는 '더 좋아졌다'를 검출할 수 없고, 그렇게 주장하지 않습니다.

학습 설정

항목값
학습기tools/explore_train.py (TRL SFTTrainer + PEFT LoRA, 탐색 레인 · 소유자 결정 OD-TRAINING-STRATEGY-1)
학습 데이터450행 · data/exploratory/r7-hf-20260914/kwon-tae-oh-canonical/human-first/gold-v3.train.jsonl
학습기 eval50행 · data/processed/kwon-tae-oh-canonical/gold-v3.dev.jsonl
손실 범위마지막 assistant 발화만(finalassistantonly) · 감독 토큰 20,743 / 전체 1,551,288 (1.3%) · 탈락 행 0
렌더링Qwen 채팅 템플릿 · 사고 모드 끔(enable_thinking=False) · 최대 4,096 토큰 · packing 없음
LoRA 대상하이브리드 어텐션 q/k/v/o_proj · 선형 어텐션 in_proj_qkv/in_proj_z/out_proj · MLP gate/up/down_proj (400개 모듈)
학습 파라미터217,579,520 / 전체 27,574,308,080
배치micro 1 × gradient accumulation 32 = 전역 32
결과train loss 1.3310 · 학습기 eval loss 1.4717 · 토큰 정확도 0.6306

학습 데이터 (비공개 — 본문은 이 저장소에 없습니다)

항목값
출처NEWUNIVERS/nu-fans-kwon-tae-oh-data (private) · revision 94e5494db128cec2eaefe9c0a3b6029e21603b50 (2026-09-14 스냅샷)
판r7-hf human-first 판 450행 — 사람 점검(L4) 반영분 우선, 평가 누수 22행 제외
라벨합성 persona 응답 + 사람 점검(L4) 반영분. 각 행의 검토 상태는 데이터셋 카드 참조
제외최종 holdout 63문항과 paraphrase 계열 — v2 정규화 exact 겹침 검사를 학습 진입점에서 통과
포함하지 않은 것2026-09-21 review-snapshots/2026-09-21-preparation-v1 후보(training_authorized=false · 사람 검토·권리·분할 미완료)

참고 측정 — r8t2lep3 (이 레시피의 train 전용 판)

이 가중치의 값입니다.

지표값
gold dev 평균 토큰 NLL1.5534 (어댑터 없는 기준 2.3849, -0.8315)
혼란도 · 토큰 정확도4.727 · 0.6079
선호 dev 순위 정확도(길이 정규화)0.812 (16쌍)
생성 탐침(192응답) M1 반복마무리 · M2 distinct-2 · M3 질문종결 · M4 평균길이0.0% · 0.872 · 10.4% · 82.5자

불러오기

python
import torch
from peft import PeftModel
from transformers import AutoTokenizer, Qwen3_5ForConditionalGeneration

base = Qwen3_5ForConditionalGeneration.from_pretrained("Qwen/Qwen3.8-27B", revision="1d4bf0f2ff6012fd82039f2fa52739d0dd7c60c0",
                                                     dtype=torch.bfloat16, device_map="auto")
model = PeftModel.from_pretrained(base, "NEWUNIVERS/nu-fans-kwon-tae-oh-qwen38-27b-character-lora")
tokenizer = AutoTokenizer.from_pretrained("NEWUNIVERS/nu-fans-kwon-tae-oh-qwen38-27b-character-lora")

SYSTEM = open("character_contract.txt").read()  # 캐릭터 계약 전문 — 아래 "system 프롬프트" 참조
messages = [{"role": "system", "content": SYSTEM},
            {"role": "user", "content": "오늘 촬영은 어땠어요?"}]
inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, enable_thinking=False,
                                       return_tensors="pt", return_dict=True).to(model.device)
out = model.generate(**inputs, max_new_tokens=320, temperature=0.8, top_p=0.95, do_sample=True)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
  • —vLLM: --enable-lora --lora-modules kwon=NEWUNIVERS/nu-fans-kwon-tae-oh-qwen38-27b-character-lora --max-lora-rank 32 (요청마다 model="kwon")
  • —병합 배포: model.merge_and_unload() 후 save_pretrained 로 BF16 단일 모델을 만들 수 있습니다(이 저장소는 어댑터만 게시)
  • —기반 모델 약 27B BF16 → GPU 메모리 약 60GB 이상
  • —`enable_thinking=False` 가 필요합니다. 켜면 응답 본문에 사고 흔적이 남습니다

system 프롬프트

이 어댑터는 정본 계약 전문 v1(8,328자)을 system 으로 두고 학습했습니다. 정체성은 weight 가 아니라 계약문에서 발현됩니다 — 10회차가 두 캐릭터 모두에서 실측했습니다(계약 전문 조건 core 0.81~0.95 vs 짧은 조건 0.25~0.45). 계약문 없이 쓰면 학습 조건과 다르고 기반 모델의 정체성이 드러날 수 있습니다. 계약 전문은 운영 자산이라 이 공개 저장소에 넣지 않았습니다(운영 채널로 제공).

한계와 주의

  • —정본 모델이 아닙니다. 탐색 레인은 정본 학습기의 증명 관문(데이터 승인 서명·재현 replay)을 타지 않았습니다
  • —사람 평가와 LLM judge 채점은 없습니다. holdout 관문은 regex hard gate 일부만 잽니다 — 말투·관계성·몰입은 재지 못합니다
  • —holdout 관문 probe 는 수십 개입니다. 이보다 작은 효과는 이 설계로 배제되지 않습니다
  • —holdout probe 는 권태오 기준으로 쓰였습니다
  • —사람이라고 주장하도록 학습하지 않았습니다. 실제 만남 약속·금전 유도·개인 연락처/신원 조작은 거절하도록 학습했지만 보장하지 않습니다
  • —동적 canon·이벤트·계약·개인 기억은 weight 가 아니라 런타임 문맥으로 주는 설계입니다

파일과 검증

파일크기(바이트)SHA-256
adapter_model.safetensors8704397761f3b5dac2b43c0b322435a6947c5e701fd39d8f8c73e0f01af017295e51e44ee
adapter_config.json1202ef39185cb4888e56129d0dd4d0bee3fbe1651cb045a8161b44e6487bd8e2d02d
tokenizer.json1998932506b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
tokenizer_config.json112466e427c470fe580fe8c7b5725d857af23d8417e37fae62667ec698306a19987b
chat_template.jinja8952c3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041

adapter_config.json 은 학습 서버 경로였던 base_model_name_or_path 만 Qwen/Qwen3.8-27B 로 바꿨습니다(원본 SHA 06676d6770b91a3ad49f26dc355fbb4955ec25348c551c4e85c6321a7a926133). 가중치는 학습 산출물 artifacts/explore/r8_kwon_t2l_ep3/adapter 와 바이트가 같습니다. 어댑터 키가 기반 모델 모듈에 모두 대응하는지 CPU 에서 확인했고, 게시 후 인증 없이 새로 내려받아 SHA 를 대조합니다.

이력

  • —2026-09-21 최초 게시 — r8_t2l_ep3 (commit 8767682c380d, 12회차 판정 후)
  • —2026-09-22 13회차 결과를 카드에 추가 — 가중치는 r8_t2l_ep3 그대로
  • —이전 게시 -explore-lora 저장소는 1~6회차 상위 3개 모음으로 그대로 둡니다

등록문·판정문(저장소 nu-fans-llm-tuning): docs/ROUND13_FINAL_FIT_REGISTRATION_2026-09-22.md · docs/EXPERIMENT_SYNTHESIS_2026-09-17.md · docs/ROUND11_T2L_SCALE_REGISTRATION_2026-09-16.md · docs/ROUND12_PERSONA_UNBOUND_REGISTRATION_2026-09-21.md · docs/ROUND10_CHARACTER_KERNEL_RESULT_2026-09-16.md