# FRANKENSTALLM 3B — 생성 품질 + 반복률 분석 보고서

**작성일**: 2026-03-05
**모델**: FRANKENSTALLM 3B (base pretrain, checkpoint-0057000)
**평가 스크립트**: `eval/generate.py`, `eval/analyze_3b_generation.py`

---

## 1. 개요

Base pretrain 모델의 한국어 텍스트 생성 능력과 반복 퇴화(repetition degeneration) 정도를 측정하였다. SFT 이전 기저 수준을 확인하여 SFT 단계의 개선 기대치를 수립하는 것이 목적이다.

### 평가 설정

| 항목 | 값 |
|------|-----|
| 프롬프트 수 | 10개 (다양한 주제) |
| 온도 | 0.0 (greedy), 0.7, 1.0 |
| max_new_tokens | 256 |
| top_p | 0.9, top_k: 50 |
| 반복률 그리드 | 72개 설정 × 3개 프롬프트 |

---

## 2. 온도별 생성 품질

### 2-1. 3-gram 반복률 요약

| 온도 | 평균 3-gram 반복률 | EOS 종료율 | 평가 |
|------|-------------------|-----------|------|
| **0.0 (greedy)** | **71.1%** | 0% | 심각한 반복 퇴화 |
| **0.7** | **40.5%** | 0% | 개선되나 여전히 높음 |
| **1.0** | **9.3%** | 0% | 다양성 양호, 일부 비문 |

### 2-2. 프롬프트별 상세 (greedy, temp=0.0)

| 프롬프트 | 3-gram 반복률 | 비고 |
|----------|-------------|------|
| 대한민국의 수도는 | 80.0% | "인천광역시는..." 반복 |
| 인공지능이란 | 31.8% | "SAT 시험일정" 반복 (데이터 오염 의심) |
| 한국의 전통 음식 중에서 | 81.5% | "갈비탕은 갈비에 갖은 양념을..." 반복 |
| 지구 온난화의 주요 원인은 | 92.1% | "온실가스 배출은..." 단문 반복 |
| 프로그래밍을 배우려면 | 87.3% | 반복 퇴화 |
| 조선시대에는 | 51.0% | 상대적 양호 |
| 물리학에서 에너지란 | 91.9% | 심각한 반복 |
| 한국어는 세계에서 | 22.2% | 가장 양호 |
| 경제 성장을 위해서는 | 88.3% | 반복 퇴화 |
| 우주 탐사의 역사를 보면 | 85.0% | 반복 퇴화 |

### 2-3. 프롬프트별 상세 (temp=0.7)

| 프롬프트 | 3-gram 반복률 | 비고 |
|----------|-------------|------|
| 대한민국의 수도는 | 91.2% | 온도 올려도 반복 유지 |
| 인공지능이란 | 64.3% | 부분 개선 |
| 한국의 전통 음식 중에서 | 37.3% | 의미 있는 개선 |
| 지구 온난화의 주요 원인은 | 57.8% | 부분 개선 |
| 프로그래밍을 배우려면 | 9.4% | 크게 개선 |
| 조선시대에는 | 73.6% | 악화 (확률적 편차) |
| 물리학에서 에너지란 | 7.8% | 크게 개선 |
| 한국어는 세계에서 | 3.3% | 거의 무반복 |
| 경제 성장을 위해서는 | 34.8% | 의미 있는 개선 |
| 우주 탐사의 역사를 보면 | 26.0% | 개선 |

### 2-4. 프롬프트별 상세 (temp=1.0)

| 프롬프트 | 3-gram 반복률 | 비고 |
|----------|-------------|------|
| 대한민국의 수도는 | 0.0% | 무반복 |
| 인공지능이란 | 7.3% | 양호 |
| 한국의 전통 음식 중에서 | 0.8% | 양호 |
| 지구 온난화의 주요 원인은 | 27.7% | 일부 반복 잔존 |
| 프로그래밍을 배우려면 | 14.6% | 양호 |
| 조선시대에는 | 0.0% | 무반복 |
| 물리학에서 에너지란 | 3.0% | 양호 |
| 한국어는 세계에서 | 36.4% | 이 프롬프트만 악화 |
| 경제 성장을 위해서는 | 2.4% | 양호 |
| 우주 탐사의 역사를 보면 | 0.8% | 양호 |

---

## 3. 반복률 파라미터 그리드 탐색

72개 파라미터 설정(temperature × repetition_penalty × no_repeat_ngram_size × top_p)에 대해 3개 프롬프트로 탐색하였다.

### 3-1. Best 설정 (3-gram 반복률 0%)

| 설정 | temp | rep_penalty | ngram_block | top_p |
|------|------|-------------|-------------|-------|
| t0.7_r1.0_ng3_tp0.9 | 0.7 | 1.0 | 3 | 0.9 |
| t0.7_r1.0_ng3_tp0.95 | 0.7 | 1.0 | 3 | 0.95 |
| t0.7_r1.0_ng4_tp0.9 | 0.7 | 1.0 | 4 | 0.9 |
| t0.7_r1.1_ng3_tp0.9 | 0.7 | 1.1 | 3 | 0.9 |
| t0.7_r1.2_ng0_tp0.9 | 0.7 | 1.2 | - | 0.9 |

> `no_repeat_ngram_size=3`만으로도 모든 온도에서 3-gram 반복률 0% 달성

### 3-2. Worst 설정 (높은 반복률)

| 설정 | 3-gram 반복률 | temp | rep_penalty | ngram_block | top_p |
|------|-------------|------|-------------|-------------|-------|
| t0.7_r1.0_ng0_tp0.95 | 18.7% | 0.7 | 1.0 | - | 0.95 |
| t0.7_r1.0_ng0_tp0.9 | 10.8% | 0.7 | 1.0 | - | 0.9 |
| t1.0_r1.0_ng0_tp0.95 | 7.6% | 1.0 | 1.0 | - | 0.95 |

### 3-3. 핵심 발견

1. **`no_repeat_ngram_size=3`가 가장 효과적**: 온도/rep_penalty 무관하게 즉시 반복 제거
2. **`repetition_penalty=1.2`도 효과적**: ngram blocking 없이도 반복률 0% 달성 (단, top_p=0.9 필요)
3. **EOS 종료율은 모든 설정에서 0%**: base model은 EOS를 학습하지 않음 — SFT에서 해결 필수
4. **top_p=0.95 vs 0.9**: top_p가 높을수록 반복률 미세하게 증가 (더 많은 토큰 후보)

---

## 4. 생성 샘플 (Best/Worst)

### 4-1. Worst 샘플 (greedy, 심각한 반복)

**프롬프트**: "지구 온난화의 주요 원인은"
> "온실가스 배출이다. 온실가스 배출은 지구온난화의 주요 원인이다. 온실가스 배출은 지구온난화의 주요 원인이다. 온실가스 배출은..."
>
> (3-gram 반복률 92.1%, 동일 문장 무한 반복)

**프롬프트**: "대한민국의 수도는" (greedy)
> "서울이 아닌 인천이다. 인천광역시(仁川廣域市)는 대한민국 인천광역시의 행정을 총괄하는 광역자치단체이다. 인천광역시(仁川廣域市)는..."
>
> (3-gram 반복률 80%, 사실 오류 + 반복 퇴화)

### 4-2. Best 샘플 (temp=1.0)

**프롬프트**: "조선시대에는" (3-gram 반복률 0%)
**프롬프트**: "대한민국의 수도는" (3-gram 반복률 0%)
**프롬프트**: "우주 탐사의 역사를 보면" (3-gram 반복률 0.8%)

> temp=1.0에서 다양하고 문법적으로 올바른 한국어 생성 확인

---

## 5. 1B 베이스라인과 비교

| 지표 | 1B (SFT 후) | 3B Base | 비교 주의사항 |
|------|------------|---------|-------------|
| Greedy 3-gram 반복률 | 30.7% | 71.1% | **SFT vs Base** — 직접 비교 불가 |
| rep=1.1 3-gram 반복률 | 18% | ~0% (ng=3) | ng=3 적용 시 3B가 우수 |
| EOS 종료율 | 60% | 0% | 1B는 SFT 후 수치 |

> 1B의 30.7%는 SFT 이후 측정값이다. SFT 전 1B의 greedy 반복률은 현 3B와 유사하거나 더 높았을 것으로 추정된다.

---

## 6. SFT 진행 판단 (생성 품질 기준)

| 기준 | 판정 |
|------|------|
| temp=1.0에서 의미 있는 한국어 생성 | ✅ 가능 (9.3% 반복률) |
| no_repeat_ngram_size=3으로 반복 제거 가능 | ✅ 확인됨 |
| 완전한 비문/랜덤 토큰 출력 여부 | ✅ 없음 — 한국어 문법 유지 |
| 사실 정확성 | ⚠️ base model이므로 사실 오류 존재 (예: 수도=인천) |

**결론**: 생성 품질 관점에서 SFT 진행에 문제 없음. 반복 퇴화는 base model의 전형적 특성이며, SFT와 디코딩 전략(ngram blocking)으로 해결 가능.

---

## 7. 권장 추론 파라미터 (base model 실험용)

```python
generation_config = {
    "temperature": 0.9,
    "top_p": 0.9,
    "top_k": 50,
    "no_repeat_ngram_size": 3,
    "repetition_penalty": 1.1,
    "max_new_tokens": 512,
}
```

---

## 8. 평가 데이터 파일

| 파일 | 설명 |
|------|------|
| `eval/outputs/3b_generation_results.json` | 10 프롬프트 × 3 온도 생성 결과 |
| `eval/outputs/3b_repetition_analysis.json` | 72 설정 × 3 프롬프트 반복률 분석 |

---

*보고서 작성: 2026-03-05*
