크라우니 서비스 SLM 용량 예측 — 한국어 기준 → 영어/외국어
2026-07-18 실측 기반. NB(SLM) 모델 서비스NB모델.psv 실측 → 10MB/100MB 어휘·연결 예측 + 언어별 효율.
1. 현재 실측 (기준점)
- 모델 279,114B (273KB) · 서비스 101 · 연결(F행) 13,534 · 유니크 어휘 4,651 · 예제 5,659
- 연결당 21B · 피처 평균 2.3자(5.9B) · 서비스당 134연결 · 예제당 연결증가 2.4
- 구조:
P|서비스|prior|unseen (101행) + F|서비스|피처|logprob (13,534행). F행이 용량 지배.
- "연결" = (서비스, 피처) 쌍 = 어휘와 개념의 엣지. "어휘" = 유니크 피처(단어+bigram).
2. 한국어 용량 예측 (Heaps 법칙 β=0.68)
| 용량 | 연결(F행) | 어휘(유니크 피처) | 서비스(현밀도) |
|---|
| 273KB(현재) | 13,534 | 4,651 | 101 |
| 10MB | 508,445 | 54,754 | ~3,794 |
| 100MB | 5,084,455 | 262,073 | ~37,943 |
- 서비스 수는 "현 밀도(134연결/서비스)" 유지 가정. 대안: 서비스 수 유지하고 도메인 심화(서비스당 연결 5,000+ → 정밀 뉘앙스).
- 어휘는 Heaps 법칙(V=K·n^β, β=0.68 한국어 문헌값)로 sublinear 증가 — 연결 37배↑ 시 어휘 12배↑.
3. 언어별 바이트 효율
연결행 =
F|svc|피처|logprob. 고정 오버헤드(
F|·svc명 8B·
|·logprob 4B·개행) ≈
15B가 지배, 피처 문자열은 2~9B.
| 언어 | 문자 인코딩 | bigram 피처 | 단어 피처 | 어휘 팽창 |
|---|
| 한국어 | UTF-8 3B/자 | 6B | 6~9B | 조사·활용 변형 1.3~1.5배 |
| 영어 | ASCII 1B/자 | 2B | 4~8B | 스테밍 시 0.6~0.7배 축소 |
| 중/일(CJK) | 3B/자 | 6B | 6~9B | 중국어 무굴절 ~1.0 / 일본어 혼용 ~1.1 |
| 유럽어(스/프) | 1~2B/자 | 2~4B | 5~9B | 중간 굴절 ~1.2 |
| 독일어 | 1~2B/자 | 2~4B | 8~15B | 합성어 ~1.6배 팽창 |
4. 언어별 동일 MB당 개념 커버 배율 (한국어=1.0)
- 영어 ~1.5×: ASCII 바이트 효율 + 스테밍 어휘축소. 단 char-bigram 의존 시 효율 더↑.
- 한국어 1.0× (기준): 형태소 밀집(정보량↑)이나 조사·활용 변형이 어휘 팽창.
- CJK ~1.1×: 3B/자로 무겁지만 무굴절(중국어)로 연결수 절약.
- 유럽어 ~1.2×, 독일어 ~0.8×(합성어 팽창).
결론: 연결당 바이트는 고정 오버헤드가 지배해 언어차 ±15%로 작다.
진짜 차이는 "같은 개념 커버에 필요한 연결 수" — 굴절/합성 형태론이 좌우. 영어가 한국어보다 동일 용량서 ~1.5배 넓은 개념 커버(스테밍+ASCII), 한국어는 형태소 정보밀집이 강점이나 변형 어휘가 용량을 소비.
5. 실무 함의
- 10MB면 현 101서비스 도구를 수천 서비스 or 도메인 정밀 뉘앙스로 확장 가능(한국어).
- 다국어 확장 시 영어는 한국어 대비 용량 여유 ~1.5배 — 같은 예산서 더 넓은 커버.
- 오버헤드 절감 여지: svc명 정수 ID화(8B→2B), logprob 양자화(4B→1B) → 연결당 21B→~9B(2.3배 밀도↑).
6. 밀도 최적화 (실측 검증)
- 정수ID + 양자화 + 피처그룹핑:
F|svc명|feat|logp → feat|id:qlp,id:qlp(피처키 그룹핑, svc명 8B→id 1~2B, logp 4B→양자화 1B). 헤더 Q|lo|hi로 역양자.
- 실측: 20.6B/연결 → 8.6B/연결 = 밀도 2.40배. 압축 vs 비압축 예측 100% 일치(양자화 손실 0%) — 256레벨(범위 381 / 256 ≈ 1.5단위)이 argmax 불변.
- Python 검증·학습파이프 통합(tools/서비스NB학습.py가 서비스NB압축.psv+서비스ID.psv 생성). 한선씨 이식은 대기(피처키 스코어링 미세버그).
- 추가 여지: 저정보 bigram 프루닝(-30% 연결→6.0B/연결), 공유 bigram 사전 인덱스화(피처열 6B→2B→~6.5B/연결).
7. 10MB 계획 (압축 8.6B/연결 기준)
| 항목 | 비압축(20.6B) | ★압축(8.6B) | +프루닝(6.0B) |
|---|
| 연결 | 508K | 1.22M | 1.75M |
| 어휘 | 55K | 99K | 127K |
| 서비스(현밀도) | 3.8K | 9.1K | 13K |
- 효율성 계획: (1) 압축 포맷 기본 채택(2.40배) (2) 재학습 주기(6h)마다 압축 재생성 (3) 프루닝 게이트(빈도<2 bigram 제거)로 노이즈+용량 동시 절감.
- 밀도 계획: 압축 8.6B → 프루닝 6.0B → 공유사전 ~5B까지. 목표 10MB에서 어휘 10만+·서비스 1만+ 또는 현 101서비스 도메인 100배 심화.
- 최적화 계획: logprob 8bit 양자화(현재)→가변길이(고빈도 4bit), svc ID varint, bigram 사전 델타인코딩.
- 검증 방법: 코퍼스 N배 확장→압축모델 크기 선형(8.6B/연결 불변) 확인→held-out 정확도 유지 확인(압축 무손실 이미 검증).
8. 100MB 계획 (압축)
- 연결 12.2M · 어휘 474K · 서비스 90K(현밀도) 또는 소수 도메인 초정밀.
- 이 규모면 크라우니 전 생태계(235+ 서비스) × 다의도 × 다국어를 여유 커버.
- 100MB 로드맵: 10MB 검증 후 → 코퍼스 실사용 로그 누적(6h 재학습 래칫)으로 유기적 성장 → 프루닝+공유사전으로 유효밀도 5B → 100MB에서 어휘 60만+.
- 다국어 배분: 100MB를 한국어 60 + 영어 25(효율 1.5배라 실질 커버 한국어 40MB 상당) + 기타 15로 분할 시 5개 언어권 커버 가능.
관련 파일
- 모델:
/Users/ef/crowny-butler/data/서비스/서비스NB모델.psv
- 학습:
tools/서비스NB학습.py · 재학습주기: LaunchAgent org.crowny.서비스재학습(6h)
- 정본 로직:
libs/서비스분류_코어.한선