[FineTuning] LoRA (Low-Rank Adaptation)

오늘은 수식에 대한 내용은 제쳐두고, LoRA의 핵심 내용에 대해서 간단히 리뷰한다.

 

배경

 

우리는 때로 LLM을 우리의 도메인에 대해 더 잘 답변을 하는 것을 원한다. 특정 도메인에 맞게 LLM을 튜닝하기 위해서는 LLM을 학습시켜야 하는데, Fully하게 LLM을 Fine-Tuning하는 것은 매우 리소스가 많이 필요하다. (LLM의 파라미터 수는 굉장히 많기에)

또한 Base Model을 Fully Fine-Tuning 하는 것이 때로는 Pretraining에서 학습된 기본 성능을 저하 시킬 수도 있다. 왜냐하면 파라미터 수가 많기에 Pretraining에서 성능을 올려놓은 것을 잘못하면 떨어뜨리게 할 수 있게 될 수 있기 때문이다.

 

그래서 위와 같은 문제들을 극복하기 위해 탄생한 학습 방법이 바로 LoRA다.

 

LoRA는 PEFT(Parameter Efficient Fine Tuning) 기술 중 하나로, 학습을 효율적이고 저렴한 비용으로 하고 싶을 때 사용하는 방법이다. (PEFT 중에는 많은 방법론이 존재하는데 그 중 가장 많이 쓰이는 사례가 바로 LoRA다.)

 

개선 방법

 

etc-image-0

 

위 그림의 Notation은 다음과 같다.

  • x: R1d의 input (R은 집합기호 실수체, 여기서는 1행 d열의 Matrix)
  • h: output
  • W (blue color): pretrained weights (사전학습된 파라미터)
  • WRdd: Wd x d인 실수체 R에 속함 (여기서는 d행 d열의 Matrix)
  • A,B (orange color): LoRA Adaptor (Fine tuning 학습되는 파라미터, LoRA의 핵심)
  • A=N(0,σ2): A의 초기값은 정규분포 (Gaussian noise)
  • B=0: B의 초기값은 0

 

위의 그림에서 W는 학습되지 않고 A, B만 학습을 시킨다는게 LoRA의 핵심이다.

 

W는 Pretrained Weights로 매우 많은 파라미터이며 이것을 Fine Tuning하기에는 많은 리소스가 필요하다. 때문에, Adaptor라고 불리는 A와 B를 추가 시켜서 이 부분만 학습하는 것이 LoRA의 핵심이다. 이때 W는 Freeze해서 학습되지 않도록 하기 때문에, Base Model의 기본 성능을 유지할 수가 있다. 

 

A, B의 파라미터 수는 W에 비하여 매우 적으며(보통 1% 미만이라고 한다), 또한 A, B는 Model의 각 Layer에 선택적으로 추가시킬 수 있다.

 

계산 과정

 

etc-image-1

 

Adaptor를 이용해서 h라는 Output을 가져오는 것이 어떤 의미를 가질까?

 

원래는 Input x가 Pretrained Weights를 만나서 그 x가 Vector Space의 어딘가에 위치하게 된다. 그런데, LoRA는 Adaptor를 추가해서 Vector Space에서 위치하고 있는 임베딩 된 벡터의 위치를 조정할 수 있게 된다. 때문에, Adaptor 부분만 학습을 했지만, Vector Space에 위치하는 벡터들의 위치를 재조정하면서 Fine Tuning의 효과를 가져올 수 있게 되어 모델의 결과를 다르게 만들어낼 수 있게 된다.

 

 

LoRA Hyper 파라미터 꿀팁

 

LoRA 기법을 사용할 때, SEMONAN 님의 파라미터 설정 꿀팁에 대해 소개하고 글을 마친다.

  

  • 일반적으로 r의 값은 16에서 시작하여 키우는 경우가 많다.
  • Epoch를 너무 크게하면 Over fitting 되기 쉽기 때문에, r, alpha, dataset의 수 등을 고려하여 적절히 설정한다.
  • Training Dataset의 Loss를 Saturation 될때까지 학습하게되면 Over fitting이 될 수있다. 때문에 Validation set을 함께 확인하는 것이 좋다.
  • Batch size는 너무 작지 않게 하는 것이 좋다.
    • 메모리가 부족하면 Loss를 몇번 누적했다가 학습시키는 방법도 있다.

 


Reference

https://beeny-ds.tistory.com/entry/LORA-%EB%85%BC%EB%AC%B8-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85%ED%95%98%EA%B8%B0

 

[LoRA] 논문 쉽게 설명하기

21년 여름에 혜성처럼 등장해 최근 2년 동안 LLM 학습을 위해 사용되고 있는 LoRA 를 소개한다. LoRA 를 소개할 때 수식에 대한 내용은 최대한 제거하고 원리는 무엇인지, 모델 구조에서 학습을 위해

beeny-ds.tistory.com

https://www.youtube.com/watch?v=0lf3CUlUQtA