5.8 KiB
5.8 KiB
3B 사전학습 데이터 파이프라인
작성일: 2026-02-27
프로젝트: /PROJECT/0325120031_A/ghong/taketimes/llm-bang/
1. 현재 데이터 현황
토큰화 완료 (즉시 사용 가능)
| 파일 | 크기 | 토큰 수 |
|---|---|---|
| korean_c4_train.bin | 15 GB | 7.56B |
| korean_namuwiki_train.bin | 2.1 GB | 1.08B |
| korean_wiki_train.bin | 500 MB | 262M |
| korean_train.bin (위 3개 병합) | 17 GB | 9.0B |
| train.bin (영어 기타) | 1.2 GB | 606M |
즉시 사용 가능: ~9.6B 토큰
미토큰화 원본 (korean_extra/)
| 소스 | 디스크 크기 | 형식 | 예상 토큰 수 | 비고 |
|---|---|---|---|---|
| CulturaX (ko) | 60 GB (32 parquet) | parquet, text 컬럼 |
~11.6B | 고품질 웹 + mC4 중복제거 |
| cc100 (ko) | 14 GB xz → 54 GB text | xz 압축 텍스트 | ~13.5B | 줄 단위 텍스트 |
| HPLT (en-ko) | 23 GB (193 parquet) | 병렬 코퍼스, tgt_doc.sentences |
~3.7B | 한국어 측만 추출 필요 |
| OSCAR (ko) | 9.2 GB (27 parquet) | 중첩 구조, text[].text |
~2.0B | 웹 텍스트 |
| korean_webtext | 4.2 GB (18 parquet) | parquet | ~1.5B | 한국어 웹 |
| korean_textbooks | 6.4 GB | MMLU 스타일 parquet | ~0.5B | 교과서/시험 (구조적) |
| finepdfs_edu_ko | 2.9 GB (parquet) | parquet | ~0.8B | 교육 PDF |
| namuwiki_extracted | 2.2 GB | 텍스트 | ~0.6B | 이미 namuwiki_train.bin과 중복 가능 |
| kovast | 449 MB | - | ~0.1B | 소량 |
| korean_safe_conv | 51 MB | jsonl | ~15M | 대화 데이터 |
| evol_instruct_ko | 144 MB | - | ~40M | SFT용, pretrain 부적합 |
미토큰화 총 예상: ~34B 토큰 전체 합계: ~43B 토큰 (중복 제거 전)
2. 3B 모델 학습 목표
Chinchilla 스케일링 법칙에 따른 최적:
- 최소: 3B × 20 = 60B 토큰
- 최적: 3B × 50 = 150B 토큰
- 현실적 목표: 가용 데이터
35B 토큰 (중복 제거 후) → **23 epoch 반복으로 60-100B 토큰**
데이터 믹싱 전략
| 카테고리 | 소스 | 비율 | 이유 |
|---|---|---|---|
| 고품질 웹 | CulturaX | 35% | 이미 중복 제거된 고품질 |
| 대규모 웹 | cc100 + mC4(기존) | 35% | 양적 확보 |
| 백과사전 | 위키 + 나무위키 | 10% | 사실 지식 |
| 보조 웹 | OSCAR + korean_webtext + HPLT | 15% | 다양성 |
| 전문 도메인 | textbooks + finepdfs | 5% | 교육 품질 |
3. 데이터 품질 필터링 계획
Phase 1: 기본 필터 (빠름, 1-2시간)
- 언어 필터:
langdetect로 한국어 비율 < 50% 문서 제거- HPLT: 병렬 코퍼스라 한국어 추출만 하면 됨
- cc100: 이미 한국어지만 혼입 확인
- 길이 필터: 50자 미만 문서 제거
- 중복 줄 제거: 같은 줄 5회 이상 반복하는 문서 제거
Phase 2: MinHash 중복 제거 (4-8시간)
도구: datasketch (pip install datasketch)
방법: 5-gram MinHash, 128 permutations
임계값: Jaccard > 0.8 → 중복
예상 제거율: 15-25% (특히 cc100 + CulturaX 간)
- CulturaX는 이미 내부 중복 제거됨 → 다른 소스와의 교차 중복만 체크
- 72코어 병렬 처리로 ~4시간 예상
Phase 3: Perplexity 필터 (선택, 12-24시간)
- 현재 1B 모델로 각 문서 perplexity 계산
- 하위 5% (너무 쉬움 = 템플릿/반복) + 상위 5% (노이즈) 제거
- 권장: 3B 첫 학습 후 2차 학습 시 적용 (시간 절약)
4. 토큰화 파이프라인
우선순위 및 예상 시간 (72코어 기준)
| 순위 | 소스 | 예상 시간 | 이유 |
|---|---|---|---|
| 1 | CulturaX | 3-4시간 | 60GB parquet, 가장 크고 고품질 |
| 2 | cc100 | 2-3시간 | xz 해제 30분 + 토큰화 2시간 |
| 3 | OSCAR | 1시간 | 9.2GB, 구조 파싱 필요 |
| 4 | korean_webtext | 30분 | 4.2GB |
| 5 | HPLT (Korean) | 1-2시간 | 한국어 추출 + 토큰화 |
| 6 | textbooks + finepdfs | 30분 | 소량 |
총 예상: 8-12시간 (병렬 처리 시)
5. 타임라인
최소 시작 방안 (즉시, 0시간)
- 기존
korean_train.bin(9B 토큰)으로 3B 학습 시작 가능 - 1 epoch에 부족하지만 학습 코드 검증 + 초기 학습에는 충분
Phase A: 빠른 확장 (8-12시간)
- CulturaX 토큰화 (3-4시간)
- cc100 해제 + 토큰화 (2-3시간, CulturaX와 병렬 가능)
- 기타 소스 토큰화 (2시간)
- 병합 → ~35B 토큰
Phase B: 품질 필터링 (추가 4-8시간)
- 기본 필터 (1-2시간)
- MinHash 중복 제거 (4-8시간)
- 최종 병합 → ~28-30B 토큰 (깨끗한 데이터)
Phase C: 학습
- 30B 토큰 × 2 epoch = 60B 토큰 (Chinchilla 최소)
- 또는 30B × 3 epoch = 90B 토큰 (안전)
6. 파일 구조 (최종)
data/
├── korean_train.bin # 기존 9B (c4+wiki+namuwiki)
├── korean_val.bin
├── culturax_train.bin # ~11.6B
├── culturax_val.bin
├── cc100_train.bin # ~13.5B
├── cc100_val.bin
├── oscar_train.bin # ~2B
├── oscar_val.bin
├── webtext_train.bin # ~1.5B
├── webtext_val.bin
├── hplt_ko_train.bin # ~3.7B
├── hplt_ko_val.bin
├── extra_train.bin # textbooks + finepdfs + kovast
├── extra_val.bin
├── merged_3b_train.bin # 전체 병합 (~35B)
└── merged_3b_val.bin
7. 요약
| 항목 | 값 |
|---|---|
| 즉시 사용 가능 토큰 | 9.6B |
| 추가 토큰화 후 | ~35B (중복 제거 전) |
| 중복 제거 후 예상 | ~28-30B |
| 3B Chinchilla 최소 | 60B (2 epoch) |
| 데이터 준비 최소 시간 | 0시간 (기존 데이터 사용) |
| 전체 파이프라인 완료 | 12-20시간 |
| 학습 시작 추천 | 기존 9B로 즉시 시작 + CulturaX 병렬 준비 |