# 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 토큰 (중복 제거 후) → **2~3 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시간) 1. CulturaX 토큰화 (3-4시간) 2. cc100 해제 + 토큰화 (2-3시간, CulturaX와 병렬 가능) 3. 기타 소스 토큰화 (2시간) 4. 병합 → ~35B 토큰 ### Phase B: 품질 필터링 (추가 4-8시간) 1. 기본 필터 (1-2시간) 2. MinHash 중복 제거 (4-8시간) 3. 최종 병합 → ~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 병렬 준비 |