본문 바로가기
C.W.K.
Stream
Lesson 03 of 06 · published

학습 설정 — 학습률, 순위, 반복 수는 무엇을 바꾸나

~16 min · training, hyperparameters, lora-rank

Level 0호기심
0 XP0/51 lessons0/15 achievements
0/100 XP to next level100 XP to go0% complete

자주 만질 값은 다섯 개뿐이야

mlx_lm.lora의 선택지는 길지만 파인튜닝 실험 90%는 다섯 값만 조정해. 뜻과 병목이 되는 순간을 익히면 몇 분 단위로 의미 있는 실험을 돌릴 수 있어.

  1. --num-layers — LoRA 어댑터를 붙일 Transformer 층 수야. 기본은 16이고 -1은 모든 층이야. 많으면 표현력이 커지지만 메모리와 시간이 늘어.
  2. --learning-rate — Adam 학습률이야. 7B 기반의 기본은 약 1e-5로 무난해. 작은 자료에서는 수렴을 위해 올리고 손실이 흔들리면 낮춰.
  3. --batch-size — 단계마다 보는 예제 수야. 크면 기울기가 안정되지만 메모리를 더 쓰고, 작으면 메모리는 아끼지만 흔들려. 32 GB Mac의 7B 기반은 보통 4–16이야.
  4. --iters — 전체 학습 단계 수야. 200–500개 예제라면 100–500회에서 시작하고 검증 손실이 멈추면 끝내.
  5. --max-seq-length — 넘는 예제를 잘라. KV 캐시가 이 값에 따라 커지므로 가장 긴 실제 예제 바로 위로 맞춰.

학습 방식은 한 번 고르면 돼

--fine-tune-type은 기본 lora, 레슨 4의 dora, 전체 파인튜닝인 full 가운데 골라. Mac에서 7B 이상에 full은 거의 맞지 않아.

복사해 시작할 기준값

7B 지시 학습 기반, 예제 200개, 32 GB Mac이라면 다음으로 시작해.

  • --num-layers 16
  • --learning-rate 5e-5 — 작은 자료라 기본보다 올려
  • --batch-size 4
  • --iters 200
  • --max-seq-length 2048 — 실제 예제가 짧다면 더 줄여
  • --steps-per-eval 25 — 25단계마다 검증
  • --save-every 100 — 100단계마다 저장

반복 수보다 검증 손실을 봐

정답인 반복 횟수가 따로 있는 게 아니야. 검증 손실이 더 좋아지지 않는 지점이 끝이야. 학습 손실은 내려가는데 검증 손실이 평평해지거나 오르면 과적합이 시작된 거니 멈춰. --save-every 덕분에 가장 좋은 체크포인트로 돌아갈 수 있어.

Code

합리적인 기본 LoRA 학습 명령 — 주석 포함·bash
python -m mlx_lm lora \
  --model mlx-community/Mistral-7B-Instruct-v0.3-4bit \
  --train \
  --data ./my-data \
  --fine-tune-type lora \
  --num-layers 16 \
  --batch-size 4 \
  --iters 200 \
  --learning-rate 5e-5 \
  --max-seq-length 2048 \
  --steps-per-report 10 \
  --steps-per-eval 25 \
  --save-every 100 \
  --adapter-path ./my-adapter

# Output during training:
#   Iter 10: Train loss 1.832, Learning Rate 5.000e-05, ...
#   Iter 25: Val loss 1.523, ...
#   Iter 100: Saving checkpoint ./my-adapter/0000100_adapters.safetensors
#   ...
같은 실행을 되풀이하려면 YAML 설정 파일을 써·yaml
# my-lora.yaml — one source of truth for a fine-tune run
model: "mlx-community/Mistral-7B-Instruct-v0.3-4bit"
train: true
data: "./my-data"
fine_tune_type: "lora"
num_layers: 16
batch_size: 4
iters: 200
learning_rate: 5e-5
max_seq_length: 2048
steps_per_report: 10
steps_per_eval: 25
save_every: 100
adapter_path: "./my-adapter"
seed: 42

# Then pass with -c:
#   python -m mlx_lm lora -c my-lora.yaml

External links

Exercise

위 YAML 설정을 자료에 맞게 바꿔. data를 지정하고 빠른 실행을 위해 iters를 50으로 낮추며 max_seq_length는 가장 긴 예제에 맞춰. python -m mlx_lm lora -c my-lora.yaml로 학습을 시작해 학습·검증 손실을 봐. 검증 손실 개선이 멈추거나 50회가 끝나면 종료하고, 가장 낮았던 반복 횟수를 기록해. 그 값이 이 자료의 실제 학습 예산이야.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.