수달이네 기술 블로그

LoRA: Low-Rank Adaptation of Large Language Models-(Hu et al.,2021) - 약식 본문

AI공부/논문 리뷰

LoRA: Low-Rank Adaptation of Large Language Models-(Hu et al.,2021) - 약식

슬픈 수달이 2026. 4. 6. 15:35

LoRA란?

많은 지식이 들어있는 백과사전(모델)에 새로운 지식을 추가할 때

  • 처음부터 다시 인쇄(Full Fine-tuning): 시간, 돈이 많이 듦
  • 단어의 설명을 한 일부 내용이 담긴 포스트잇을 붙임(LoRA): 훨씬 빠르고 돈이 조금 듦.

LoRA: Low-Rank Adaptation of Large Language Models-(Hu et al.,2021)

거대 언어 모델을 효율적으로 업데이트 하는 방법을 연구한 LoRA논문

  • 기존엔 수십억개의 파라미터를 다시 계산, 저장하는 방식을 사용 → 막대한 자원 낭비
  • 작업마다 개별적인 모델 체크포인트를 저장해야 함→저장 용량 부담.

저차원 행렬 분해(Low-Rank Adaptation) ← 핵심 아이디어

모델이 학습을 통해 업데이트될 때, 파라미터 변화량(ΔW)가 내재적 차원이 매우 낮다는 가설에 집중

  • 내재적 차원이 낮다: 파인튜닝의 차원 변화가 수백~수천차원의 공간에 퍼져있는게 아니라, 사실상 아주 낮은 1~4차원의 공간에 몰려있다는 것.

기존의 가중치 행렬 W는 고정 시킨 채, 업데이트될 변화량을 두개의 작은 행렬 A와 B의 곱으로 분해

  • $W + \Delta W = W + BA$
  • $W \in \mathbb{R}^{d \times k}$(기존 가중치, 고정)
  • $B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times k}$ (학습 가능한 저차원 행렬)
  • 여기서 나타내는 r(Rank)는 d, k보다 훨씬 작은(1,2,4,8)로 설정한다.

이로인해 학습해야할 파라미터 수가 전체의 0.01수준까지 줄어든다.

  • 모델 구조 자체는 변하지 않아 추론속도가 느려지지 않는다.

변화량 구하는 법

  1. W₀ 고정, B=0 / A~정규분포로 초기화 (→ 처음엔 ΔW=0)
  2. 입력 x가 들어오면 h = W₀x + BAx 계산
  3. loss를 역전파할 때 W₀에는 gradient를 흘리지 않고 B와 A에만 흘림
  4. 반복하면서 B와 A가 업데이트됨 → BA가 점점 의미 있는 ΔW를 형성

즉, 가정에의해 변화량이 BA로 표현 가능하다 하고, 입력에 따라 BA를 구함.

→ 해당 값을 추후 행렬 W 에 더해준다. → 이 덕에 태스크를 전환하기 편함

실험 결과

GPT-3기준 학습 파라미터를 10,000배 줄이는데 성공 VRAM을 1.2TB에서 350GB로 낮췄음.

  • r즉, BA의 차원이 1~4정도로도 충분한 결과를 나타냈음.
    • r이 작을 경우: 변화량을 매우 적은 정보량으로 압축(모델이 아주 핵심적인 특징만 학습
    • r이 클경우: 변화량에 많은 세부 정보를 담을 수 있지만, 파라미터 수가 크다.

추가적으로 사전학습에서 배웠지만 강조하지 않은 방향을 증폭시킴

→ 해당 방향을 새로 만드는 것이 아닌 단순히 키워줄 뿐이라는 해석