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. r
과 alpha
의 관계
- 기본적으로
alpha
는 r
의 배수로 설정하는 경우가 많습니다.
- 예:
r = 16
, alpha = 32
(비율 2:1)
r = 32
, alpha = 64
(비율 2:1)
- 낮은
r
값일수록 alpha
를 높여 LoRA 어댑터가 더 많은 영향력을 갖도록 합니다.
4. 설정 팁 및 실전 조언
- 낮은
r
(4~8) → 스타일 변경이나 간단한 조정에 적합.
- 중간
r
(16~64) → 지식 보강 및 특정 태스크에 최적화.
- 높은
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"
)