warmly-nmt-nllb600-enko — EN→KO 댓글 번역 파인튜닝 (B안 v2, 게이트 경계)
⚠️ 비상업 라이선스(CC-BY-NC-4.0, NLLB 상속) — 상용 배포 불가. 연구·비교 실측용입니다.
NLLB-200-distilled-600M을 Warmly(온기)의 B안(0.8B 영어 댓글 생성 + 소형 번역기) 트랙에서 EN→KO 감성 댓글 도메인으로 파인튜닝한 모델입니다 (2026-07-15, train 1410 / valid 300, 6 epoch, 교사 Qwen3-8B 평이 번역, 이모지 마스킹 파이프라인).
결과 요약 (testset40, chrF vs 8B 참조)
- valid chrF 36.2 → 40.1 / testset40 전체 33.7, 실분포 36.3, 적대적 36.7
- 파인튜닝이 고친 것: 제로샷 띄어쓰기 버그 소멸, 감탄문 누락 복원("So fluffy!!"→"너무 부드럽다!!"), 이모지 완벽 보존(마스킹→재부착 래퍼), 자연성 8B 근접, 자기비하 답글 안전
- 못 고친 것 (600M 어휘력 천장): broth→소금, whiskers→머리 등 흔한 도메인어 오역 잔존 — 게이트(오역 ≤2/40) 전체 미달, 실분포 경계(~2-3)
- 제로샷 선발전에서 NLLB-1.3B가 이 어휘들을 이미 맞힘(whiskers→콧수염) → 1.3B 파인튜닝이 어휘 오역 해소 유력하나 스택 ~1410MB로 A안(1201MB) 초과 — 보류 상태
사용법
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("neureps/warmly-nmt-nllb600-enko", src_lang="eng_Latn")
model = AutoModelForSeq2SeqLM.from_pretrained("neureps/warmly-nmt-nllb600-enko")
ids = tok("So fluffy!! I love this cat.", return_tensors="pt")
out = model.generate(**ids, forced_bos_token_id=tok.convert_tokens_to_ids("kor_Hang"))
이모지는 번역 전 placeholder로 분리 후 재부착해야 합니다(NMT 공통 — 마스킹 래퍼는 qwen-prune 프로젝트 nmt/emoji_util.py).
계보
KoBART(실패) → SMaLL-100 파일럿(가설 입증, 게이트 미달) → NLLB-600M v2 (이 모델) → NLLB-1.3B(보류). 전 이력: warmly-nmt-small100-enko, warmly-nmt-kobart-enko.
파일
best/ 체크포인트: model.safetensors (2.4GB, fp32) + NLLB 토크나이저 일체.