요약
LoRA는 일반적으로 Transformer의 Self-Attention 레이어에 있는 Query, Key, Value, Output projection 행렬에 적용된다. 실험적으로 이 위치가 가장 효율적인 것으로 알려져 있다.
본문
적용 위치
Transformer 블록에서 LoRA를 적용할 수 있는 위치:
-
Attention 레이어 (권장)
- (Query projection)
- (Key projection)
- (Value projection)
- (Output projection)
-
FFN 레이어 (선택적)
- (Up projection)
- (Down projection)
일반적인 설정
# Hugging Face PEFT 라이브러리 예시
from peft import LoraConfig
config = LoraConfig(
r=8, # 랭크
lora_alpha=16, # 스케일링 팩터
target_modules=["q_proj", "v_proj"], # 적용 모듈
lora_dropout=0.1,
bias="none",
)
적용 모듈 선택 가이드
| 모듈 조합 | 파라미터 수 | 성능 |
|---|---|---|
| q, v | 기준 | 좋음 |
| q, k, v, o | 2배 | 더 좋음 |
| 모든 linear | 최대 | 가장 좋음 |
lora_alpha의 역할
실제 가중치 업데이트는 로 스케일링된다:
- : 스케일링 없음
- : 2배 스케일링 (일반적)