← 목록
기타 2026-07-18 6KB 읽기 6분

크라우니 서비스 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,5344,651101
10MB508,44554,754~3,794
100MB5,084,455262,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/자6B6~9B조사·활용 변형 1.3~1.5배
영어ASCII 1B/자2B4~8B스테밍 시 0.6~0.7배 축소
중/일(CJK)3B/자6B6~9B중국어 무굴절 ~1.0 / 일본어 혼용 ~1.1
유럽어(스/프)1~2B/자2~4B5~9B중간 굴절 ~1.2
독일어1~2B/자2~4B8~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|logpfeat|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)
연결508K1.22M1.75M
어휘55K99K127K
서비스(현밀도)3.8K9.1K13K
  • 효율성 계획: (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/서비스분류_코어.한선