Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

LoRA: Low-Rank Adaptation

대규모 언어 모델(LLM)은 자연어 처리(NLP) 작업에서 뛰어난 성능을 보여왔지만, 기존의 미세조정(Fine-tuning) 방식은 높은 비용과 자원을 요구합니다.

기존 미세조정 방식의 한계

미세조정의 가장 큰 단점은 새로운 작업에 맞춘 모델이 기존 모델과 동일한 수의 매개변수를 포함한다는 점입니다. 이는 대규모 모델의 크기가 점점 커지는 추세와 맞물려 심각한 문제로 이어지고 있습니다. GPT-2(Radford et al.)나 RoBERTa Large(Liu et al., 2019)와 같은 모델에서는 Fine-Tuning으로 인해 발생하는 매개변수 저장 문제는 비교적 작은 “불편함” 정도로 여겨졌습니다. 하지만, GPT-3(Brown et al., 2020)와 같이 1750억 개의 학습 가능한 매개변수를 가진 초대규모 모델이 등장하면서, 이러한 문제는 단순한 불편함을 넘어 심각한 배포 및 운영상의 도전 과제로 변모했습니다.

배포와 운영의 도전 과제

  1. 매개변수 저장 문제

    • Fine-Tuning 방식에서는 각 작업마다 새로운 모델의 전체 매개변수를 저장해야 합니다.

    • 작업 수가 늘어날수록 저장 공간과 운영 효율성에 치명적인 영향을 미칩니다.

  2. 확장성과 비용 문제

    • 모델 크기가 증가할수록, Fine-Tuning을 통해 생성된 각 작업별 모델의 크기도 비례적으로 커집니다.

    • 이는 운영비용의 급격한 증가를 초래하며, 초대규모 언어 모델이 점점 더 자주 등장하는 환경에서 현실적인 제약이 됩니다.

  3. 추론 시 비효율성

    • Fine-Tuning을 적용한 모델을 배포할 경우, 각 작업별 모델이 독립적으로 관리되어야 합니다.

    • 작업 전환(task-switching) 시 모든 매개변수를 로드해야 하며, 이는 실시간 추론 서비스나 다중 작업 환경에서 비효율적인 운영 구조를 초래합니다.

저차원 행렬 근사

LoRA(Low-Rank Adaptation)는 이러한 문제를 해결하기 위해 제안된 접근법으로, 기존 모델의 가중치를 고정하고 소규모 저랭크 행렬(rank decomposition)을 학습하여 효율적인 전이 학습을 가능하게 합니다. LoRA는 저비용으로 모델을 특정 작업에 적응시키며, 기존 방법과 동등하거나 더 나은 성능을 제공합니다. Hu et al. (2021)

기존의 완전연결 계층은 다음과 같이 표현됩니다:

z=Wx+b,WRn×n,bRnz = Wx + b, \quad W \in \mathbb{R}^{n \times n}, b \in \mathbb{R}^{n}

LoRA는 이때 W를 고정하고, 랭크 분해된 두 개의 작은 행렬 A, B를 도입하여 가중치의 변화분을 표현합니다:

z=W0x+b0+BAx,ARn×r,  BRr×nz = W_0x + b_0 + BAx, \quad A \in \mathbb{R}^{n \times r},\; B \in \mathbb{R}^{r \times n}

여기서 rr은 랭크(rank)로, 일반적으로 rnr \ll n입니다.

랭크 분해(rank decomposition)는 큰 행렬을 두 개의 더 작은 행렬로 나누어 근사하는 방법입니다. 이 두 행렬을 곱하면 원래 행렬과 유사한 기능을 수행하도록 설계됩니다. 특히 행렬의 차원은 크지만 실제로 담긴 정보가 제한적인 경우, 즉 '내재 랭크(intrinsic rank)'가 낮을 때 유용합니다.

예를 들어, 1000×1000 크기의 가중치 행렬 WW가 있다고 가정하면, 이를 직접 학습하면 약 100만 개의 파라미터가 필요합니다. 하지만 이 행렬이 실제로는 10개의 주된 방향(축)만 따라 변한다면, 다음과 같은 저랭크 분해로 근사할 수 있습니다:

WBA,AR1000×10,  BR10×1000W \approx BA, \quad A \in \mathbb{R}^{1000 \times 10},\; B \in \mathbb{R}^{10 \times 1000}

이 경우 학습해야 할 파라미터 수는 약 2만 개(10×1000×210 \times 1000 \times 2)로 줄어들며, 표현력은 거의 유지됩니다.

LoRA는 사전 학습된 언어 모델의 가중치에 대한 업데이트가 낮은 내재 랭크를 갖는다는 관찰에 기반합니다. 이는 대규모 언어 모델이 실제로는 필요한 것보다 훨씬 많은 매개변수를 갖고 있는, 즉 과매개(over-parameterized) 상태이기 때문입니다. 과매개란 모델이 높은 표현력을 위해 많은 수의 파라미터를 가지는 상태이며, 그 중 핵심적인 정보는 저차원 공간에서 충분히 표현될 수 있습니다.

따라서 전체 미세 조정(full fine-tuning)을 수행하지 않더라도, LoRA는 가중치 변화분을 저랭크 행렬로 표현함으로써 적은 수의 매개변수만 학습하여도 기존과 유사한 예측 성능을 얻을 수 있습니다.

LoRA 정리

LoRA는 사전 학습된 모델의 가중치 업데이트를 저랭크 행렬로 제한하여 학습해야 할 매개변수 수를 크게 줄입니다.

  1. Low-Rank 가중치 업데이트

    • 기존 가중치 W0 W_0 를 고정하고, 가중치 업데이트를 ΔW=BA \Delta W = BA 의 형태로 제한.

    • B B A A 는 각각 r r -랭크 행렬이며, r r 은 기존 가중치의 차원보다 훨씬 작음.

    • 입력 x x 에 대해 W0x W_0 x 에 추가적으로 ΔWx=BAx \Delta W x = BAx 를 계산하여 효율적으로 업데이트.

  2. Transformer 아키텍처 적용

    • Self-Attention의 가중치(Wq, Wk, Wv, Wo)에 적용하며, MLP 가중치는 동결.

    • 매개변수 효율성을 극대화하면서 모델 성능 유지.

LoRA의 장점

  1. 효율성

    • 작업당 학습해야 할 매개변수 수를 Fine-tuning 대비 10,000배 줄일 수 있음.

    • 예: GPT-3 175B 모델에서 단 4.7M(470만) 매개변수만 학습하여도 유사한 성능 달성.

  2. 저비용 학습

    • GPU 메모리 사용량 최대 3배 절감.

    • 훈련 속도 25% 향상.

  3. 추론 효율성

    • 학습된 LoRA 가중치는 사전 학습된 모델 가중치에 병합(merge)되므로, 추론 시 추가 지연 없음.

    • 태스크 전환이 간단하고 빠름.

  4. 확장 가능성

    • 다양한 태스크에서 사전 학습된 모델과 LoRA 모듈을 결합해 사용.

    • 추가 메모리 요구량이 적어 자원 제한 환경에서도 사용 가능.

실험 결과

  1. GLUE 벤치마크

    • RoBERTa 및 DeBERTa 모델에서 Fine-tuning과 유사하거나 더 나은 성능을 달성.

    • Fine-tuning이 작업당 전체 매개변수를 학습해야 하는 반면, LoRA는 3% 미만의 매개변수만 추가 학습.

  2. GPT-3 175B

    • WikiSQL, MultiNLI, SAMSum 등 다양한 태스크에서 Fine-tuning과 유사한 성능.

    • 4.7M 매개변수만 학습해도 대규모 모델의 성능 유지.

  3. E2E NLG Challenge

    • GPT-2 모델에서 BLEU 점수 등 기존 Adapter 기반 방법을 능가.

한계와 고려사항

  1. 랭크 설정의 복잡성

    • 태스크 및 데이터셋에 따라 최적의 랭크 r r 설정이 필요.

  2. 작업 병렬 처리의 복잡성 증가

    • 배치 내 다양한 태스크를 동시에 처리하는 경우 구현 복잡성이 증가.

LoRA는 대규모 언어 모델을 특정 작업에 적응시키기 위한 혁신적인 방법으로, 기존 Fine-tuning의 높은 비용과 자원 요구를 크게 완화합니다. 매개변수 효율성, 저비용 학습, 높은 확장성을 통해 LoRA는 NLP를 포함한 다양한 태스크에서 실용적이고 강력한 전이 학습 도구로 자리 잡았습니다. 이 방법은 자원이 제한된 환경에서도 대규모 언어 모델의 강력한 성능을 활용할 수 있는 가능성을 열어줍니다.

LoRA와 Adapter Fine-Tuning의 비교

LoRA(Low-Rank Adaptation)와 Adapter Fine-Tuning은 모두 대규모 언어 모델(LLM)을 효율적으로 적응시키기 위해 설계된 파라미터 효율적인 전이 학습(Parameter-Efficient Transfer Learning, PETL) 접근법입니다. 두 기법은 기존의 Fine-Tuning 방식의 한계를 극복하려는 목표를 공유하지만, 작동 방식과 적용 방식에서 차이를 보입니다.

기본 개념 비교

  1. LoRA (Low-Rank Adaptation)

    • 기존 가중치를 고정한 상태에서 저랭크(rank-decomposed) 행렬을 학습하여 파라미터를 최소화.

    • Transformer의 특정 가중치(주로 Self-Attention)에 대해 학습 가능한 추가 매개변수를 삽입.

    • 모델의 구조를 변경하지 않으며, 추가된 매개변수만 학습.

  2. Adapter Fine-Tuning

    • 모델의 각 계층에 작업별 어댑터 모듈(adapter module)을 삽입.

    • 어댑터는 입력을 다운프로젝션(down-projection)하여 계산량을 줄이고, 비선형 변환 후 다시 업프로젝션(up-projection)하여 정보를 통합.

    • 기존 모델의 매개변수는 고정된 상태로 유지되며, 어댑터 모듈만 학습.

주요 차이점

특징LoRAAdapter Fine-Tuning
매개변수 효율성저랭크 행렬을 사용하여 파라미터를 최소화.어댑터 모듈로 추가 매개변수 삽입, LoRA 대비 파라미터 다소 증가.
적용 위치Transformer의 Self-Attention 가중치에 주로 적용.모델의 모든 계층(layer)에 어댑터 모듈 삽입.
구조 변경 여부모델 구조 변경 없음.어댑터 삽입으로 구조 변경 발생.
메모리 사용량상대적으로 더 낮음.LoRA 대비 약간 높은 메모리 요구.
훈련 및 추론 효율성추가 가중치를 병합하여 추론 시 지연 없음.추가적인 모듈 로드가 필요, 다소 추론 지연 발생.
유연성모델 구조 변경 없이 다양한 태스크에 적용 가능.다양한 태스크에 적용 가능하지만 구조 변경이 필요.
성능Fine-Tuning과 유사하거나 더 나은 성능 제공.Fine-Tuning과 유사한 성능, LoRA와 비슷한 효율성.
호환성기존 모델 및 새로운 태스크에 효율적으로 적용 가능.다중 태스크와 작업별 적응에서 강력한 성능.

LoRA와 Adapter Fine-Tuning은 모두 파라미터 효율적인 전이 학습의 중요한 도구로, 특정 요구사항과 환경에 따라 선택이 달라질 수 있습니다.

저비용과 효율성이 중요하다면 LoRA가 적합하며, 모델 구조를 변경하지 않고 대규모 모델에서 최소한의 자원으로 작업을 처리할 수 있습니다. 반면, 다양한 작업 지원과 확장성이 필요한 환경에서는 Adapter Fine-Tuning이 더 나은 선택이 될 수 있습니다.

두 접근법은 각기 다른 상황에서 대규모 언어 모델의 실질적 활용 가능성을 확장하는 데 중요한 역할을 하고 있습니다.

사례 분석

RAFT 데이터셋

Real-world Annotated Few-shot Tasks (RAFT) 데이터셋은 실제 세계에서 발견된 영어 기반 데이터셋을 집합적으로 구성한 것입니다. 각 데이터셋에는 이진 분류 또는 다중 클래스 분류 작업이 포함되어 있으며, 이는 언어 모델이 실질적이고 구체적인 가치를 지닌 작업에서 어떻게 성능을 발휘하는지 이해하는 데 목적을 두고 있습니다. 특히, 각 데이터셋에는 50개의 라벨이 지정된 예제만 제공되므로, 소수의 데이터로 학습 및 평가하는 환경을 제공합니다.

다음 모델들을 ought/raft/twitter_complaints 데이터셋에서 훈련할 때 미세조정 방법에 따른 메모리 요구사항을 비교한 것입니다. 이는 A100 80GB GPU와 64GB 이상의 CPU RAM 환경에서의 설정을 기준으로 합니다.

Model전체 미세조정PEFT-LoRA PyTorchPEFT-LoRA DeepSpeed with CPU Offloading
bigscience/T0_3B (3B params)47.14GB GPU / 2.96GB CPU14.4GB GPU / 2.96GB CPU9.8GB GPU / 17.8GB CPU
bigscience/mt0-xxl (12B params)OOM GPU56GB GPU / 3GB CPU22GB GPU / 52GB CPU
bigscience/bloomz-7b1 (7B params)OOM GPU32GB GPU / 3.8GB CPU18.1GB GPU / 35GB CPU

LoRA(Low-Rank Adaptation)는 대규모 언어 모델(LLM)의 미세조정을 효율적으로 수행할 수 있는 기술입니다. LoRA를 활용하면 12B 매개변수 모델을 기존의 메모리 제한 없이 A100 80GB GPU에서 완전히 미세조정할 수 있으며, 3B 매개변수 모델은 여유롭게 훈련할 수 있습니다.

3B 모델 성능 비교

3B 매개변수 모델을 LoRA로 미세조정하면, GPU 메모리 소모는 기존의 미세조정보다 크게 줄어드는 동시에 성능은 거의 유사하게 유지됩니다.

Submission NameAccuracy
Human baseline (crowdsourced)0.897
Flan-T50.892
lora-t0-3b0.863

주요 특징 및 성능 최적화

  1. 효율적인 메모리 사용

    • LoRA를 통해 12B 모델을 A100 80GB GPU에서 훈련할 수 있으며, 메모리 부족 문제를 해결.

    • 3B 모델의 경우 LoRA로 미세조정 시 GPU 메모리 소모가 기존의 완전 미세조정 대비 극히 적음.

  2. LoRA로 성능 최적화 가능

    • bigscience/T0_3B 모델의 성능은 표에 제시된 수준에서 추가적인 최적화가 가능.

    • 입력 지침 템플릿, LoRA 하이퍼파라미터, 그리고 기타 훈련 관련 하이퍼파라미터를 조정하면 더 높은 성능을 얻을 수 있음.

  3. 작은 체크포인트 크기

    • LoRA로 미세조정한 bigscience/T0_3B 모델의 최종 체크포인트 크기는 단 19MB로, 원본 모델 크기(11GB)에 비해 크게 감소.

LoRA는 대규모 언어 모델의 메모리 사용량을 줄이고 효율적인 훈련을 가능하게 하며, 성능 면에서도 기존 미세조정 방식과 비교하여 큰 차이가 없습니다. 특히, 제한된 자원 환경에서 LLM을 활용하려는 상황에서 LoRA는 매우 실용적인 접근법으로 자리 잡고 있습니다.

References
  1. Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., Wang, L., & Chen, W. (2021). LoRA: Low-Rank Adaptation of Large Language Models. https://arxiv.org/abs/2106.09685