본문 바로가기
Paper review

LoRA+: Efficient Low Rank Adaptationof Large Models 짧은 논문리뷰

by AI미남홀란드 2024. 3. 6.
728x90

안녕하세요 Simon입니다.

 

NLP LLM 논문을 읽다 보면 방대한 양에 지칠 때가 있는데요. 과연 이 논문을 다 읽더라도 나에게 명확하게 인사이트를 줄 수 있을까? 란 생각이 항상 듭니다. 고효율은 아니라고 생각되어서, 이제 제가 필요한 인사이트가 아니라면? 과감하게 Abstrack 정도와 필수 개념만 보고 요약을 하려고 합니다. 아마 비슷하게 생각하실 거라고 생각합니다.

 

오늘 리뷰해 드릴 논문은 LoRA+ 튜닝의 기존의 방법론보다 더 성능을 개선시키는 LoRA+라는 논문입니다.

 

LoRA+: Efficient Low Rank Adaptation of Large Models

In this paper, we show that Low Rank Adaptation (LoRA) as originally introduced in Hu et al. (2021) leads to suboptimal finetuning of models with large width (embedding dimension). This is due to the fact that adapter matrices A and B in LoRA are updated w

arxiv.org

 

 논문은  네트워크 모델의 효율적인 파인튜닝을 위한 Low Rank Adaptation(LORA) 기법과  개선 버전인 LORA+ 대해 다룹니다. 기존 LORA 방식이  네트워크의 임베딩 차원에서 비효율적인 파인튜닝 문제를 겪는다고 지적하며, 이를 A B 어댑터 행렬의 학습률을 다르게 설정함으로써 해결할  있음을 제시합니다. LORA+는 이러한 방식으로 성능 향상(1%-2% 개선)과 파인튜닝 속도(약 2배 가속)를 동일한 계산 비용으로 달성한다고 주장합니다. 또한, 다양한 언어 모델에 대한 실험을 통해 LORA+의 효과를 실증적으로 검증하고, 실제 애플리케이션에 LORA+를 적용하는 데 있어 실용적인 가이드라인을 제공합니다.

그림1. 로라 와 로라+ 학습에서의 차이점

 

LoRA LoRA+ 사이의 주요 차이점은 A B 행렬에 설정된 학습률에 있습니다. 표준 LoRA에서는 A B 모두 동일한 학습률을 가지지만, 이는 임베딩 차원이   비효율적인 파인튜닝으로 이어질  있습니다. 반면 LoRA+에서는 B 학습률을 A 학습률보다 λ 높게 설정합니다. 여기서 λ 1보다 훨씬  고정 비율입니다. 이러한 설정은 LoRA+ 효율성을 높이며, 논문은 λ 선택하는 방법에 대한 지침도 제공합니다.

 

LoRA+는 어댑터 행렬의 학습 속도에 대한 차별화된 전략을 제안합니다. 행렬 B의 학습 속도를 행렬 A보다 훨씬 높게 설정하여 특성 학습 효율성을 향상합니다.

 

https://github.com/nikhil-ghosh-berkeley/loraplus

 

GitHub - nikhil-ghosh-berkeley/loraplus

Contribute to nikhil-ghosh-berkeley/loraplus development by creating an account on GitHub.

github.com

 

코드가 찾다 보니깐 Reddit에서 발췌해 왔습니다.

 

import torch

# LoRA model
model = ...

optimizer_cls = torch.optim.AdamW
optimizer_kwargs = {'lr': 5e-5, 'eps': 1e-6, 'betas': (0.9, 0.999), 'weight_decay': 0.0}
loraplus_lr_ratio = 20.0
optimizer = _create_optimizer(model, optimizer_cls, optimizer_kwargs, loraplus_ratio):

 

LoRA+ 인수:

  • loraplus_lr_ratio: 학습률의 비율입니다. 이는 최적화기 학습률(예: learning_rate 또는 lr)로 전달됩니다. loraplus_lr_ratio는 모델과 작업에 따라 최적의 선택이 다르며, 일반적으로 작업이 더 어려울수록 이 비율을 더 크게 설정해야 합니다.
  • loraplus_lr_embedding: (선택적) LoRA 모듈이 임베딩 레이어에 추가된 경우 다른 학습률을 지정할  있습니다. 기본값은 1e-6입니다.

 

LoRA의 주요 특징:

  • LoRA 계층: 기존 모델의 특정 계층(예: 선형 계층, 임베딩 계층)에 LoRA 계층을 추가하여, 사전 학습된 가중치에 대한 수정 없이 모델의 표현력을 향상합니다.
  • 가중치 동결: 사전 학습된 가중치는 동결되며, LoRA 계층의 가중치만 학습됩니다.
  • 매개변수 r lora_alpha: LoRA 계층의 크기와 학습률 스케일링을 조정합니다.

LoRA+의 주요 특징:

  • LoRA+ 학습 인자: LoRA+는 LoraPlusTrainingArguments를 통해 LoRA 학습 과정을 더 세밀하게 제어할 수 있는 추가적인 학습 인자를 제공합니다. 예를 들어, loraplus_lr_ratio와 loraplus_lr_embedding을 통해 LoRA 계층의 학습률을 조정할 수 있습니다.
  • 최적화기 구성: LoRA+는 LoRA 계층에 대한 학습률 조정을 포함하여, 모델의 다양한 부분에 대해 서로 다른 학습률을 적용할 수 있는 맞춤형 최적화기 구성을 제공합니다.
  • 모듈별 최적화: LoRA+는 모델의 특정 모듈(예: 임베딩 계층)에 대해 특별히 조정된 학습률을 적용할 수 있도록 합니다.

차이점 요약:

  • 학습 인자와 최적화: LoRA+는 LoRA에 비해 더 세밀한 학습 인자와 최적화 옵션을 제공합니다. 이를 통해 사용자는 모델의 미세 조정 과정을 더 세밀하게 제어할 수 있습니다.
  • 최적화기 구성: LoRA+는 특정 모델 구성 요소에 대한 학습률을 조정하는 등, 최적화 과정에서 더 많은 유연성을 제공합니다.
  • 적용 범위: LoRA는 주로 가중치의 직접적인 수정 없이 모델의 표현력을 향상하는 데 초점을 맞추는 반면, LoRA+는 이러한 접근 방식을 확장하여 모델 학습 과정 전반에 걸쳐 더 많은 제어와 최적화 옵션을 제공합니다.

LoRA+ LoRA 기본 개념을 유지하면서도, 모델의 미세 조정 과정을 더욱 효과적으로 제어하고 최적화할  있는 추가적인 기능을 제공합니다.

 

아직은 그렇게 많이 쓰이진 않는 것 같은데 조만간 리더보드에도 LoRA+ 튜닝 이 나오지 않을까 조심스럽게 생각합니다.

728x90