본문 바로가기
Data Science/Algorithm

LoRA (Low-Rank Adaptation)

by leanu 2024. 11. 22.

LoRA(Low-Rank Adaptation)는 대규모 언어 모델(LLM)의 효율적인 파인튜닝을 위한 기법입니다.

 

Low-Rank : 저순위 라는 개념은 주로 수학, 선형대수학, 그리고 머신러닝에서 행렬이나 텐서의 성질과 관련이 있습니다.

구체적으로 말하면, Low-Rank는 행렬의 계수(rank)가 낮다는 것을 의미합니다.

이를 이해하려면 Rank(계수)개념부터 알아야 합니다.

 

Rank(계수) 란?

행렬의 Rank는 행렬에서 독립적인 행 또는 열 벡터의 최대 수를 나타냅니다.

예를 들어 3x3행렬이 있을때 그 행렬의 Rank는 최대 3입니다.

이때 Full-Rank (완전계수)는 Rank가 행렬의 최대크기와 같을 때를 나타내고,

Low-Rank (저계수)는 Rank 가 행렬의 최대 크기보다 작을 때를 나타냅니다.

 

그래서 Low-Rank행렬은 독립적인 정보가 상대적으로 적은 행렬을 의미합니다.

즉 행렬의 대부분의 정보가 많은 중복 정보를 포함하고 있으며 특정 패턴이나 구조로 압축될 수 있다는 의미입니다.

 

LoRA의 핵심 아이디어

LoRA는 모델의 거대한 가중치 행렬이 실제로는 Low-Rank 구조를 가진다고 가정합니다. 

즉, 모델의 파라미터는 많은 중복된 정보를 가지고 있고, 이를 더 작은 Low-Rank행렬로 근사할 수 있다는 것이죠.

그래서 LoRA는 다음과 같이 동작합니다.

 

LoRA 동작방식

  1. 원래 가중치 행렬을 고정 (freeze) : 모델의 사전 학습된 모델의 가중치를 수정하지 않습니다.
  2. Low-Rank 행렬 추가 : 각 계층의 가중치 행렬에 Low-Rank 행렬을 추가하여 학습합니다. 이 Low-Rank 행렬은 새로운 작업에 필요한 정보만 학습합니다.
  3. 전체 파라미터를 줄임 : 추가된 Low-Rank 행렬만 학습하기 때문에 계산량이 크게 줄어듭니다.

LoRA는 다음과 같이 표현할 수 있습니다.

  • W : 사전 학습된 원래의 가중치 행렬
  • A : 작은 크기의 Low-Rank 행렬 (학습 가능)
  • B : 또 다른 작은 크기의 Low-Rank 행렬 (학습 가능)

즉 A와 B만 학습하기 때문에 학습해야 할 파라미터 수가 크게 줄어듭니다.

 

 

LoRA 적용 사례

최근 연구에 따르면, LoRA를 활용한 파인튜닝 모델이 GPT-4를 능가하는 성능을 보였습니다.

특히, 4비트 LoRA로 파인튜닝된 모델은 기본 모델보다 평균 34점, GPT-4보다 10점 높은 성능을 기록했습니다.

 

댓글