PEFT/LoRA

MultiLoRA 논문 리뷰 (LoRA 와의 차이)

jinuklee 2024. 7. 10. 02:57

1. introduction

스케일링의 증가로 인하로 인한 대규모 모델의 multi-task에서의 능력, grokking등 다양한 능력이 나타나고 있지만 이를 downstream task를 위한 fine tuning 혹은 훈련과정의 비용이 매우 막대하다

이를 위한 PEFT 중 LoRA가 널리 사용되지만 이는 단일 task가 아닌 multi-task에서는 약한 모습을 보인다

Full 파인튜닝과 LoRA의 가장 큰 차이는 SVD(singular vector decomposition)에 있다.

LoRA는 소수의 top singular vector 가 매우 우세한데(dominated) 

fine-tuning 나머지 가중치도 업데이트하기에 더 democratic하다 이를 보완하기 위해 수평적으로(horizontally) LoRA 모듈을 스케일링 하는 MultiLoRA를 제시한다.

 

2. related work

기존의 Multi-task learning with PEFT

HyperFormer, Multitask Prompt Tuning 

하지만 추론(inference)시 지연율(latency) 증가하는 부작용

 

3.method

Low rank adaption 수식

 

LoRA matrix의 parallism을 통해 덜 양극화된 가중치 업데이트

 

파라미터 공유를 줄이기 위해 여러 개의 병렬 LoRA를 삽입하고, 더 큰 최적화 탐색 공간을 가능하게 하기 위해 파라미터 초기화를 변경하며, 학습 가능한 파라미터로 시작점 초기화를 구현

 

LoRA와 비교하여 3가지 주요 차이점이 있다

1. LoRA 모듈의 수평적 확장

2. 스케일링 팩터

3. 파라미터 초기화

 

하나의 큰 LoRA 모듈을 여러 개의 작은 LoRA로 분해하는 것이 ∆W의 랭크를 증가시키지 않는다.

rank(AB) ≤ min(rank(A), rank(B))

rank(A + B) ≤ rank(A) + rank(B)

라는 행렬의 성질 때문

 

 

  • 행렬의 랭크는 그 행렬의 선형 독립인 열(또는 행)의 최대 개수입니다.
  • 의미: 랭크는 행렬이 표현할 수 있는 차원의 수를 나타냅니다. 즉, 행렬이 얼마나 많은 독립적인 정보를 포함하고 있는지를 나타냅니다.

multi-LoRA 수식

 

BAx 가 작은 LoRA 모듈이고 scaling 이 학습가능한 factor 이를 모아서 수평적 LoRA

 

LoRA를 수평적으로 확장하면 독립적인 feature transform , 특히 B의 up-projection이 가능하다. B의 표현력을 더욱 높이기 위해, 우리는 파라미터 초기화 방법을 0으로 하는 대신 Kaiming-Uniform 으로 , 그에 따라 학습 가능한 스케일링 팩터를 도입하여 starting point initialization를 구현

Starting Point Initialization (시작점 초기화):

  1. 정의: 사전 학습된 모델의 가중치를 변경하지 않고 시작하는 초기화 방법입니다.
  2. 목적:
    • 사전 학습된 모델의 지식을 보존하면서 미세 조정을 시작하기 위함입니다.
    • 학습 초기에 모델의 출력이 사전 학습된 모델과 동일하게 유지되도록 합니다.
  3. 구현 방법:
    • LoRA에서는 추가되는 가중치 행렬 B를 0으로 초기화합니다.
    • MultiLoRA에서는 이를 개선하여 Kaiming-Uniform 초기화와 0으로 초기화된 스케일링 팩터를 사용합니다.