112 lines
5.2 KiB
Markdown
112 lines
5.2 KiB
Markdown
# FRANKENSTALLM 3B — Perplexity 평가 보고서
|
||
|
||
**작성일**: 2026-03-05
|
||
**모델**: FRANKENSTALLM 3B (사전학습 base, step ~3150 이후 완전학습)
|
||
**체크포인트**: `checkpoints/frankenstallm_3b_final/`
|
||
**평가 스크립트**: `eval/eval_ppl.py`
|
||
|
||
---
|
||
|
||
## 1. 개요
|
||
|
||
FRANKENSTALLM 3B 모델의 언어 모델링 성능을 4개 검증셋에 대해 sliding-window perplexity(PPL)로 평가하였다. 모든 평가는 BF16 정밀도, 시퀀스 길이 2048, stride 512 조건에서 수행되었다.
|
||
|
||
### 평가 설정
|
||
|
||
| 항목 | 값 |
|
||
|------|-----|
|
||
| 모델 타입 | FRANKENSTALLM 3B (base pretrain) |
|
||
| 정밀도 | bfloat16 |
|
||
| 시퀀스 길이 (seq_len) | 2048 |
|
||
| 슬라이딩 윈도우 stride | 512 |
|
||
| 배치 크기 | 32 |
|
||
| 평가 방식 | Sliding-window NLL → exp(avg_NLL) |
|
||
|
||
---
|
||
|
||
## 2. 평가 결과 테이블
|
||
|
||
| 검증셋 | PPL | BPT (Bits/Token) | 평가 토큰 수 | 소요 시간 |
|
||
|--------|-----|-----------------|------------|---------|
|
||
| **3b_val** (사전학습 혼합) | **5.709** | 2.5132 | 15,000,000 | 712.0초 |
|
||
| **korean_c4_val** (한국어 C4) | **5.717** | 2.5153 | 15,159,838 | 447.2초 |
|
||
| **korean_wiki_val** (한국어 위키피디아) | **11.836** | 3.5651 | 524,561 | 15.7초 |
|
||
| **korean_namuwiki_val** (나무위키) | **25.881** | 4.6938 | 2,166,179 | 63.9초 |
|
||
|
||
> BPT (Bits Per Token) = avg_NLL / ln(2). 낮을수록 압축 효율이 높음.
|
||
|
||
### 원시 데이터 요약
|
||
|
||
| 검증셋 | 파일 총 토큰 | 평가에 사용한 토큰 | avg NLL |
|
||
|--------|------------|-----------------|---------|
|
||
| 3b_val | 75,681,623 | 15,000,000 | 1.7420 |
|
||
| korean_c4_val | 15,159,838 | 15,159,838 | 1.7435 |
|
||
| korean_wiki_val | 524,561 | 524,561 | 2.4711 |
|
||
| korean_namuwiki_val | 2,166,179 | 2,166,179 | 3.2535 |
|
||
|
||
---
|
||
|
||
## 3. 1B 베이스라인과 비교
|
||
|
||
| 항목 | 1B 모델 | 3B 모델 | 비고 |
|
||
|------|---------|---------|------|
|
||
| C4 PPL (한국어) | **5.67** | **5.717** | 거의 동등 |
|
||
| 학습 데이터 | 단일 분포 집중 | ~40B tok 다양한 혼합 | 3B가 다양성 증가 |
|
||
| Training loss | 1.904 | ~1.74 (val NLL) | 3B가 실질 손실 낮음 |
|
||
| 모델 파라미터 | 1B | 3B | 3배 큰 모델 |
|
||
|
||
### 왜 3B C4 PPL이 1B(5.67)과 비슷한가?
|
||
|
||
이 결과는 언뜻 의외로 보일 수 있으나 다음 이유로 설명 가능하다.
|
||
|
||
1. **데이터 다양성의 트레이드오프**: 1B 모델은 한국어 C4 위주의 단일 분포 데이터로 학습되어 C4 분포에 과적합(in-distribution) 되어 있다. 반면 3B 모델은 위키, 나무위키, 뉴스, 커뮤니티 등 폭넓은 40B 토큰으로 학습되어 C4 특화 PPL이 미세하게 높아지는 것이 자연스럽다.
|
||
|
||
2. **실질 일반화 능력 향상**: 3B 모델의 avg NLL 1.7435는 다양한 도메인을 아우르는 더 나은 언어 이해를 반영한다. 단순히 C4에서의 PPL만 보면 비슷해 보이지만, 위키피디아(PPL 11.836)처럼 새로운 분포에서도 1B 대비 더 낮은 불확실성을 보일 가능성이 높다.
|
||
|
||
3. **모델 용량**: 파라미터 3배 증가로 동일 토큰 수 대비 학습 효율이 높으며, 같은 수준의 PPL을 달성하면서도 훨씬 넓은 지식 범위를 커버한다.
|
||
|
||
---
|
||
|
||
## 4. 나무위키 PPL이 높은 이유
|
||
|
||
나무위키 PPL 25.881은 다른 데이터셋 대비 크게 높다. 이는 모델 품질 문제가 아닌 **데이터 특성**에 기인한다.
|
||
|
||
| 원인 | 설명 |
|
||
|------|------|
|
||
| **비정형 마크업** | 나무위키 고유의 `[[ ]]`, `{{{ }}}`, `##` 등 위키 마크업이 일반 자연어 분포와 다름 |
|
||
| **밈·신조어·인터넷 용어** | "ㅋㅋ", "레전드", "핵꿀잼" 등 표준어 말뭉치에 없는 표현이 다수 |
|
||
| **극도로 혼합된 문체** | 백과사전체 + 구어체 + 영어 혼용이 동일 문서 내에 공존 |
|
||
| **OOV 토큰 분포** | 일반 토크나이저가 나무위키 특유의 표현을 비효율적으로 분절 |
|
||
| **학습 데이터 비율** | 사전학습 혼합에서 나무위키 비중이 낮았을 가능성 |
|
||
|
||
위키피디아(PPL 11.836)와의 차이(약 2.2배)가 이 효과를 정량적으로 보여준다.
|
||
|
||
---
|
||
|
||
## 5. SFT 진행 판단
|
||
|
||
### 기준: PPL < 5.0?
|
||
|
||
일반적으로 SFT 진행 전 base 모델의 PPL 기준을 5.0 미만으로 삼는 경우가 있다. 현재 3B 모델은 **5.709~5.717**로 이 기준을 미달한다.
|
||
|
||
### 그러나 종합적으로 SFT 진행이 적절한 이유
|
||
|
||
| 판단 근거 | 내용 |
|
||
|----------|------|
|
||
| **데이터 구성 차이** | 1B 모델의 PPL 5.67은 C4 단일 분포로 학습한 결과. 3B의 5.717은 훨씬 넓은 분포 기준으로 사실상 동등하거나 더 우수 |
|
||
| **학습 규모** | 40B 토큰 학습 완료. 충분한 사전학습 |
|
||
| **NLL 수준** | avg NLL 1.74는 건강한 언어 모델링 수준 |
|
||
| **생성 품질** | 온도 1.0에서 의미 있는 한국어 텍스트 생성 가능 (별도 보고서 참조) |
|
||
| **벤치마크** | MCQ 벤치마크에서 random baseline에 수렴하는 것은 base 모델 정상 동작 (별도 보고서 참조) |
|
||
|
||
**결론**: PPL 5.72는 절대값 기준으로는 5.0 미달이나, 학습 데이터 구성 차이를 감안하면 **양호한 수준**이다. SFT로 진행한다.
|
||
|
||
---
|
||
|
||
## 6. 평가 환경
|
||
|
||
- GPU: NVIDIA B200 × 1 (cuda:0)
|
||
- PyTorch: nv25.12 커스텀 빌드
|
||
- 평가 일시: 2026-03-05
|
||
- 총 평가 소요 시간: ~1,239초 (약 20.6분)
|