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

LoRA — 이제 모델 전체를 학습하지 않는 이유

~14 min · lora, adapters, peft

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

전체 파인튜닝의 비용부터 보자

70B 모델 전체를 파인튜닝하려면 700억 개 매개변수의 기울기를 계산하고, Adam의 모멘트처럼 매개변수 수의 2배가 더 드는 옵티마이저 상태를 들고, 순전파 동안 활성값도 저장해야 해. 추론 때보다 약 4–6배의 메모리가 필요하니 수백 GB의 GPU 메모리가 들어.

LoRA는 이 문제를 비켜가. 원래 가중치는 모두 얼리고 선택한 층에 작은 학습 가능 어댑터 행렬만 붙여. 학습할 매개변수가 99% 이상 줄면서 메모리도 함께 줄어 16 GB MacBook에서 7B, 사무실 Mac에서 70B 모델까지 파인튜닝할 수 있어.

핵심 수학은 행렬 둘이야

모양이 (d × d)인 가중치 W의 변화 ΔWΔW ≈ A · B로 근사해. A는 (d × r), B는 (r × d)이고 LoRA 순위 r은 보통 8이나 16처럼 작아. d²개를 학습하는 대신 2 · d · r개만 학습하니 원래의 일부면 돼.

추론에서는 (W + A · B) · x를 계산해. 원래 W는 그대로고 어댑터 A · B가 학습한 보정을 더해. 두 행렬과 작은 순위, 구조 변경은 그게 전부야.

작은 어댑터가 충분한 이유

파인튜닝이 사전 학습 모델에 만들고 싶은 변화는 경험적으로 낮은 차원의 부분 공간에 모여 있어. 가능한 d² 공간 전체를 쓰는 건 대부분의 후속 작업에 지나쳐. 순위 16의 공간만으로도 필요한 변화를 거의 담아, 많은 벤치마크에서 LoRA는 매개변수 비용 1%로 전체 파인튜닝 품질의 90% 이상을 내.

이 수치가 전체 가중치 학습을 밀어낸 이유야. 보통의 지시 따르기와 도메인 적응에는 수학상 전체 파인튜닝을 고집할 이유가 거의 없어.

여섯 레슨의 길

데이터 준비, 학습 설정, 필요할 때 QLoRA와 DoRA로 올리는 법, 어댑터 결합, 자기 자료로 파인튜닝·결합·서빙하는 전체 흐름을 차례로 갈 거야. 32 GB Mac에서 7B 기반 모델로 전 과정을 편하게 돌릴 수 있어.

Code

최소 LoRA 학습 명령·bash
# Train a LoRA adapter on a small base model with a HF-hosted dataset.
# This is the literal minimum to start; lesson 3 walks through every flag.
python -m mlx_lm lora \
  --model mlx-community/Llama-3.2-1B-Instruct-4bit \
  --train \
  --data mlx-community/wikisql \
  --iters 100 \
  --adapter-path ./my-adapter

# Output during training (verbose; mlx-lm reports loss every --steps-per-report iters):
#   Iter 10: Train loss 1.832, Learning Rate 1.000e-05, ...
#   Iter 20: Train loss 1.521, ...
#   ...
학습 뒤 어댑터 폴더 살피기·bash
ls ./my-adapter/
# adapters.safetensors    — the trained LoRA weights (small file!)
# adapter_config.json     — rank, alpha, layers, fine-tune type, etc.
# 0000100_adapters.safetensors  — checkpoint at iter 100 (if --save-every fired)

# The adapter file is tiny compared to the base model:
du -sh mlx-community/Llama-3.2-1B-Instruct-4bit/  # ~700 MB base
du -sh ./my-adapter/                              # tens of MB at most

External links

Exercise

실행하기 전에 Llama-3.2-1B 기반 모델의 기본 16개 층에 순위 8 LoRA를 붙이면 학습 가능한 매개변수가 얼마나 될지 예측해. 어댑터가 붙는 각 선형 투영의 입력·출력 차원을 확인하고, 투영마다 r · (d_in + d_out)을 더해. 짧게 학습한 뒤 mlx-lm이 보고한 실제 학습 가능 매개변수 수와 비교하고 차이가 난 이유를 두 문장으로 적어.

Progress

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

댓글 0

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

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