Files
frankenstallm/reports/2026-03-05_GENERATION_QUALITY.md
ModelHub XC d4abdb70fa 初始化项目,由ModelHub XC社区提供模型
Model: pathcosmos/frankenstallm
Source: Original Platform
2026-07-14 04:21:16 +08:00

189 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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*