frankenstallm / source /eval /plan /3b_data_pipeline.md
pathcosmos's picture
Upload folder using huggingface_hub (#29)
5b1ff4d

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μ‹œκ°„)

  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 병렬 μ€€λΉ„