Files
frankenstallm/source/configs/3b_pretrain.yaml

61 lines
2.4 KiB
YAML
Raw Permalink Normal View History

# 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