본문 바로가기
C.W.K.
Stream
Lesson 04 of 08 · published

LoRA: 매개변수 효율적 튜닝

~22 min · lora, peft, fine-tune

Level 0호기심
0 XP0/73 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

LoRA는 왜 필요할까

7B 매개변수 LLM을 전체 미세 조정하면 과제마다 갱신된 7B 매개변수를 모두 저장해야 해. 가중치만 14GB야. LoRA (Low-Rank Adaptation, Hu et al. 2021)는 원래 가중치를 동결하고 각 선형층 옆에 학습 가능한 작은 저랭크 행렬을 추가해. 이때 해당 층의 미세 조정 결과는 W' = W + (BA)로 나타내며, A: [d, r]B: [r, d]에서 r << d야.

그 결과 약 0.1%의 추가 매개변수만 학습하면서도 전체 미세 조정에 견줄 만한 정확도를 얻을 수 있어. 기본 모델을 다시 불러오지 않고 LoRA 어댑터를 교체하거나 제거할 수도 있지. 개인도 LLM을 현실적으로 미세 조정할 수 있게 만든 기술이야.

팁: LoRA에서 보통 사용하는 랭크는 r=8~64야. 랭크가 낮으면 매개변수가 적어져 더 빠르고 저렴하지만 과소적합 위험이 커져. 랭크가 높으면 전체 미세 조정에 가까워져. r=16부터 시작한 뒤 결과에 맞춰 조정해.

QLoRA — 양자화된 기본 모델 위의 LoRA

QLoRA (Dettmers et al., 2023)는 동결된 기본 모델을 4-bit 양자화 형태로 유지하면서 LoRA 어댑터를 BF16으로 학습해. 그 결과 70B 모델을 8개가 아닌 단일 80GB H100에서 미세 조정할 수 있어. 개인과 소규모 팀도 본격적인 LLM 미세 조정을 현실적으로 시도할 수 있게 만든 기술이야.

PEFT 라이브러리

Hugging Face의 peft 라이브러리는 LoRA, QLoRA, prefix tuning, prompt tuning, IA3 등을 통일된 API로 구현해. 어떤 사전학습 모델이든 get_peft_model(model, lora_config)로 감싼 뒤 평소처럼 학습하고, 작은 파일인 어댑터를 저장해 어디서든 다시 불러올 수 있어.

원칙: 현대 미세 조정의 기본 선택은 LoRA야. 전체 미세 조정은 LoRA와의 정확도 차이가 중요하고 충분한 연산 자원을 사용할 수 있을 때만 선택해. 일상적인 모델 적응에는 LoRA가 더 유리해.

Code

PEFT로 12줄 만에 구현하는 LoRA 미세 조정·python
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import LoraConfig, get_peft_model, TaskType

base = "meta-llama/Llama-3.1-8B"
tok = AutoTokenizer.from_pretrained(base)
model = AutoModelForCausalLM.from_pretrained(base, torch_dtype="bfloat16",
                                             device_map="auto")

config = LoraConfig(
    task_type=TaskType.CAUSAL_LM,
    r=16, lora_alpha=32, lora_dropout=0.05,
    target_modules=["q_proj", "v_proj"],
)
model = get_peft_model(model, config)
model.print_trainable_parameters()
# trainable params: 4,194,304 || all params: 8,034,455,552 || trainable%: 0.052%

External links

Exercise

PEFT를 사용해 작은 (1.5B-3B) 공개 LLM을 chat-style 데이터셋으로 LoRA 미세 조정해. 어댑터를 저장한 뒤 기본 모델 위에 다시 불러와 추론 결과가 재현되는지 확인해. 어댑터 파일 크기와 기본 모델 파일 크기도 비교해.

Progress

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

댓글 0

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

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