LoRA 사용 가이드 (LoraConfig)

LoRA 사용 가이드 (LoraConfig)

LoRA(Low-Rank Adaptation)는 PEFT에서 가장 널리 쓰이고 시작하기 좋은 방식이에요. 큰 행렬을 두 개의 작은 저랭크 행렬로 분해해서, 학습해야 할 파라미터 수를 극적으로 줄여요.

원본 사전학습 가중치는 얼린 채, 어텐션 블록의 query·value 같은 특정 행렬에 작은 update 행렬만 만듭니다. 예를 들어 GPT-3 175B 기준으로 학습 파라미터를 10,000배, GPU 메모리를 3배 줄일 수 있고 풀 파인튜닝과 동등하거나 더 나은 품질을 냈다고 해요.

출처: https://huggingface.co/docs/peft/main/en/package_reference/lora

기본 설정

from peft import LoraConfig, get_peft_model

config = LoraConfig(
    r=16,
    lora_alpha=16,
    target_modules=["query", "value"],
    lora_dropout=0.1,
    bias="none",
    modules_to_save=["classifier"],
)
model = get_peft_model(model, config)
model.print_trainable_parameters()
# trainable params: 667,493 || all params: 86,543,818 || trainable%: 0.77...
  • r(rank) — 낮으면 파라미터가 적고, 높으면 학습 용량 증가.
  • lora_alpha — 스케일링 계수.
  • target_modules — 어느 가중치 행렬을 LoRA로 감쌀지.

초기화 옵션 (init_lora_weights)

  • 기본값: weight A를 Kaiming-uniform, weight B를 0으로 → 항등 변환(no-op) 시작.
  • "gaussian": A를 가우시안 분포로, B는 0. (Diffusers 스타일)
  • False: 디버깅·테스트 전용. 항등 변환이 되지 않게 초기화.
  • "pissa": 주요 특이값·특이벡터로 어댑터 초기화 → QLoRA 대비 빠른 수렴·양자화 오차 감소. "pissa_niter_N"은 고속 SVD(몇 초).

QLoRA 스타일 (전 레이어)

config = LoraConfig(target_modules="all-linear", ...)

더 알아보기