๐ฆธ ์ ์คํฐ์ค๋ฆฌ๊ทธ ํ 2: "1B๋ ๋ฒ๋ ค๋ผ, 3B๊ฐ ๋ต์ด๋ค"
๋ฐ์ดํฐ/์ค์ผ์ผ ์ ๋ฌธ๊ฐ ๋ถ์ ๋ณด๊ณ ์ 2026-02-27 04:18 KST
ํต์ฌ ์ฃผ์ฅ
1B ๋ชจ๋ธ์์ ORPO/DPO๋ฅผ ์๋ํ๋ ๊ฒ์ ์๊ฐ ๋ญ๋น๋ค. 3B ์ฌ์ ํ์ต์ผ๋ก ์ ํํ๋ผ.
1. ํ์ฌ 150B ํ ํฐ ๋ฐ์ดํฐ๋ก 3B ํ์ต์ด ๋น์ฅ ๊ฐ๋ฅํ๊ฐ?
๋ฐ์ดํฐ ํํฉ (์ค์ธก)
| ์์ค | ํฌ๊ธฐ | ์ํ | ์ถ์ ํ ํฐ ์ |
|---|---|---|---|
| korean_train.bin (ํ ํฐํ ์๋ฃ) | 17.8 GB | โ ์ฆ์ ์ฌ์ฉ | 8.91B tokens |
| โ korean_c4_train.bin | 15.1 GB | โ | 7.56B |
| โ korean_namuwiki_train.bin | 2.2 GB | โ | 1.08B |
| โ korean_wiki_train.bin | 0.5 GB | โ | 0.26B |
| culturax_ko (parquet, ๋ฏธํ ํฐํ) | 60 GB | โ ๏ธ ํ ํฐํ ํ์ | ~30-40B |
| hplt_ko (๋ฏธํ ํฐํ) | 23 GB | โ ๏ธ ํ ํฐํ ํ์ | ~12-15B |
| cc100_ko (xz ์์ถ) | 14 GB | โ ๏ธ ์์ถํด์ +ํ ํฐํ ํ์ | ~8-10B |
| oscar_ko | 9.2 GB | โ ๏ธ ํ ํฐํ ํ์ | ~5-6B |
| korean_textbooks | 6.4 GB | โ ๏ธ ํ ํฐํ ํ์ | ~3-4B |
| ๊ธฐํ (finepdfs, webtext ๋ฑ) | ~8 GB | โ ๏ธ | ~4-5B |
| ํฉ๊ณ (korean_extra ์ ์ฒด) | 123 GB | ~70-80B tokens | |
| ์ด๊ณ (๊ธฐ์กด + extra) | ~140 GB | ~80-90B tokens |
๊ฒฐ๋ก : ์ฆ์ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ 8.91B tokens
- 3B ๋ชจ๋ธ์ Chinchilla ์ต์ ํ ํฐ ์: 3B ร 20 = 60B tokens
- ํ์ฌ ํ ํฐํ ์๋ฃ ๋ฐ์ดํฐ: 8.91B tokens โ Chinchilla์ **15%**์ ๋ถ๊ณผ
- korean_extra๋ฅผ ์ ๋ถ ํ ํฐํํ๋ฉด: ~80-90B tokens โ Chinchilla์ 133-150% โ ์ถฉ๋ถ
ํ ํฐํ ์์ ํ์๋
ํ์ ์์
:
1. culturax_ko parquet โ txt โ tokenize: ~4-6์๊ฐ (๊ฐ์ฅ ํผ, 60GB)
2. hplt_ko: ~2-3์๊ฐ
3. cc100_ko xz ์์ถ ํด์ + tokenize: ~2์๊ฐ
4. oscar_ko, textbooks ๋ฑ: ~1-2์๊ฐ
5. ๋ณํฉ (merge_bins.py): ~30๋ถ
์ด ์์: ์ฝ 8-12์๊ฐ (๋ณ๋ ฌ ์ฒ๋ฆฌ ์)
โก ๋์: 8.91B tokens๋ก ๋จผ์ ์์
Chinchilla ์ต์ ์ ์๋์ง๋ง, LLaMA ๋ ผ๋ฌธ ์ ๊ทผ๋ฒ ์ฐธ๊ณ :
- LLaMA-7B๋ 1T tokens (143ร ๋ชจ๋ธ ํฌ๊ธฐ) ํ์ต
- LLaMA-1.3B๋ 1T tokens ํ์ต โ over-train์ ์์ ๋ชจ๋ธ์์ ์ ๋ฆฌ
- 3B + 8.91B tokens = 3ร over-train โ ์ต์ ์ ์๋์ง๋ง ์๋ฏธ ์๋ ์์
- 4 epoch (35.6B tokens) ์ค์ ์ ์ฌ์ ํ ์ ํจ โ ๋์ผ ๋ฐ์ดํฐ 4ํ ๋ฐ๋ณต
๊ฒฐ๋ก : ํ์ฌ korean_train.bin 8.91B tokens์ผ๋ก 3B ํ์ต ์ฆ์ ์์ ๊ฐ๋ฅ. ๋ณ๋ ฌ๋ก korean_extra ํ ํฐํ ์งํํ๋ฉด์ ๋์ค์ ๋ ํฐ ๋ฐ์ดํฐ๋ก ์ฌํ์ต.
2. ๋ ํฐ ๋ชจ๋ธ์ผ์๋ก ๋ ์ข์ ๋ฐ์ดํฐ๊ฐ ํ์ํ๊ฐ?
ํ์ ์ ๊ทผ๊ฑฐ: YES
| ๋ ผ๋ฌธ | ํต์ฌ ๋ฐ๊ฒฌ |
|---|---|
| Scaling Data-Constrained LMs (Muennighoff 2023) | ๊ฐ์ ๋ฐ์ดํฐ ๋ฐ๋ณต ์ ํฐ ๋ชจ๋ธ์ด ๋ ๋นจ๋ฆฌ ๊ณผ์ ํฉ |
| D4 (Tirumala 2023) | ๋ฐ์ดํฐ ํ์ง โ ์ ํฐ ๋ชจ๋ธ์ด ๋ ํฐ ์ด๋ |
| Phi-1.5 (Microsoft 2023) | 1.3B๊ฐ "๊ต๊ณผ์ ์์ค" ๋ฐ์ดํฐ๋ก 10ร ํฐ ๋ชจ๋ธ ๋ฅ๊ฐ |
| FineWeb (HuggingFace 2024) | ํํฐ๋ง ๊ฐ๋ โ โ ํฐ ๋ชจ๋ธ์์ ๋ ํฐ ์ฑ๋ฅ ํฅ์ |
ํ์ฌ korean_train.bin 8.91B tokens ํ์ง ํ๊ฐ
๊ตฌ์ฑ ๋ถ์:
- korean_c4 (7.56B, 85%): mC4 ํ๊ตญ์ด โ ์น ํฌ๋กค๋ง, ๋ ธ์ด์ฆ ํฌํจ
- namuwiki (1.08B, 12%): ์ํค ์คํ์ผ โ ์ค๊ฐ ํ์ง
- wikipedia (0.26B, 3%): ๊ณ ํ์ง
๋ฌธ์ ์ :
- 85%๊ฐ mC4 ์น ํฌ๋กค๋ง โ ์ค๋ณต, ๊ด๊ณ , ํ ํ๋ฆฟ ํ ์คํธ ๋ค๋ ํฌํจ
- MinHash ์ค๋ณต์ ๊ฑฐ ์ ์ฉ ์ฌ๋ถ ๋ถ๋ช ํ (build_korean_dataset.sh์ dedup ๋จ๊ณ ์์)
- Perplexity ํํฐ ๋ฏธ์ ์ฉ (์คํฌ๋ฆฝํธ์ ํํฐ๋ง ๋ก์ง ์์)
korean_extra ๋ฐ์ดํฐ๋ ๋์ผ ๋ฌธ์
- cc100_ko (14GB): ์น ํฌ๋กค๋ง, ๋ ธ์ด์ฆ ์๋น
- culturax_ko (60GB): CulturaX๋ ์ผ๋ถ ํํฐ๋ง ๋จ, ๊ทธ๋ฌ๋ ํ๊ตญ์ด ํ์ง์ ๊ฒ์ฆ ์ ๋จ
- hplt_ko (23GB): HPLT ํ๋ก์ ํธ โ ์๋ ์์ง, ํ์ง ํผ์ฌ
3B ์ฌ์ ํ์ต ์ ๋ฐ์ดํฐ ์ ์ ๊ฐ ํ์ํ ์ด์
- 1B โ 8.91B tokens (4 epoch) ํ์ต ์: ๋ชจ๋ธ ์ฉ๋ < ๋ฐ์ดํฐ ๋ ธ์ด์ฆ โ ์ผ๋ถ ๋ ธ์ด์ฆ ๋ฌด์๋จ
- 3B โ ๊ฐ์ ๋ฐ์ดํฐ: ๋ ํฐ ์ฉ๋ โ ๋ ธ์ด์ฆ๊น์ง ํ์ต โ downstream ํ์ง ์ ํ
- ํ์ ์ ์ ๋จ๊ณ:
- MinHash ์ค๋ณต์ ๊ฑฐ (์์ 10-15% ์ค๋ณต ์ ๊ฑฐ)
- Perplexity ํํฐ (์์/ํ์ 5% ์ ๊ฑฐ)
- ์ธ์ด ๊ฐ์ง ํํฐ (๋นํ๊ตญ์ด ์ ๊ฑฐ)
BUT: ์ ์ ๋ ํ ํฐํ์ ๋ณ๋ ฌ ์ํ ๊ฐ๋ฅ. ํ์ต ์์์ ๋ง์ ์ด์ ๊ฐ ์๋.
3. SFT ๋ฐ์ดํฐ ์ฌ์ค๊ณ ํ์์ฑ
ํ์ฌ SFT ๋ฐ์ดํฐ: 159K (์ค์ 188K) ์ํ
3B์์ 161K SFT๊ฐ ์ถฉ๋ถํ๊ฐ?
| ๋ชจ๋ธ ๊ท๋ชจ | ๋ํ ์ฌ๋ก | SFT ๋ฐ์ดํฐ ์ | ๋น์จ |
|---|---|---|---|
| 1B (ํ์ฌ) | ํ์ฌ ๋ชจ๋ธ | 161K | - |
| 3B | StableLM-3B | 300K-500K | 2-3ร |
| 7B | LLaMA-2-Chat | 100K+ (๊ณ ํ์ง) | - |
| 7B | Alpaca | 52K | - |
| 13B | WizardLM | 250K | - |
| 65B | LIMA | 1K (๊ทน๊ณ ํ์ง) | - |
ํต์ฌ ํฌ์ธํธ:
- LIMA ๊ตํ: ํ์ง >>> ์. 1K ๊ณ ํ์ง์ด 52K ์ ํ์ง ์๋
- 3B๋ 1B๋ณด๋ค ๋ ๋ณต์กํ ํจํด ํ์ต ๊ฐ๋ฅ โ ๋ ๋ค์ํ ๋๋ฉ์ธ SFT ํ์
- ํ์ฌ 161K์ 3B SFT์ ์์ ์ผ๋ก ์ถฉ๋ถ (7B Alpaca๊ฐ 52K)
- ๊ทธ๋ฌ๋ ํ์ง ํํฐ๋ง ํ 50-80K ๊ณ ํ์ง๋ง ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ๊ณผ์ (Less is More)
๊ณ ํ์ง ๋ฐ์ดํฐ ์ถ๊ฐ ์์ง ๋ฐฉํฅ
hPark/orca-ko(~200K, ๊ณ ํ์ง ํฉ์ฑ)maywell/synatra-orca(~300K)HAERAE-HUB/qarv-instruct-100k(100K)- ํ์ฌ 161K + ์ ์์ค = 700K+ โ ํ์ง ํํฐ๋ง โ 200-300K ์ต์ข
4. ORPO์ ๋ฐ์ดํฐ ๋ฌธ์ (์์น ์ฆ๋ช )
ํ์ฌ ์ํฉ: ์์ฒด Preference ๋ฐ์ดํฐ ์์ฑ์ ํจ์
๋ฐ๋ณต ์ถ๋ ฅ ๋น์จ: 18% (eval ๊ฒฐ๊ณผ ๊ธฐ๋ฐ)
์๋๋ฆฌ์ค: Self-Play๋ก preference ์ ์์ฑ
์ค์ : 1000๊ฐ ํ๋กฌํํธ ร 4๋ฒ ์ํ๋ง = 4000๊ฐ ์๋ต
๋ฐ๋ณต ์ถ๋ ฅ ๋ฐ์:
- 18% ๋ฐ๋ณต๋ฅ โ 4000 ร 0.18 = 720๊ฐ ๋ฐ๋ณต ์๋ต
- ๋ฐ๋ณต ์๋ต = ์๋์ผ๋ก "rejected"
- ๋น๋ฐ๋ณต ์๋ต = "chosen" ํ๋ณด
์ค์ ์ฌ์ฉ ๊ฐ๋ฅํ ์:
- ํ๋กฌํํธ๋น 4๊ฐ ์ค ์ต์ 1๊ฐ chosen + 1๊ฐ rejected ํ์
- ๋ฐ๋ณต์ด 0๊ฐ์ธ ํ๋กฌํํธ: ~(0.82^4) = 45% โ 450๊ฐ โ chosen/rejected ๊ตฌ๋ถ ์ด๋ ค์
- ๋ฐ๋ณต์ด 4๊ฐ ๋ชจ๋์ธ ํ๋กฌํํธ: ~(0.18^4) = 0.1% โ 1๊ฐ โ ์ฌ์ฉ ๋ถ๊ฐ
- ๋ฐ๋ณต 1๊ฐ ์ด์์ธ ํ๋กฌํํธ: 55% โ 550๊ฐ โ ์ ๊ตฌ์ฑ ๊ฐ๋ฅ
๊ฒฐ๊ณผ: ~550๊ฐ usable pairs (1000๊ฐ ํ๋กฌํํธ์์)
ํธํฅ ๋ฌธ์ (๋ ์ฌ๊ฐ)
๋ฐ๋ณต ํจํด์ ํน์ ๋๋ฉ์ธ์ ๋ชฐ๋ฆฐ๋ค
- ๊ธธ๊ณ ๋ณต์กํ ์ค๋ช ์์ฒญ โ ๋ฐ๋ณต ๋ค๋ฐ
- ์งง์ QA โ ๋ฐ๋ณต ๊ฑฐ์ ์์
- โ rejected๋ "๊ธด ์ค๋ช " ๋๋ฉ์ธ์ ์ง์ค
๊ฒฐ๊ณผ์ ํธํฅ:
- ORPO๊ฐ ํ์ตํ๋ ๊ฒ: "๊ธด ์๋ต = bad, ์งง์ ์๋ต = good"
- ์ค์ ์ํ๋ ๊ฒ: "๋ฐ๋ณต = bad, ์ ์ฐฝํ ๊ธด ์๋ต = good"
- Length bias ๋ฐ์ โ ๋ชจ๋ธ์ด ์งง๊ฒ๋ง ์๋ตํ๋ ํดํ
์์น:
- 550๊ฐ ์ ์ค ~70%๊ฐ "๊ธด ์ค๋ช " ๋๋ฉ์ธ โ 385๊ฐ
- "์งง์ QA" ๋๋ฉ์ธ: ~15% โ 83๊ฐ
- ๊ธฐํ: ~15% โ 82๊ฐ
- ๋๋ฉ์ธ ๋ถ๊ท ํ ๋น์จ: 4.6:1
ํธํฅ๋ ORPO๋ก ๋ฐ์ํ๋ ๋ฌธ์ :
- ๋ฐ๋ณต ์ถ๋ ฅ 18% โ maybe 8-10% (๋ถ๋ถ ํด๊ฒฐ)
- BUT: ํ๊ท ์๋ต ๊ธธ์ด 40-50% ๊ฐ์ (์๋ก์ด ๋ฌธ์ )
- ko_ifeval ์คํ๋ ค ํ๋ฝ ๊ฐ๋ฅ (์งง์ ์๋ต = instruction following ๋ถ์กฑ)
ORPO์ ์ง์ง ๋ฌธ์ : 1B ๋ชจ๋ธ์ ํ๊ณ
1B ๋ชจ๋ธ์ ๋ฐ๋ณต ์ถ๋ ฅ ์์ธ:
โโโ ์ฌ์ ํ์ต ๋ฐ์ดํฐ ๋ถ์กฑ (8.91B tokens, 4 epoch over-train)
โโโ ๋ชจ๋ธ ์ฉ๋ ๋ถ์กฑ (1.19B params)
โโโ ์ดํ
์
ํจํด ๋ค์์ฑ ๋ถ์กฑ (d_model=2048, n_layers=24)
โโโ ๊ฒฐ๊ณผ: ๊ธด ์ํ์ค์์ ์ปจํ
์คํธ ์ ์ง ์คํจ โ ๋ฐ๋ณต
ORPO๊ฐ ๊ณ ์น ์ ์๋ ๊ฒ:
โโโ ํ๋ฉด์ ๋ฐ๋ณต ํจํด (๋ถ๋ถ์ )
โโโ ํน์ ํ ํฐ ์ํ์ค ํํผ (๋ถ๋ถ์ )
ORPO๊ฐ ๊ณ ์น ์ ์๋ ๊ฒ:
โโโ ๋ชจ๋ธ ์ฉ๋ ํ๊ณ โ 3B๋ก๋ง ํด๊ฒฐ
โโโ ์ฌ์ ํ์ต ์ง์ ๋ถ์กฑ โ ๋ ๋ง์ pretraining์ผ๋ก๋ง ํด๊ฒฐ
โโโ ๊ทผ๋ณธ์ ์ปจํ
์คํธ ์ ์ง ๋ฅ๋ ฅ โ ๋ ๊น์ ๋ชจ๋ธ๋ก๋ง ํด๊ฒฐ
5. 3B ์ฌ์ ํ์ต ์ค๋น ํํฉ ์ฒดํฌ๋ฆฌ์คํธ
์ฝ๋ ์ค๋น๋
| ํญ๋ชฉ | ์ํ | ์ค๋ช |
|---|---|---|
LMConfig |
โ ์ค๋น ์๋ฃ | d_model, n_layers, n_heads ๋ฑ ๋ชจ๋ config์์ ์ฃผ์ |
LLM ๋ชจ๋ธ ํด๋์ค |
โ | config ๊ธฐ๋ฐ ๋์ ์์ฑ, ํฌ๊ธฐ ์ ์ฝ ์์ |
pretrain.py |
โ | --config ์ธ์๋ก ์ด๋ค ํฌ๊ธฐ๋ ํ์ต ๊ฐ๋ฅ |
trainer.py |
โ | ๋ชจ๋ธ ํฌ๊ธฐ ๋ฌด๊ดํ๊ฒ ๋์ |
| FP8 ์ง์ | โ | TransformerEngine MXFP8 ์ด๋ฏธ ๊ตฌํ |
| DDP/Multi-GPU | โ | torchrun ๊ธฐ๋ฐ 8-GPU ์ง์ |
| Flash Attention | โ | use_flash_attn: true |
ํ์ํ ๊ฒ: 3B config ํ์ผ 1๊ฐ
# configs/korean_3b_fp8.yaml (์ ๊ท ์์ฑ ํ์)
model:
vocab_size: 64000
d_model: 3072 # 1B: 2048 โ 3B: 3072
n_layers: 32 # 1B: 24 โ 3B: 32
n_heads: 24 # 1B: 16 โ 3B: 24
n_kv_heads: 8 # GQA 3:1
d_ffn: 8192 # SwiGLU: int(2/3 * 4 * 3072) = 8192
max_seq_len: 4096
rope_theta: 500000.0
dropout: 0.0
bias: false
use_flash_attn: true
use_fp8: true
train:
max_steps: 34000 # 8.91B ร 4 epoch / 1M tok per step
batch_size: 4 # per GPU (๋ฉ๋ชจ๋ฆฌ ์ ์ฝ)
grad_accum_steps: 8 # eff_batch: 4 ร 8 ร 8 ร 4096 = 1,048,576
lr: 1.5e-4 # 3B๋ 1B๋ณด๋ค ์ฝ๊ฐ ๋ฎ์ LR
weight_decay: 0.1
warmup_steps: 2000
max_grad_norm: 1.0
log_interval: 10
save_interval: 500
eval_interval: 200
use_amp: false
compile_model: false
fp8_amax_history_len: 16
fp8_amax_compute_algo: "max"
fp8_format: "MXFP8"
tokenizer:
vocab_size: 64000
type: sentencepiece_unigram
์ค์ ํ๋ผ๋ฏธํฐ ์ ๊ณ์ฐ:
Embedding: 64000 ร 3072 = 196.6M
Attention per layer: 4 ร 3072ยฒ = 37.7M (+ GQA ์ ๊ฐ)
Q: 3072 ร 3072 = 9.4M
K: 3072 ร 1024 = 3.1M (n_kv_heads=8)
V: 3072 ร 1024 = 3.1M
O: 3072 ร 3072 = 9.4M
= 25.1M per layer
FFN per layer: 3 ร 3072 ร 8192 = 75.5M (SwiGLU: gate+up+down)
Layer total: 25.1 + 75.5 = 100.6M
32 layers: 3219.2M
LM head: 3072 ร 64000 = 196.6M (tied with embedding)
RMSNorm: ๋ฌด์ ๊ฐ๋ฅ
์ด: 196.6M + 3219.2M โ 3.42B parameters
GPU ๋ฉ๋ชจ๋ฆฌ ์์ (3B FP8, 8ร B200 192GB)
๋ชจ๋ธ ํ๋ผ๋ฏธํฐ (FP8): 3.42B ร 1 byte = 3.42 GB
Optimizer states (AdamW, FP32): 3.42B ร 8 bytes = 27.4 GB
Gradients (BF16): 3.42B ร 2 bytes = 6.84 GB
Activations (per GPU, bs=4, seq=4096): ~15-25 GB (gradient checkpointing ์ ์ฉ ์)
Per GPU ์์: 3.42 + 27.4/8 + 6.84/8 + 20 โ 28 GB
โ B200 192GB์ ์ฝ 15% โ ๋งค์ฐ ์ฌ์
batch_size๋ฅผ 8๋ก ์ฌ๋ฆด ์๋ ์์ โ ~40 GB โ 21% ์ฌ์ฉ
์์ ํ์ต ์๊ฐ
1B FP8 ํ์ต: 34,000 steps, ์ฝ 14์๊ฐ (์ถ์ , 8ร B200)
3B๋ 1B ๋๋น:
- ํ๋ผ๋ฏธํฐ 3ร, but FP8 ํ์ฉ โ FLOPS 2-2.5ร
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ โ batch size ์ ์ง ๊ฐ๋ฅ
- ์์: 34,000 steps ร 2.5 = ~35์๊ฐ
๋๋ 8.91B tokens 1 epoch๋ง:
- 8500 steps ร 2.5 = ~8.5์๊ฐ โ ๋ฐค์ ์๋ฃ ๊ฐ๋ฅ!
6. ์๊ฐ ๊ฐ์น ๊ด์
์๋๋ฆฌ์ค A: "1B ORPO ์๋" ๊ฒฝ๋ก
Day 1: Self-play ๋ฐ์ดํฐ ์์ฑ (4-6์๊ฐ)
Day 1: ORPO ํ์ต (1-2์๊ฐ)
Day 2: ํ๊ฐ โ ๋ฐ๋ณต๋ฅ 18% โ 12% (๋ถ๋ถ ๊ฐ์ )
Day 2: "๋ ๋ง์ ๋ฐ์ดํฐ ํ์" โ ์ถ๊ฐ ์์ฑ (4์๊ฐ)
Day 3: ORPO v2 โ ๋ฐ๋ณต๋ฅ 10% BUT ์๋ต ์งง์์ง
Day 3-4: DPO ์๋ โ ๋น์ทํ ๊ฒฐ๊ณผ
Day 4-5: "๋ฐ์ดํฐ ํ์ง ๋ฌธ์ ?" โ ํํฐ๋ง + ์ฌ์์ฑ
Day 5-7: ์ฌ์ ํ 1B ํ๊ณ์ ๋ถ๋ชํ
๊ฒฐ๊ณผ: 1์ฃผ์ผ ์๋ชจ, ๋ฐ๋ณต๋ฅ 18% โ 10%, ๊ทผ๋ณธ ํด๊ฒฐ ์ ๋จ
์๋๋ฆฌ์ค B: "3B ์ฌ์ ํ์ต" ๊ฒฝ๋ก
์ง๊ธ (04:18): 3B config ์์ฑ (30๋ถ)
04:48: ํ์ต ์์ (korean_train.bin 8.91B tokens, 1 epoch)
~13:00: 1 epoch ์๋ฃ โ ์ค๊ฐ ์ฒดํฌํฌ์ธํธ ํ๊ฐ
โ ๋ฐ๋ณต๋ฅ ์ด๋ฏธ ๊ฐ์ํ ๊ฐ๋ฅ์ฑ ๋์ (๋ ํฐ ๋ชจ๋ธ = ๋ ๊ธด ์ปจํ
์คํธ ์ ์ง)
๋ณ๋ ฌ๋ก:
- korean_extra ํ ํฐํ ์งํ (8-12์๊ฐ)
- 3B์ฉ SFT ๋ฐ์ดํฐ ์ค๋น
Day 2: 4 epoch ์๋ฃ โ SFT ์์
Day 3: 3B SFT ์๋ฃ โ ํ๊ฐ
โ ์์: ๋ฐ๋ณต๋ฅ 5-8%, ko_ifeval ํฌ๊ฒ ํฅ์
๊ฒฐ๊ณผ: 3์ผ, ๊ทผ๋ณธ์ ์ฑ๋ฅ ํฅ์
"๋น ๋ฅธ ์คํจ"๋ณด๋ค "์ฌ๋ฐ๋ฅธ ์์"์ด ๋์ ์ด์
1B ORPO๋ "๋น ๋ฅธ ์คํจ"๊ฐ ์๋๋ผ "๋๋ฆฐ ์คํจ"
- ๋ถ๋ถ์ ๊ฐ์ ์ด ๋๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐํ๊ธฐ ์ด๋ ค์
- "์ข ๋ ํ๋ฉด ๋ ๊ฒ ๊ฐ์๋ฐ..." โ sunk cost fallacy
- ๋งค๋ฒ ๋ฐ์ดํฐ ์์ฑ โ ํ์ต โ ํ๊ฐ ์ฌ์ดํด์ 12์๊ฐ+
3B๋ "์ฌ๋ฐ๋ฅธ ์์"
- ๋ชจ๋ธ ์ฉ๋ 3ร โ ๋ฐ๋ณต ์ถ๋ ฅ์ ๊ทผ๋ณธ ์์ธ ํด๊ฒฐ
- ๊ฐ์ ๋ฐ์ดํฐ๋ก๋ ๋ ๋์ ํ์ง
- SFT/ORPO ๋จ๊ณ์์ ๋ ํฐ ๊ฐ์ ๊ฐ๋ฅ (๊ธฐ๋ฐ์ด ํผํผ)
ํฌ์ ๋๋น ์์ต (ROI)
- 1B ORPO: 1์ฃผ์ผ โ 10% ๊ฐ์
- 3B pretrain: 2-3์ผ โ 50%+ ๊ฐ์ (์ถ์ )
- 3B์ ROI๊ฐ 3-5ร ๋์
์ต์ข ๊ฒฐ๋ก
3B ์ฆ์ ์์ ๊ฐ๋ฅ ์ฌ๋ถ
| ํญ๋ชฉ | ์ํ | ๋น๊ณ |
|---|---|---|
| ํ์ต ์ฝ๋ | โ ์ค๋น ์๋ฃ | config๋ง ๋ณ๊ฒฝํ๋ฉด ๋จ |
| 3B config | โ ๏ธ ์์ฑ ํ์ | 30๋ถ ์์ |
| ํ ํฐํ๋ ๋ฐ์ดํฐ | โ 8.91B tokens | 1-4 epoch ๊ฐ๋ฅ |
| GPU ๋ฉ๋ชจ๋ฆฌ | โ ์ถฉ๋ถ | 15-21% ์ฌ์ฉ ์์ |
| FP8 ์ง์ | โ MXFP8 | ์ด๋ฏธ ๊ตฌํ |
3B ์ํคํ ์ฒ + ์์ ํ์ต ์๊ฐ
3.42B parameters
d_model=3072, n_layers=32, n_heads=24, n_kv_heads=8
FP8, 8ร B200
1 epoch (8.91B tokens): ~8.5์๊ฐ โ ๋ฐค์ ๊ฐ๋ฅ
4 epoch (35.6B tokens): ~35์๊ฐ โ 1.5์ผ
ORPO ๋ฐ์ดํฐ ๋ฌธ์ (์์น)
- 1000 ํ๋กฌํํธ โ ~550 usable preference pairs
- ๋๋ฉ์ธ ๋ถ๊ท ํ: 4.6:1 (๊ธด ์ค๋ช ํธ์ค)
- ์์ ๊ฒฐ๊ณผ: ๋ฐ๋ณต๋ฅ 18% โ 10%, BUT ์๋ต ๊ธธ์ด 40-50% ๊ฐ์
- ์ฆ์ ์น๋ฃ, ๊ทผ๋ณธ ํด๊ฒฐ ์๋
"์ง๊ธ ๋ฐค์ 3B ์ฌ์ ํ์ต ๋๋ ค์ผ ํ๋" ์ด์
- ์ฝ๋ ์์ 0์ค โ config 1๊ฐ๋ง ๋ง๋ค๋ฉด ๋จ
- ๋ฐ์ดํฐ ์ค๋น ์๋ฃ โ korean_train.bin 8.91B tokens ์ฆ์ ์ฌ์ฉ
- GPU ์ฌ์ โ B200 192GB์ 15% ์ฌ์ฉ
- ๋ด์ผ ์์นจ ๊ฒฐ๊ณผ โ 1 epoch 8.5์๊ฐ์ด๋ฉด ํ์ธ ๊ฐ๋ฅ
- ORPO๋ 3B ์์์ ํด๋ ๋ฆ์ง ์๋ค โ 3B SFT ํ ORPO๊ฐ 1B ORPO๋ณด๋ค ๋ฌด์กฐ๊ฑด ์ฐ์
- ๊ธฐํ๋น์ฉ โ ์ง๊ธ ์ ๋๋ฆฌ๋ฉด 35์๊ฐ์ด ๊ทธ๋ฅ ๋ ์๊ฐ
"1B์ ๋ฐ์ฐฝ๊ณ ๋ถ์ด์ง ๋ง๋ผ. 3B๋ก ์๋ก ์ง์ด๋ผ."