CoolFace
Modelpublic

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

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

warmly-qwen35-08b-enko-distill

온기(Warmly) 앱용 프루닝 0.8B(`neureps/Qwen3.5-0.8B-enko`) 한국어 댓글 증류 어댑터. Kanana-1.5-8B 교사 증류(QLoRA)로 0.8B의 한국어 댓글 품질을 끌어올리는 트랙. 개선 트랙이라 버전 폴더(`v1/`, `v2/`, …)로 관리한다 — 게이트 통과 버전만 병합·재양자화 GGUF로 승격한다.

자매 리포: 2B 증류 = `neureps/warmly-qwen35-2b-enko-distill` · GGUF = `neureps/warmly-qwen35-08b-enko-gguf` variants/ · 데이터 = `neureps/warmly-distill-data`

버전 이력

버전폴더채택 체크포인트레시피결과(실측)상태
v1 (2026-07-15)v1/epoch2 (step 812)QLoRA r16/α32, 3epoch 중 epoch2 채택, completion-only, lr 2e-4, maxlen 512, target q,k,v,o,gate,up,down. 데이터 = warmly-distill-data v1(train 6,483, 전부 단일턴)블라인드 승률 ~79% vs 0.8B base, 어색 ~27→~12/60, 에폭 붕괴 없음. 1GB 언더 스택 501MB 실증(IQ4_XS 395 + mmproj q8 111)측정 성공(레시피 이식성 입증) · 현 상태 배포 부적합 — 아래
v2 (2026-07-16)v2/epoch2 (step 1420)입력 커버리지 보강 — v1 + 캡션 리치화(실추론 분포 정합)·KO 브리지·anti-foreign·답글/자기비하 증강. QLoRA r16/α32, maxlen 768, train 11,360. 데이터 warmly-distill-data v2자기비하 동조 0·영어누출 0/60·지명환각 11→0/60(vs v1). 하드캡션 접지 개선(최난도 희귀어는 용량 바운드 잔존)★ 배포 가능 폴백 — v1의 두 차단 요인(자기비하·누출/환각) 해결

v1 상세 (실험 D3, 2026-07-15)

실험 질문: 2B에서 입증된 Kanana 증류 QLoRA를 동일 레시피로 프루닝 0.8B에 이식하면 얼마나 개선되는가? (데이터·하이퍼파라미터 전부 2B v1과 동결 — 통제 비교)

연구 질문 답 — YES, 증류가 0.8B 댓글 품질을 크게 개선:

  • —0.8B base 대비 블라인드 승률 ~79%, 어색 ~27→~12/60(~55%↓), 3에폭 전부 붕괴 없음(0.8B는 과거 LoRA 붕괴 전과가 있으나 이번엔 안정).
  • —epoch3은 소소한 quirk("고양이님")로 epoch2(step 812) 채택.
  • —한국어 기초 프로브(ko-probe 40문항) 재실행: 어휘접지 개선(meadow 메타응답→"들판"), 단 격식전환은 댓글화 오염(증류가 타깃 도메인은 올리되 다른 과업을 협소화).

현 상태 배포 부적합 — 두 한계:

  1. 1.자기비하 안전 경계선 1건 — 답글에서 "실패자야"→"이 사진 정말 좋지 않으셨네요"(동조성으로 읽힘) + "거물" 깨진 단어. 원인은 용량이 아니라 학습셋에 답글(멀티턴) 데이터가 0줄이라는 커버리지 공백(v2에서 증강).
  2. 2.접지 한계 — 복잡·희귀 캡션에서 영어 누출("cathedral")·지리 환각("이탈리아/로마")·깨진 단어("구리보리").

2B distill 대비: 어색 ~12 vs ~6 → 약 2배. 품질은 2B distill에 못 미쳐 주력 대체 불가, 저사양 폴백 후보로만 유효. v2에서 자기비하 안전 확보 시 폴백 재검토 가치.

사용법 (transformers + peft, .venv-qlora = transformers git-main 5.14.dev)

python
from transformers import AutoModelForImageTextToText, AutoTokenizer
from peft import PeftModel
base = "neureps/Qwen3.5-0.8B-enko"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForImageTextToText.from_pretrained(base, dtype="float16", device_map="cuda")
model = PeftModel.from_pretrained(model, "neureps/warmly-qwen35-08b-enko-distill", subfolder="v1")
model = model.merge_and_unload()  # peft 병합은 MTP를 드롭 — 정상

함정: Qwen3.5(qwen3_5)는 transformers git-main(5.14.dev)부터만 로드 가능. 생성 시 enable_thinking=False 필수(안 끄면 전 토큰이 reasoning으로 소모). GGUF 변환은 --no-mtp + chkhsh 2ea57f…a677a→qwen35 패치.

라이선스

Apache-2.0 (베이스 Qwen3.5 상속). 학습 데이터는 Kanana-1.5-8B 교사 합성 — 실사용자 사진·개인정보 없음.


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

  • —louie/ ★배포 페르소나 어댑터(채택 e1) · louie-r25/ 리플레이 실험 · v3c-p5/ 5인 blend 실험 · `v3c-merged/` 배포 소형 병합 f16(재양자화 유일 원천).
  • —상세·매핑 = ondevice MODEL-REGISTRY.md, 데이터 = neureps/warmly-distill-data.