항상 만질 다섯 노브
mlx_lm.lora 가 긴 CLI flag 리스트 노출하지만, fine-tuning run 의 90% 엔 한 줌만 조정. 이 다섯 외워 — 의미가 뭔지, 기본값이 어떤지, 각각이 병목인 때 — 그러면 분 단위로 의미 있는 fine-tuning 실험 돌릴 수 있어.
--num-layers— 모델의 transformer layer 중 몇 개에 LoRA adapter 붙이는지. 기본 16.-1설정이 모든 layer 에 LoRA 붙임 (더 많은 capacity, 더 많은 메모리). 높은 게 더 유연; 낮은 게 더 빠르고 싸.--learning-rate— Adam learning rate. 기본은 sane (7B base 의 Adam 에 약 1e-5); 작은 데이터셋에서 더 빠른 수렴 위해 올리고, loss 불안정하면 낮춰. 가장 흔한 실수는 데이터셋 작을 때 기본값에 두는 것.--batch-size— step 당 예제 수의 minibatch 크기. 높은 게 더 안정적 gradient 지만 더 많은 메모리. 낮은 게 더 적은 메모리와 noisier gradient. 32 GB Mac 의 7B base 에선 batch size 4-16 이 전형.--iters— 총 학습 step. 200-500 예제 데이터셋엔 100-500 iter 가 합리적 시작 범위. 검증 loss 봐; 개선 멈추면 멈춰.--max-seq-length— 이보다 긴 학습 예제 truncate. 메모리에 큰 영향 (KV cache 가 이걸로 scale). 가장 긴 예상 예제 바로 위에 설정 — truncation 손실과 메모리 낭비 둘 다 피하려고.
Fine-tune-type 노브 — 한 번 고르고 무시
--fine-tune-type 가 lora (기본), dora (DoRA — lesson 4 봐), full (full fine-tuning, 7B+ 모델에 Mac 에서 거의 절대 맞는 호출 아님) 사이 고름.
복사할 수 있는 sane 기본
7B base instruct 모델, 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 step 마다 val loss)--save-every 100(100 step 마다 checkpoint)
Iter 가 아니라 loss 봐
맞는 iteration 수는 숫자가 아냐; 검증 loss 가 개선 멈추게 하는 무엇이든의 카운트. mlx-lm 이 간격으로 학습과 검증 loss 둘 다 보고 — 학습 loss 가 계속 떨어지는데 검증 loss 가 plateau 되거나 오르기 시작하면 overfitting 시작. 거기서 멈춰. --save-every 플래그가 roll back 할 checkpoint 갖는다는 뜻.