PEFT LoRA 학습 시 랭크와 Alpha의 관계 - Songwooseok123/Study_Space GitHub Wiki

LoRA (Low-Rank Adaptation)에서 Rank(r)와 Alpha(alpha)의 역할과 관계

LoRA는 대규모 언어 모델(LLM)의 **미세 조정(fine-tuning)**을 보다 효율적으로 수행하기 위한 기법입니다.
이 방법은 모델의 모든 가중치를 조정하지 않고, 일부 가중치만 저차원 행렬로 업데이트하여 메모리와 연산 비용을 절감합니다.


1. Rank(r) – 저차원 행렬의 랭크

(1) Rank의 의미

  • r은 LoRA에서 어댑터로 추가되는 저차원 행렬의 차원(rank)을 의미합니다.
  • 기본적으로 r 값은 모델이 학습하는 파라미터의 양을 결정합니다.
  • 높은 r: 더 많은 파라미터를 학습해 새로운 정보를 학습할 수 있습니다.
  • 낮은 r: 모델은 적은 파라미터로 미세 조정되며, 학습 속도와 메모리 사용량이 줄어듭니다. 하지만 세부 정보는 잘 학습되지 않습니다.

(2) Rank 값에 따른 특징

Rank 값 특징 용도
r < 32 낮은 랭크, 세부 정보 학습 어려움 출력 형식 조정, 스타일 변화
r = 32 ~ 128 중간 랭크, 스타일 + 일부 새로운 정보 학습 특정 태스크 최적화
r = 256 높은 랭크, 새로운 개념 및 지식 학습 가능 새로운 개념, 복잡한 정보 학습
  • r = 8: 매우 낮은 랭크로, 스타일만 반영 (새로운 정보 학습은 어려움)
  • r = 64: 중간 정도의 새로운 정보 학습 가능.
  • r = 256: 새로운 지식과 개념을 학습 가능.

(3) 예시

  • r = 4 또는 8:
    • 모델에게 "이런 스타일로 답변해라" 정도의 지시만 가능합니다.
  • r = 64:
    • 중간 정도의 새로운 정보 학습 가능.
  • r = 256:
    • 새로운 지식과 개념을 학습 가능.
    • 하지만 데이터셋이 충분히 크지 않으면 오히려 성능이 저하될 수 있습니다.

2. Alpha(alpha) – 스케일링 파라미터

(1) Alpha의 의미

  • alpha는 LoRA 어댑터의 출력을 스케일링(조정)하는 파라미터입니다.
  • 새로 학습된 가중치가 기존 모델에 얼마나 크게 반영되는지를 조절합니다.
  • 모델의 "목소리"를 크게 하거나 작게 조정하는 역할을 합니다.

(2) Alpha 값에 따른 특징

Alpha 값 스케일링 비율 특징
alpha = r 1:1 안정적인 학습 결과, 균등 반영
alpha = 2r 2:1 새로운 지식을 더 강하게 반영
alpha = 4r 4:1 강력한 학습 (과적합 주의)

(3) 추천 설정

  • 일반적인 경우: alpha = r (안정적)
  • 더 강한 조정이 필요한 경우: alpha = 2r
  • 매우 강력한 조정이 필요한 경우: alpha = 4r (주의: 과적합 가능성)

3. ralpha의 관계

  • 기본적으로 alphar의 배수로 설정하는 경우가 많습니다.
  • 예:
    • r = 16, alpha = 32 (비율 2:1)
    • r = 32, alpha = 64 (비율 2:1)
    • 낮은 r 값일수록 alpha를 높여 LoRA 어댑터가 더 많은 영향력을 갖도록 합니다.

4. 설정 팁 및 실전 조언

  1. 낮은 r (4~8) → 스타일 변경이나 간단한 조정에 적합.
  2. 중간 r (16~64) → 지식 보강 및 특정 태스크에 최적화.
  3. 높은 r (128~256) → 새로운 개념이나 지식을 추가하고자 할 때 사용.

5. 실전에서의 LoRA 설정 예시

from peft import LoraConfig

lora_config = LoraConfig(
    r=32,                   # 어댑터 랭크 (중간 수준)
    lora_alpha=64,          # 스케일링 파라미터 (2배)
    target_modules=["q_proj", "v_proj"],  # 적용할 레이어
    lora_dropout=0.1,       # 드롭아웃
    bias="none"
)