- table 채우
- AI 코드 짜오기
- t-ene 분석 법 알아오기
lora_config = LoraConfig(
r=8, # rank of low-rank matrices
lora_alpha=16, # scaling factor for LoRA
target_modules=["q_proj", "v_proj"], # LoRA will be applied to attention projections
lora_dropout=0.1, # dropout rate for LoRA layers
bias="none", # no bias terms in LoRA layers
)
# LoRA 적용
config = LoraConfig(
r=8,
lora_alpha=32,
lora_dropout=0.1,
target_modules=["visual_projection"]
)
model = get_peft_model(model, config)
설명
1. r (Rank of Low-Rank Matrices)
- 설명: LoRA는 기본적으로 원래의 가중치 행렬을 두 개의 저차원(low-rank) 행렬로 분해하여 학습합니다.
r은 이 두 저차원 행렬의 행렬 차원을 설정합니다.
- 역할:
- 더 작은
r값은 메모리 및 계산량을 줄이지만, 모델이 표현할 수 있는 정보의 양도 줄어듭니다. - 더 큰
r값은 더 많은 정보 학습이 가능하지만, 메모리 및 계산량이 증가합니다.
- 추천 값: 일반적으로 4~32 사이에서 설정.
2. lora_alpha (Scaling Factor)
- 설명: LoRA에서 학습된 저차원 가중치의 출력을 스케일링하기 위한 계수입니다.
- 역할:
- LoRA 출력에
lora_alpha를 곱해 모델의 업데이트 강도를 조절합니다. - 큰 값은 업데이트를 확대하고, 작은 값은 더 작은 변화만 허용합니다.
- 공식: LoRA output=α⋅(A×B) 여기서 A와 B는 저차원 행렬입니다.
LoRA output=α⋅(A×B)\text{LoRA output} = \alpha \cdot (A \times B)
AA
BB
- 추천 값: 일반적으로
r과 비례하여 설정합니다. rα를 일정하게 유지하는 것이 일반적입니다.
αr\frac{\alpha}{r}
3. target_modules
- 설명: LoRA가 적용될 모델의 특정 모듈을 지정합니다.
- 역할:
- 모델 내에서 LoRA가 저차원 학습을 적용할 부분을 설정합니다.
- 여기서는
q_proj(쿼리 투영)과v_proj(값 투영) 모듈에 적용합니다. - 주로 attention layer에서 사용되는 모듈입니다.
- 적용 범위:
- 일반적으로 Transformer 기반 모델의 self-attention 구조에 사용됩니다.
4. lora_dropout
- 설명: LoRA 레이어에서 적용되는 드롭아웃(dropout) 비율입니다.
- 역할:
- 학습 중 일부 뉴런의 출력을 랜덤하게 0으로 설정하여 과적합을 방지합니다.
0.0으로 설정하면 드롭아웃을 적용하지 않습니다.
- 추천 값: 보통 0.1~0.3 사이에서 설정.
5. bias
- 설명: LoRA 레이어에 bias term(편향)을 추가할지 여부를 결정합니다.
- 가능 값:
"none": 편향 추가하지 않음."all": 모든 LoRA 레이어에 편향 추가."lora_only": LoRA의 저차원 가중치에만 편향 추가.
- 역할:
- 모델의 편향 학습 필요 여부에 따라 설정.
요약
r: 저차원 행렬의 차원, 모델 학습 효율성과 성능 조절.
lora_alpha: LoRA 출력 스케일링, 학습 강도 조절.
target_modules: LoRA 적용 대상 모듈, 주로 Transformer의 attention 모듈.
lora_dropout: 드롭아웃 비율, 과적합 방지.
bias: 편향 추가 여부 결정.
이 설정들은 모델의 미세 조정 시 메모리 효율성과 성능 간의 균형을 맞추는 데 중요한 역할을 합니다.
r = 8 or 16
알파 = 16 or 32
visual_projection:- 이미지의 특징 투영 과정에 집중적으로 개선이 필요할 때 사용.
- CLIP 모델이 처리하는 특정 시각적 데이터셋(예: 스케치, 미술 작품 등)에 더 적합하게 만들고자 할 때 효과적.
q_proj,v_proj:- 모델의 어텐션 메커니즘을 효율적으로 개선.
- 특정 시퀀스 데이터(텍스트 또는 이미지 패치 간의 관계)를 잘 학습하도록 조정할 때 유용.
4o