55 lines
1.9 KiB
YAML
55 lines
1.9 KiB
YAML
# Korean 3B SFT v2 Configuration
|
||
#
|
||
# Base model: checkpoints/korean_3b_fp8_run1/checkpoint-0057000 (3B params pretrained)
|
||
# SFT v2 목표: v1의 underfitting 해결 + forgetting 방지 (data mixing)
|
||
# 아키텍처: LLaMA-3 3B 참고 (d=3072, 28L, 24H, GQA 8:1)
|
||
#
|
||
# 실행: bash scripts/launch_3b_sft_v2.sh
|
||
#
|
||
# [설계 근거 — SFT v1 실패 분석 2026-03-06]
|
||
# v1 문제: lr=1e-5 → val_loss 변화 0 (사실상 학습 안 됨)
|
||
# v2 변경:
|
||
# - lr: 1e-5 → 5e-5 (5배 ↑, 3B SFT 표준 범위)
|
||
# - batch: 4 × 8GPU × 8 grad_accum = 256 eff_batch (v1 대비 4배 ↑)
|
||
# - warmup: 500 → 2000 (높은 LR에 맞춰 안정화)
|
||
# - max_steps: 33000 → 15000 (수렴 빨라짐, 과적합 방지)
|
||
# - weight_decay: 0.01 → 0.05 (forgetting 억제)
|
||
# - data mixing: SFT 70% + pretrain 30% (forgetting 방지)
|
||
|
||
model:
|
||
vocab_size: 64000
|
||
d_model: 3072
|
||
n_layers: 28
|
||
n_heads: 24
|
||
n_kv_heads: 8
|
||
d_ffn: 8192
|
||
max_seq_len: 4096
|
||
rope_theta: 500000.0
|
||
dropout: 0.0
|
||
bias: false
|
||
use_flash_attn: true
|
||
use_fp8: true
|
||
|
||
train:
|
||
max_steps: 15000 # v1 33000 → 15000 (수렴 빨라짐)
|
||
batch_size: 4 # v1 2 → 4 (VRAM 여유 충분: 48/183GB)
|
||
grad_accum_steps: 8 # v1 4 → 8 (eff_batch: 4 × 8GPU × 8 = 256)
|
||
lr: 5.0e-5 # v1 1e-5 → 5e-5 (5배 ↑, underfitting 해결)
|
||
weight_decay: 0.05 # v1 0.01 → 0.05 (forgetting 억제)
|
||
warmup_steps: 2000 # v1 500 → 2000 (높은 LR 안정화)
|
||
max_grad_norm: 1.0 # gradient clipping
|
||
log_interval: 10
|
||
save_interval: 2000
|
||
eval_interval: 500
|
||
use_amp: false
|
||
compile_model: false
|
||
neftune_alpha: 5.0 # NEFTune noise injection (유지)
|
||
|
||
# Data mixing (forgetting 방지)
|
||
pretrain_mix_ratio: 0.3 # pretrain 데이터 30% 혼합
|
||
pretrain_data: data/3b_train.bin # pretrain 데이터 경로
|
||
|
||
tokenizer:
|
||
vocab_size: 64000
|
||
type: sentencepiece_unigram
|