CoolFace
Modelpublic

neureps/warmly-qwen35-2b-enko-distill

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes
Model Card

warmly-qwen35-2b-enko-distill — 한국어 자연성 증류 LoRA (버전별 폴더)

Warmly(온기) 배포 모델의 한국어 댓글 자연성을 같은 모델 크기에서 끌어올리는 증류 트랙(D안 Track 2)의 산출물 리포입니다. 프루닝 마스터 neureps/Qwen3.5-2B-enko에 8B급 한국어 교사의 댓글을 QLoRA로 증류한 어댑터를 버전 폴더(`v1/`, `v2/`, …) 로 관리합니다. 배포 게이트를 통과한 버전은 병합·재양자화된 GGUF로 warmly-qwen35-2b-enko-gguf에 반영됩니다.

버전 이력

버전날짜상태핵심 변화
v12026-07-15공식 게이트 통과 — 승격 대기 (블라인드 승률 ~70%·자기비하 동조 0/4·후처리 55/60+재생성 폴백 0. 병합·재양자화 GGUF Qwen3.5-2B-enko-distill-v1-dIQ4_XS.gguf 1022MB가 프로덕션 리포에 업로드됨 — 프로덕션 전환은 별도 결정)Kanana-1.5-8B 교사 증류 1차. 자연성 명확 개선(어색 ~18/60 → ~6/60, 깨진 단어·환각 해소), 영어 누출 회귀 5/60(후처리+재생성이 흡수)

v1 — 무엇이 좋아졌나

60댓글 하니스(5장×4페르소나×3반복, temp 0.45, 루브릭 채점) 기준:

지표기준선 (배포 dIQ4_XS)v1 증류판 (LoRA 병합, transformers)
어색 문장~18/60 (30%) — 깨진 단어("김지라네", "그대시된"), 이중 종결, 비문~6/60 — 해소
오역·환각~4-5/60 — 캡션에 없는 "안개/이슬" 반복 환각환각 해소, 대신 영어 누출 5/60 (복잡한 캡션에서 "Victorian" 에코 — 후처리 필터로 걸러짐, 통과 55/60)
구체성~2.5/5 (일반 감탄 위주)3.5+/5 (캡션 디테일 참조 증가)

예시 (pet 사진, 같은 캡션):

  • —기준선: "너무 신난 김지라네!" (깨진 단어) → v1: "고양이 너무 귀엽다 😻 나도 같이 졸리고 ㅋㅋㅋ"
  • —기준선: "정적 같은 것 같아요" → v1: "고요히 잠든 고양이 모습이 참 평온해 보여요"

v1 — 어떻게 만들었나 (전 과정)

  1. 1.측정 해상도 확보: 기존 20댓글 하니스는 후처리 통과 20/20으로 포화 — 60댓글 루브릭 하니스(어색/오역·환각/구체성/페르소나 부합)를 새로 만들어 기준선의 숨은 어색 30%를 드러냄.
  2. 2.교사 선발전: 같은 60댓글을 Qwen3-8B-AWQ와 Kanana-1.5-8B(카카오, Apache-2.0)로 생성·비교. Qwen3-8B는 중국어 누출 4/60 + "텍스처" 차용어 5/60으로 탈락, Kanana는 누출 0·차용어 0·구체성 최상으로 채택.
  3. 3.증류 데이터 합성: 캡션 뱅크 928개(dedup) × 4페르소나 × 2반복을 Kanana(bnb 4bit)로 생성 → 필터(금칙어·외국문자·거부/퇴화·소유 착각("우리 딸") 정규식) → 2B 추론 프롬프트로 래핑 → train 6,483 / valid 300 (페르소나 균형). 무작위 50건 육안 검수 통과.
  4. 4.QLoRA 학습: r=16, α=32, target q/k/v/o+gate/up/down (학습 파라미터 10.9M, 0.54%), 3 epoch, completion-only 마스킹(댓글 토큰만 학습), bnb 4bit + gradient checkpointing, RTX 3080 Laptop 16GB. loss 1.93→0.53, eval loss 1.055→0.886. 에폭별 생성 스모크로 붕괴 감시 — 3에폭 전부 붕괴 없음 (과거 LoRA 기각 원인이던 "val loss 수렴해도 생성 붕괴"를 명시적으로 회피).
  5. 5.검증: LoRA 병합 후 60댓글 재생성 → 기준선과 나란히 채점(위 표).

아키텍처 주의 (v1의 최대 발견): Qwen3.5-2B는 신규 하이브리드 아키텍처(model_type: qwen3_5 — mamba SSM+선형어텐션+MTP+비전) — 릴리스 transformers(≤5.13)로는 로드 불가, git-main(5.14.0.dev)부터 지원. QLoRA 학습·병합 모두 git-main 필요.

파일 (v1/)

파일설명
v1/adapter_model.safetensorsLoRA 어댑터 (43MB, epoch 3 = checkpoint-1218)
v1/adapter_config.jsonpeft 구성 (r16/α32, target modules)
v1/trainer_state.json학습 로그 (loss 곡선, eval loss)
v1/training_args.bin학습 하이퍼파라미터 (재현용)

사용법

python
# transformers git-main 필수 (qwen3_5 아키텍처)
from transformers import AutoModelForImageTextToText, AutoTokenizer
from peft import PeftModel
base = AutoModelForImageTextToText.from_pretrained("neureps/Qwen3.5-2B-enko", torch_dtype="bfloat16")
model = PeftModel.from_pretrained(base, "neureps/warmly-qwen35-2b-enko-distill", subfolder="v1")
# 생성 시: enable_thinking=False 필수, eos(<|im_end|>)+stop_strings 지정
# (few-shot 패턴 모방으로 다음 턴을 이어 생성하는 것 방지)

v1 배포 검증 결과 (2026-07-15, 전부 통과)

  • —GGUF 변환 무결성 PASS: 병합본 → --no-mtp + qwen35 chkhsh 변환 후 greedy 대조 — 3/4 페르소나 완전 일치, 1건 동의어 차이(창문↔창가)만, 깨진 단어·의미 변형 0. (주의: peft CAUSAL_LM 병합은 MTP 가중치를 드롭 — --no-mtp 배포와 정합)
  • —도메인 imatrix 재산출 후 IQ4_XS 재양자화: 1022MB. imatrix는 모델 종속이라 base 것 재사용 불가
  • —공식 게이트: 블라인드 승률 ~70%(기준 ≥60%), 자기비하 동조 0/4, 후처리 1차 55/60 + 재생성 포함 템플릿 폴백 0
  • —잔존 특성(v2 개선 후보): 복잡·희귀 캡션에서 영어 누출(후처리+재생성이 전부 흡수), interior "안개 낀" 환각(기준선에서 계승)

관련 리포


백업 추가 폴더 (2026-07-23)

  • —v3d/ restraint 실험(기각) 어댑터. 데이터·매핑 = neureps/warmly-distill-data·ondevice MODEL-REGISTRY.md.