61 lines
2.4 KiB
YAML
61 lines
2.4 KiB
YAML
|
|
# Korean LLM 3B parameters — FP8 (B200 TransformerEngine MXFP8)
|
|||
|
|
#
|
|||
|
|
# [아키텍처 근거 — 2026-02-27]
|
|||
|
|
# - 저스티스리그 제안 기반: d_model=2560, 32L, 32H, 8KV
|
|||
|
|
# - 파라미터: ~2.39B ("3B급" — Llama-3.2-3B 대비 경량, 한국어 64K vocab 효율)
|
|||
|
|
# - d_ffn=6912: 2.7×d_model, 16배수 FP8 정렬
|
|||
|
|
# - GQA 4:1 (32H:8KV) — 추론 효율 + KV cache 절약
|
|||
|
|
# - head_dim=80 (2560/32) — Flash Attention 효율적
|
|||
|
|
#
|
|||
|
|
# [데이터/학습 설계]
|
|||
|
|
# - 데이터: korean_train.bin 8.91B tokens
|
|||
|
|
# - Chinchilla 최적: 2.4B × 20 = 48B tokens
|
|||
|
|
# - 실제 목표: 60B tokens (6.7 에포크) — 한국어 단일 언어 특성상 추가 학습 유리
|
|||
|
|
# - max_steps 57000 = 60B tokens / 1,048,576 tok/step
|
|||
|
|
#
|
|||
|
|
# [GPU 메모리 예측 — 8× B200 183GB]
|
|||
|
|
# - 모델 FP8: 2.4 GB
|
|||
|
|
# - Optimizer (bf16 master + fp32 mom/var): 23.9 GB
|
|||
|
|
# - Gradient (bf16): 4.8 GB
|
|||
|
|
# - Activation (per GPU, bs=8): ~27 GB
|
|||
|
|
# - 합계: ~58 GB/GPU (31.7% 활용) → 여유 충분
|
|||
|
|
#
|
|||
|
|
# 실행: bash scripts/launch_korean_3b.sh
|
|||
|
|
# 테스트: RUN_NAME=korean_3b_test bash scripts/launch_korean_3b.sh --max_steps 50
|
|||
|
|
|
|||
|
|
model:
|
|||
|
|
vocab_size: 64000
|
|||
|
|
d_model: 2560
|
|||
|
|
n_layers: 32
|
|||
|
|
n_heads: 32
|
|||
|
|
n_kv_heads: 8 # GQA 4:1 (K/V 파라미터 75% 절감)
|
|||
|
|
d_ffn: 6912 # 2.7×d_model, 16배수 (FP8 alignment)
|
|||
|
|
max_seq_len: 4096
|
|||
|
|
rope_theta: 500000.0
|
|||
|
|
dropout: 0.0
|
|||
|
|
bias: false
|
|||
|
|
use_flash_attn: true
|
|||
|
|
use_fp8: true # TransformerEngine MXFP8BlockScaling (B200 네이티브)
|
|||
|
|
|
|||
|
|
train:
|
|||
|
|
# 57k steps × 1,048,576 tok/step = 59.8B tokens ≈ 6.7 에포크
|
|||
|
|
max_steps: 57000
|
|||
|
|
batch_size: 4 # per GPU: 4 × 4096 = 16,384 토큰 | VRAM ~130 GB (183GB의 71%)
|
|||
|
|
grad_accum_steps: 8 # eff_batch: 4 × 8GPU × 8 × 4096 = 1,048,576 tok/step
|
|||
|
|
lr: 1.5e-4 # 3B 규모: GPT-3 scaling 기준 1B(2e-4) → 3B(1.5e-4)
|
|||
|
|
weight_decay: 0.1
|
|||
|
|
warmup_steps: 2000 # 57k steps의 3.5% — 안정적 warmup
|
|||
|
|
max_grad_norm: 1.0
|
|||
|
|
log_interval: 10
|
|||
|
|
save_interval: 1000 # 57k steps 기준 ~57 체크포인트
|
|||
|
|
eval_interval: 500 # val loss 모니터링
|
|||
|
|
use_amp: false # fp8_autocast가 대체
|
|||
|
|
compile_model: false # TE 2.10 + DDP graph break 위험
|
|||
|
|
fp8_amax_history_len: 16
|
|||
|
|
fp8_amax_compute_algo: "max"
|
|||
|
|
fp8_format: "MXFP8" # B200 Blackwell 네이티브 블록 스케일링
|
|||
|
|
|
|||
|
|
tokenizer:
|
|||
|
|
vocab_size: 64000
|
|||
|
|
type: sentencepiece_unigram
|