LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

Alope·2024년 8월 1일
0

논문 - LLM

목록 보기
9/9

https://arxiv.org/pdf/2106.09685 - 논문링크

논문리뷰

Abstract

  1. 최근 자연어처리에서는 pre-trained된 language model을 가지고 downstream-application에 적용
  2. 다양한 application에 알맞게 적용을 할려면 fine-tuning 작업을 해야한다.
  3. 하지만, fine-tuning을 할 때 가장 큰 단점은 모든 파라미터를 업데이트 해야한다는 것이다.
  4. 기존 GPT-2나 RoBERTa large에서는 단순 불편한 문제였지만, language model이 발전함에 있어 GPT-3와 같은 1750억개의 학습 파라미터가 있는 language model에서는 중요한 문제이다.
  5. 따라서 이 논문에서는 Low-Rank Adaptation, 또는 LoRA라는 방법론을 제시하였다
  6. LoRA는 pre-trained된 모델의 weight들을 고정시킨 뒤, 학습 가능한 rank decomposition matrices를 transformer의 각 레이어에 붙여 fine-tuning할 때 이들만 업데이트 하는 방식이다.
  7. 이로인해, 더 적은 수의 파라미터를 업데이트 함에도 많은 language model에서 더 높은 성능을 보여주었다.

rank decomposition matrices란?
행렬을 더 작은 랭크의 행렬로 분해햐는 기법. 주로 행렬의 차원을 축소하여 계산 효율성을 높이기 위해 사용

이 예시를 통해 큰 행렬을 두 개의 작은 행렬로 분해하는 것을 확인할 수 있음. LoRA는 이 아이디어를 통해 pre-trained model의 일부 작은 행렬만 업데이트함으로 효율적인 fine-tuning을 가능하게 함.

1. Introduction

  1. 모델이 클수록 pre-trained된 fine-tuning을 할 때 더 많은 파라미터를 학습시켜야 해서 시간도 오래 걸릴 뿐더러 비효율적이다.
  2. 따라서 모든 파라미터를 업데이트 하는 것이 아닌, 일부 파라미터만 업데이트 하는 방식들이 제시되었다.
  3. 하지만, 이러한 방식은 모델 깊이를 확장하거나 모델의 사용 가능한 시퀀스 길이를 줄임으로 inference latency와 fine-tuning baseline(기준선)과 일치하지 않는 경우가 많아 효율성과 모델 품질 사이에 trade-off가 발생

    Inference latency : 모델이 답을 내기까지 걸리는 시간
    Trade-off : 두 가지를 동시에 최대로 얻을 수 었어, 한쪽을 높이면 한쪽이 낮아지는 상황 (즉, 한쪽은 포기해야 한다는 것)

  4. 따라서 논문 저자들은 이전의 연구에서 영감을 받아, over-parametrized model이 실제로 low instrinsic dimension에 놓을 수 있다 주장하였다.

    Over-parametrized model : 모델이 매우 복잡해, 많은 파라미터를 가지고 있는 상황
    Low instrinsic dimension : 모델이 겉보이게 매우 복잡해 보이는 데이터나 모델도 실제로는 몇 가지 주요 변수로 설명할 수 있는 것

  5. 즉, low dimension의 intrinsic rank를 이용해 fine-tuning하는 방식은 Low-Rank Adaptation(LoRA)를 제시하였다.

    Intrinsic Rank : 데이터나 모델에서 실제로 중요한 차원의 수를 나타내는 개념

  6. 이를 통해 pre-trained model의 wieght들은 업데이트 하지 않고, LoRA의 rank decomposition matrices의 weight들만 업데이트 하는 것이다. (레이어의 변화에 대한 rank decomposition matrix들을 최적화하여 신경망의 일부 레이어를 간접적으로 학습)

    직접적인 학습 : 모든 파라미터를 직접 업데이트 하는 방식
    간접적인 학습 : 기존의 큰 가중치 행렬을 고정하고, 작은 행렬들을 업데이트하여 간접적으로 가중치를 조정하는 방식
    LoRA의 작동 방식 : 가중치 행렬 𝑊는 고정된 상태로 두고, 작은 행렬 𝐴와 𝐵만 업데이트하여 𝑊를 간접적으로 조정. 이로 인해 모델의 일부 레이어는 간접적으로 학습되며, 이는 메모리와 계산 비용을 절감하면서도 높은 성능을 유지할 수 있음.

- 사전 학습된 가중치 𝑊를 고정하고, 작은 행렬 𝐴와 𝐵를 추가하여 fine-tuning을 수행하는 LoRA 방법을 설명하는 사진

  1. 예를 들어 GPT-3 175B의 경우 rank-1, rank-2 (위 그림에서 r=1, r=2인 경우)와 같은 low rank로도 full rank (rank-d, d는 model의 hidden dimension)를 대체할 수 있음을 증명했다고 밝히고 있다. (즉, GPT-3와 같은 대형 모델에서 LoRA 방법을 적용했을 때, 매우 작은 rank(예: 1 또는 2)로도 충분히 원래의 전체 rank를 대체할 수 있다는 것을 증명)

    Rank: 행렬에서 독립적인 정보의 차원의 수
    LoRA에서의 Rank: 큰 가중치 행렬을 작은 행렬로 분해할 때 사용되는 차원의 수로, 매우 작은 값으로 설정(예: 1 또는 2)

Terminologies

  • 본 논문은 Transformer의 아키텍처의 기존 용어 사용

2. Problem Statement

  1. 다음은 기존의 fine-tuning 방식인 모델의 모든 파라미터를 업데이트 하는 "최대우도 추정(Maximum Likelihood Estimation, MLE)" 목적식이다.

    Φ: 모델의 파라미터
    maxΦ: 매개변수 Φ를 최적화
    (x,y)∈Z: 데이터 샘플
    t: 타임 스텝
    PΦ(yt|x, y<t): 주어진 입력 x와 이전 출력 y<t에서 현재 출력 yt의 확률

  2. 즉, MLE를 이용해 모델의 전체 파라미터 Φ를 업데이트 하는 것이다.

  3. 하지만, 앞서 언급했다 시피 이 방식은 pre-trained과 fine-tuning할 때 전체 파라미터 Φ를 업데이트 한다는 문제가 있다. (계산 비용과 메모리 사용량이 큼)

  4. 따라서 본 논문에서는 각 downstream task마다 다른 LoRA layer를 사용해 효율적으로 파라미터를 업데이트 하도록 제시하였다.

    LoRA Layer: 사전 학습된 모델의 가중치 행렬에 두 개의 작은 행렬을 추가하여 효율적으로 파라미터를 업데이트하는 구성 요소.

  5. 기존의 model 파라미터인 Φ를 이용해 forward를 진행한 뒤 얻어지는 ΔΦ(Φ의 gradient)를 이용해 backpropagation을 진행할 대 LoRA의 파라미터 Θ를 이용하는 것이다.

  6. 다음은 LoRA를 이용해 일부분의 파라미터만 업데이트하는 목적식이다.

    Θ: LoRA의 파라미터
    Φ0: 사전 학습된 모델의 고정된 파라미터
    ΔΦ(Θ): LoRA 파라미터 Θ를 이용해 계산된 파라미터 업데이트

  • 이 식은 모델의 일부 파라미터만 업데이트하여 효율적으로 파라미터를 학습하는 방법이다.
  1. 논문에서는 LoRA로 업데이트하는 파라미터 Θ의 크기인 |Θ|가 기존의 fine-tuning으로 업데이트 하는 파라미터 Φ의 크기인 |Φ|의 0.01%라고 한다. (훨씬 효율적이고, task-specific하다)

3. Aren't Existing Solutions Good Enough?

  1. 본 논문에서 해결하고자 하는 fine-tuning의 문제는 본 논문외에도 다양한 시도들이 있었다.
  • 이러한 방법을 Parameter-Efficient Fine-Tuning (PEFT)라 부른다.
  1. 다양한 시도들은 크게 두 가지 흐름으로 나눌 수 있다
  • Adding adapter layers : adapter라는 layer를 transformer block에 추가해주어 이 부분만 학습하는 것으로 기존 fine-tuning을 대체하는 것

    Adapter Layers: 대규모 pre-trained model의 각 transformer 블록 사이에 추가되는 작은 네트워크 모듈.

  • Optimizing some forms of the input layer activations : language model의 입력으로 들어갈 input vocab embedding에 prompt embedding을 추가하고, prompt embedding을 다양한 학습 방법으로 학습시키는 것으로 기존 fine-tuning을 대체하는 것

    prompt embedding: 모델의 입력으로 추가되는 특화된 임베딩 벡터로, 특정 작업을 수행하기 위한 힌트나 지시를 포함

  1. 그러나 위 두 가지 방법은 문제가 있다.
  2. Adapter Layers Introduce Inference Latency (adding adapter layers)
  • transformer를 이용한 기존 대규모 신경망은 하드웨어의 병렬 처리가 가능하다는 것이 장점이었는데, adapter를 적용하면 추가적인 컴퓨팅 작업이 들어가기 때문에 작업 시간이 눈에 띄게 증가하는 것을 볼 수 있다.
  • 파라미터를 높일수록, 즉 연산량이 많아질수록 확연하게 시간이 증가했다.

    추론 지연(inference latency): Adapter를 사용하면 기존의 Fine-Tune/LoRA 방식에 비해 추론 시간이 증가함.
    Batch Size와 Sequence Length의 영향: 배치 크기와 시퀀스 길이가 작을수록 Adapter의 영향이 더 크게 나타남.
    Adapter의 종류:
    Adapter𝐿: 낮은 메모리와 계산 요구량으로, 상대적으로 적은 지연 발생.
    Adapter𝐻: 높은 메모리와 계산 요구량으로, 상대적으로 큰 지연 발생.

  1. Directly Optimizing the Prompt is Hard (optimizing some forms of the input layer activations)
  • 이 방법에 해당하는 대표적인 예시로는 prefix tuning이 있는데, 최적화하는 것 자체가 어렵고, 그 성능이 단조적으로 증가하지 않고 진동하는 경우도 있다고 논문에서 밝히고 있다. (its performance changes non-monotonically in trainable parameters)
  • 더하여 이 방법을 사용하게 되면, sequence input을 넣을 때 prompt 자리를 미리 만들어놓아야 하기 때문에 downstream task를 처리하는데 사용할 수 있는 sequence length의 길이가 줄어드는 것도 한계라 밝히고 있다.

    Prefix Tuning: 입력 시퀀스 앞에 학습 가능한 프롬프트 임베딩을 추가하여 모델의 출력을 조정하는 방법
    prompt 자리 미리 만들기: 입력 시퀀스 앞에 prompt 임베딩을 추가하는 과정

4. Our Method

  1. 앞으로 소개할 LoRA 방법론은 본 논문에서는 transformer에만 적용했지만, 다른 Deep-Learning 구조에서도 적용할 수 있다.

4-1. Low-Rank Parametrized Update Matrices

  1. 신경망의 많은 레이어들은 행렬곱으로 이루어져 있는데, 대부분의 weight layer들은 full-rank이다.
  2. 기존의 연구에서 모든 pre-trained model은 "low instricsic rank"를 가질 수 있다고 밝혔다.
  3. 예를 들어 기존 모델의 가중치가 메트릭스가 dk 크기는 가질 때, 이를 dr 매트릭스 B와 r*k매트릭스 A로 나타낼 수 있다.(여기서 r 차원은 d, k보다 작은 차원) 기존의 파라미터 업데이트 과정과, A&B 매트릭스를 이용한 forward pass 과정을 수식으로 나타내면 다음과 같다.

    Low Intrinsic Rank: 큰 행렬에서 중요한 정보가 몇 개의 작은 부분에 집중되어 있어서, 이 큰 행렬을 더 작은 행렬로 나눠도 거의 같은 정보를 유지할 수 있다는 개념


5. 가중치 초기화 시 A 매트릭스는 가우시안 분포를 따르는 랜덤 변수로 초기화하고, B 매트릭스는 0으로 초기화한다.
6. A Generalization of Full Fine-tuning

  • LoRA 방법론을 통하면 차원 수는 감소하지만 (full-rank -> r-rank), 원래 모델과 관련된 weight만 효율적으로 학습가능하다.
  • 반면 두 가지 기존의 방법론의 경우 한계점이 존재하는데 다음과 같다.
    - adapter-based 방법론의 경우엔 추가적으로 Multilayer Perceptron(MLP) 레이어를 학습해야 한다.

    MLP Layer (다층 퍼셉트론 레이어): 여러 개의 완전 연결 층으로 구성된 신경망 모델.
    완전 연결 층: 각 뉴런이 이전 층의 모든 뉴런과 연결. 이로 인해
    모든 입력 뉴런의 정보를 조합하여 출력 뉴런으로 전달할 수 있음.
    차원 수 감소: 모델의 가중치 행렬을 작은 행렬로 분해하여, 학습해야 하는 파라미터의 수를 줄이는 것을 의미. 이를 통해 계산 비용과 메모리 사용량을 줄이고, 효율적으로 모델을 학습할 수 있음

  • prefix-based 방법론의 경우 input에 prompt embedding을 추가해야하기 때문에 long input sequences 추가하는데 한계가 있다고 언급한다.
  1. No Additional Inference Latency(추론 지연)
  • 특정 task를 위해 LoRA 방법론으로 BA 가중치 매트릭스를 이용해 fine-tuning을 한 뒤 downstream task에 적용하고 싶은 경우, 단순히 BA 매트릭스를 B'A'매트릭스로 바꾸는 식으로 효율적인 학습이 가능하다.

4-2. Applying LoRA to Transformer

  1. Transformer 한 블럭에는 여러 개의 가중치 매트릭스가 있는데, self-attention module 4개의 가중치 매트릭스가 있고(Wq, Qk, Wv, Wo) encoder, decoder 각각에 MLP modlue이 있다.
  2. 이 중에서 본 논문이 LoRA를 적용하는 가중치 매트릭스는 attention 가중치 매트릭스로만 제한한다.
    (MLP module의 가중치 매트릭스는 적용하지 않는다 - 'freeze the MLP modules both for simplicity and parameter-efficiency 때문')
  3. Practical Benefits and Limitations
  • LoRA의 가장 큰 이점은 메모리와 저장 공간을 효율적으로 사용할 수 있다는 것이다.
  • 특히 GPT-3 1750억의 경우 VRAM의 사용량의 1.2TB에서 350GB로 줄일 수 있다.
  • 또한 rank=4로 W_q, W_v 매트릭스만 adapt할 경우 35MB까지 줄일 수 있다.
  • 이를 통해 25%의 속도 향상을 관찰할 수 있었다.
  • 반면 LoRA의 한계로 다른 downstream task를 진행할 때마다 다른 AB 매트릭스들을 사용해야 한다.

5. Empirical Experiments

  1. 본 논문에서는 LoRA를 RoBERTa, De-BERTa 그리고 GPT-2에 적용시켜보고 크기를 키워 GPT-3 175B에도 적용시켜 보았다고 말한다.
  2. Natural Language Understanding(NLU), Natural Language Generation(NLG), GLUE bencgmark NL to SQL queries, SAMSum 등 다양한 downstream task에서 성능을 평가하였다.
  • 모든 실험은 NVIDIA Tesla V100을 이용해 진행되었다.

5-1. Baselines


3. * 표시는 이전 연구의 방법론을 의미 && † 표시는 공정한 비교를 위해 Parameter-Efficient Transfer Learning for NLP, Houlsby etal., (2019). 의 설정을 따라 실험한 결과를 나타낸다.

4. RoBERTa, De-BERTa, GPT-2를 이용한 대부분의 task에서 LoRA를 적용한 방법론이 가장 좋은 성능을 낸다는 것을 알 수 있다.

5. GPT-3를 이용한 task에서도 LoRA를 적용한 방법론이 가장 좋은 성능을 낸다는 것을 알 수 있다.

6. Understanding the Low-Rank Updates

  1. 본 연구에서 진행한 실험들을 바탕으로, 세 가지 토픽에 관해 연구진들이 조사한 내용을 밝히고자 한다.
  • 어떠한 가중치 매트릭스에서 LoRA를 이용해야 가장 높은 성능 향상을 기대할 수 있을까?
  • LoRA의 최적의 rank는 무엇일까?
  • Adaptation matrix ΔW와 W의 사이에는 어떤 관계가 있을까?

6-1. Which Weight Matrices in Transformer Should We Apply LoRA to?

  1. 앞서 언급한 것처럼, self-attention module에 있는 가중치 매트릭스들(Wq, Qk, Wv, Wo)만 고려했으며, 전체 파라미터 수가 18MB(FP16인 경우 35MB)을 넘지 않도록 설정했다.
  • 업데이트하는 파라미터의 용량을 제한하기 위해 예를 들어 한 가지 종류의 가중치 매트릭스를 사용한다면 rank=8이며, 두 가지 종류의 가중치 매트릭스를 사용한다면 rank=4로 하는 것이다.
  1. 결과를 살펴보면 W_q, W_q 두 가중치 파라미터에 LoRA를 적용하는 것이 업데이트하는 가중치의 종류를 최대한 적게 가지면서 좋은 성능을 냈다. 이를 통해 알 수 있는 것은 rank를 4로 해도 충분히 ΔW의 정보를 담을 수 있다는 것이다.

6-2.What is the Optimal Rank r for LoRA?


4. 놀랍게도, 매우 작은 rank로도 준수한 성능을 내는 것을 확인할 수 있다. (ΔW 업데이트 시, 매우 작은 'intrinsic rank'를 이용할 수 있다.)
5. Subspace similarity between different r.

  • 똑같은 사전 학습 모델에서 rank 크기가 각각 8, 64인 LoRA를 적용해 학습한 뒤 만들어진 각각의 LoRA.매트릭스를 Ar=8, Ar=64라 할 때, 이들의 singular value decomposition(SVD)를 구한 뒤, U 값과 Grassmann distance를 이용해 두 매트릭스의 유사도를 계산한다.
  • 그 결과 Ar=8, Ar=64의 1차원에서 유사도가 제일 높게 나왔으며 차원이 커질수록 유사도가 감소하였다.
  • 즉, 이것은 LoRA의 rank를 매우 저차원으로 했을 때도 (심지어 rank가 1일 때도) LoRA를 적용한 GPT-3가 downstream task에서 좋은 성능을 낼 수 있는 이유를 보여준다.

7. Conclusion and Future Work

  1. LLM을 fine-tuning하는 것은 많은 비용과 시간이 드는 작업이다.
  2. 본 논문에서 제시한 LoRA 방법론을 통해 얻을 수 있는 장점은 inference latency 줄일 뿐만아니라 input sequence 길이를 줄이지 않고도 fine-tuning이 가능하다는 것이 있다.
  3. 또한 다양한 downstream task에서 단순히 적은 수의 LoRA 파라미터만 바꾸면 되기에 효율적이다고 할 수 있다.
  4. Future works에는 다음과 같은 것이 있다.
  • LoRA와 다른 adaptation 방법론과 결합할 수 있지 않을까
  • LoRA의 원리가 명확하게 밝혀지지는 않았음
  • LoRA의 weight matrices를 고를 때 휴리스틱한 방법에 의존
  • ΔW의 rank 축소가 가능하다면 W도 rank를 축소해도 되지 않을까 하는 의문
profile
성장하는 컴공생

0개의 댓글