[LoRA 논문 리뷰] - LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
[논문리뷰] LoRA: Low-Rank Adaptation of Large Language Models
[논문 리뷰] LoRA: Low-Rank Adaptaion of Large Language Models
[논문리뷰] - LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS - 랭크를 줄여라 ! + X-LoRA !!
RANK?
LoRA (Low-Rank Adaptation)에서 rank는 학습 가능한 가중치 행렬의 차원수를 줄여 모델의 파라미터를 효율적으로 조정하는 방법입니다. 일반적으로 큰 모델의 모든 가중치 행렬을 학습하면 계산 비용이 크기 때문에, LoRA는 저랭크(low-rank) 근사를 통해 이 문제를 해결합니다.
결론적으로, rank는 LoRA에서 저랭크 근사를 통해 모델의 가중치를 효율적으로 학습하기 위한 차원의 크기를 정의하며, rank가 낮을수록 계산 효율은 높지만 성능의 한계가 있을 수 있습니다.
LoRA(Low-Rank Adaptation)는 대규모 사전 학습된 언어 모델을 여러 다운스트림 애플리케이션에 적응시키기 위해 제안된 방법
→ 모델의 파라미터 수를 효율적으로 줄이고 학습 과정을 간소

기존의 파인튜닝(fine-tuning) 방식은 사전 학습된 모델의 모든 파라미터를 업데이트해야 하는데, 모델 크기가 증가할수록 이는 비효율적이 된다.
예를 들어, GPT-3 모델은 약 175억 개의 파라미터를 가지고 있어 모든 파라미터를 학습하는 것은 큰 비용이 든다.
이러한 문제를 해결하기 위해 LoRA는 모델의 파라미터 업데이트를 저랭크 행렬로 표현하여 효율성을 극대화한다.
<aside>
🧮
$\Delta W = BA$
- $B \in \mathbb{R}^{d \times r}$와 $A \in \mathbb{R}^{r \times d}$ : 학습 가능한 파라미터이며
- $r$ : 랭크(rank) → 이때, $r$은 $d$보다 훨씬 작은 값으로 설정되며, 이를 통해 파라미터 수를 크게 줄일 수 있다.
예를 들어, GPT-3의 전체 랭크 $d$가 12,288일 때도 r을 1 또는 2로 설정하는 것만으로도 충분한 성능을 달성할 수 있다.
</aside>
이처럼 LoRA는 계산 및 저장 공간의 효율성을 크게 개선.작업마다 새로운 모델을 학습할 필요 없이, 학습된 저랭크 행렬 $A$와 $B$를 교체함으로써 손쉽게 작업을 전환할 수 있다.
→ 저장 공간 및 작업 전환에 필요한 오버헤드를 대폭 줄인다.LoRA는 이러한 접근 방식을 통해 대규모 언어 ⓵ 모델의 적응을 더욱 효율적으로 만들고, ⓶모델의 파라미터 수를 줄이며 학습 비용을 절감하는 한편 다양한 작업에 유연하게 대응할 수 있는 실용적인 솔루션을 제공.
LoRA가 제안하는 문제는 언어 모델링을 중심으로 하며, 특히 주어진 작업별 프롬프트에 대한 조건부 확률을 최대화하는 데 초점을 맞춘다.
→ 다양한 언어 생성 작업에 사전 학습된 언어 모델을 효율적으로 적응시키기 위한 것이다.
🫠우선, 사전 학습된 오토레그레시브(autoregressive) 언어 모델 가 주어졌다고 가정한다.
: 모델의 파라미터
: GPT(GPT-2, GPT-3 등)와 같은 다중 작업 학습 모델
→ 이 모델을 요약, 기계 독해(MRC), 자연어-데이터베이스 질의(NL2SQL)와 같은 조건부 텍스트 생성 작업에 적응시코자 하는 상황
데이터셋 구성?
각 다운스트림 작업은 컨텍스트와 타겟 쌍으로 이루어진 학습 데이터셋 으로 표현되며, 여기서 와 는 모두 토큰 시퀀스이다.
예를 들어, NL2SQL에서는 가 자연어 질의이고 가 그에 대응하는 SQL 명령어가 된다. 요약 작업에서는 가 기사 내용이고 가 그 요약문이 된다.
: 전체 파인튜닝을 수행할 때, 모델은 사전 학습된 가중치 로 초기화되며, 조건부 언어 모델링 목표를 최대화하기 위해 그라디언트를 따라 가중치가 반복적으로 업데이트된다
🍭
: 시퀀스 의 번째 토큰
: 이전의 모든 토큰
전체 파인튜닝의 주요 단점
각 다운스트림 작업마다 서로 다른 파라미터 집합 를 학습하게 되며, 그 크기 는 사전 학습된 모델의 크기 와 동일하다는 점이다.
GPT-3와 같은 대규모 모델의 경우 억 파라미터이기 때문에, 여러 개의 파인튜닝된 모델을 저장하고 배포하는 것은 매우 어려울 수 있다.
이 논문에서는 작업별 파라미터 증가분 를 훨씬 더 작은 파라미터 집합 로 인코딩하여 효율적으로 처리하는 방법을 제안한다. 여기서 가 성립한다. 를 찾는 문제는 이제 에 대한 최적화 문제로 변환된다:
🍭
LoRA는 이러한 접근을 통해 메모리 및 계산 효율성을 극대화하기 위해 저랭크 표현(low-rank representation)을 사용하여 를 인코딩한다.
GPT-3 175B 모델의 경우, 학습해야 할 파라미터 수 를 사전 학습된 전체 파라미터의 0.01% 정도로 줄일 수 있다. 이를 통해 매우 큰 모델의 파인튜닝에 드는 비용을 대폭 절감할 수 있다.
전이 학습(transfer learning)이 도입된 이후로, 모델 적응을 파라미터 및 계산 측면에서 더 효율적으로 만들기 위한 다양한 연구들이 이루어져 왔다.
🍭언어 모델링에서 효율적인 적응을 위한 두 가지 주요 전략
⓵ 어댑터 레이어(adapter layers) 추가
⓶ 입력 레이어 활성화(input layer activations) 최적화
But, 이러한 방법들은 특히 대규모 모델이나 지연(latency)에 민감한 상황에서는 한계가 존재한다.
어댑터는 여러 변형이 있으며, 여기서는 Houlsby et al. (2019)의 원래 설계와 Lin et al. (2020)의 더 최근 설계를 언급한다.
어뎁터의 여러 변형
- Houlsby et al. (2019)의 어댑터는 각 Transformer 블록에 두 개의 어댑터 레이어를 추가
- Lin et al. (2020)의 방법은 블록당 하나의 어댑터 레이어와 추가적인 LayerNorm을 사용.
→ 어댑터 레이어는 소수의 파라미터(원래 모델의 1% 미만일 때도 있음)를 가지므로, 이론적으로 추가되는 FLOPs(부동 소수점 연산)가 적다. 그러나 대규모 신경망은 하드웨어 병렬 처리를 통해 지연을 줄이는 데 의존하고, 어댑터 레이어는 순차적으로 처리해야 한다. 이는 특히 온라인 추론 환경에서 배치 크기가 작을 때 문제를 야기한다.
예를 들어, GPT-2 모델을 단일 GPU에서 실행할 때 어댑터를 사용하면, 작은 병목 차원을 사용하더라도 지연이 증가하는 것을 확인할 수 있다.
어댑터를 사용하는 경우의 지연은 모델을 샤딩(sharding)해야 할 때 더욱 악화된다. 모델을 샤딩할 때 추가적인 깊이는 AllReduce나 Broadcast와 같은 동기화 GPU 연산을 더 많이 요구하게 된다. 이를 해결하지 않으면 어댑터 파라미터를 중복으로 여러 번 저장해야 하는 문제가 발생한다.
프리픽스 튜닝(prefix tuning)은 입력 시퀀스의 일부분을 학습 가능한 토큰으로 최적화하는 접근 방식이지만, 최적화가 어렵고 학습 가능한 파라미터의 수에 따라 성능이 비선형적으로 변한다.
프리픽스 튜닝에서는 적응을 위해 시퀀스 길이의 일부를 예약해야 하므로, 다운스트림 작업을 처리할 수 있는 시퀀스 길이가 줄어든다. 이는 프롬프트 튜닝이 다른 방법에 비해 성능이 낮을 수 있는 요인으로 작용한다.

GPT-2 medium 모델에서의 단일 추론 단계에 대한 지연 시간을 측정한 결과(Table 1), 어댑터를 사용했을 때 지연 시간이 눈에 띄게 증가함을 알 수 있다. 실험은 NVIDIA Quadro RTX8000에서 100회 평균을 내어 수행되었으며, 어댑터의 지연 시간은 짧은 시퀀스 길이 및 작은 배치 크기일 때 더 두드러진다.
LoRA는 기존의 어댑터 방식보다 적응 시 성능 저하 없이도 효율적이며, 지연 시간이 증가하지 않는 솔루션을 제공한다. 이러한 이유로, 대규모 모델의 실시간 응답 성능을 요구하는 환경에서 더욱 적합하다.
LoRA(Low-Rank Adaptation)의 설계와 실제 활용에서의 이점을 설명하고, 이를 Transformer 언어 모델에 적용하는 방법을 다룬다. LoRA는 심층 학습 모델의 모든 밀집 레이어(dense layers)에 적용될 수 있으나, 실험에서는 주로 Transformer 모델의 특정 가중치에 집중한다.
신경망의 밀집 레이어는 일반적으로 행렬 곱셈을 수행하며, 가중치 행렬은 대개 풀랭크(full-rank)로 되어 있다. Aghajanyan et al. (2020)에 따르면, 사전 학습된 언어 모델은 낮은 "내재적 차원(intrinsic dimension)"을 가지며, 무작위 투영(random projection)을 통해 더 작은 부분 공간으로도 효율적인 학습이 가능하다. 이를 바탕으로, 적응 중 가중치 업데이트도 낮은 "내재적 랭크(intrinsic rank)"를 가질 것이라고 가정한다.
사전 학습된 가중치 행렬 가 주어졌을 때, 그 업데이트를 저랭크 분해로 표현하여 다음과 같이 제약을 둔다:
여기서 와 는 학습 가능한 파라미터이며, 랭크 은 보다 훨씬 작은 값으로 설정한다. 학습 중에는 가 고정(frozen)되어 그라디언트 업데이트를 받지 않으며, 와 만이 학습된다. 입력 벡터 에 대해, 수정된 순전파(forward pass)는 다음과 같다:
초기 학습 시, 는 무작위 가우시안 초기화(random Gaussian initialization)를 사용하고 는 0으로 설정하여, 학습 초기에는 이 된다. 이후, 를 로 스케일링하여 학습을 진행하는데, 여기서 는 상수이다. Adam 옵티마이저를 사용할 때, 이 스케일링은 학습률 조정과 유사한 역할을 한다.
LoRA는 풀 파인튜닝의 확장된 형태로 볼 수 있다. LoRA를 모든 가중치 행렬에 적용하고 모든 바이어스(bias)를 학습하는 경우, LoRA의 랭크 을 사전 학습된 가중치 행렬의 랭크로 설정하면 풀 파인튜닝과 비슷한 표현력을 얻을 수 있다. 즉, 학습 가능한 파라미터 수를 늘리면, LoRA의 학습은 원래 모델의 학습에 가까워진다. 반면, 어댑터 기반 방식은 MLP로, 프리픽스 기반 방식은 긴 입력 시퀀스를 처리할 수 없는 모델로 수렴한다.
생산 환경에 배포할 때, 를 명시적으로 계산하고 저장하여 추론을 평소처럼 수행할 수 있다. 와 는 모두 에 속한다. 다른 다운스트림 작업으로 전환할 때는 에서 를 빼고, 다른 를 추가하여 손쉽게 전환할 수 있다. 이는 메모리 오버헤드가 매우 작고, 구조적으로 추가적인 추론 지연이 발생하지 않는다.
LoRA는 신경망의 가중치 행렬의 특정 부분 집합에 적용할 수 있으며, 이를 통해 학습 가능한 파라미터 수를 줄일 수 있다. Transformer 아키텍처의 자기 주의(self-attention) 모듈에는 네 개의 가중치 행렬 와 MLP 모듈에 두 개의 가중치 행렬이 존재한다. 여기서 는 보통 차원을 주의 헤드(attention head)로 나누지만, 크기의 단일 행렬로 취급한다. 실험에서는 간단하고 파라미터 효율성을 높이기 위해 주의 가중치만을 학습하고, MLP 모듈은 동결(freeze)하여 사용하지 않았다.
LoRA는 기존의 파인튜닝 방식보다 메모리 효율성이 뛰어나고, 대규모 모델에서도 손쉽게 적응할 수 있는 방법을 제공한다.
LoRA의 성능을 다양한 다운스트림 작업에서 평가하고, RoBERTa, DeBERTa, GPT-2에 대한 실험을 거쳐 GPT-3 175B로 확장하였다. 실험은 자연어 이해(NLU)와 자연어 생성(NLG) 작업을 모두 포함하며, GLUE 벤치마크, WikiSQL, SAMSum 등에서 수행되었다. NVIDIA Tesla V100 GPU를 사용하여 실험을 진행하였다.
RoBERTa는 BERT의 사전 학습 레시피를 최적화한 모델로, 실무에서 여전히 인기가 있다. GLUE 벤치마크에서 LoRA를 비롯한 다양한 적응 방법의 성능을 비교하였으며, 어댑터와 비교할 때 동일한 배치 크기와 시퀀스 길이를 사용하였다. 결과는 Table 2에 요약되어 있다.
DeBERTa는 대규모로 훈련된 모델로, GLUE와 SuperGLUE 벤치마크에서 뛰어난 성능을 보인다. LoRA가 DeBERTa XXL의 전체 파인튜닝 성능에 맞먹는 성능을 달성할 수 있는지 평가하였다.
GPT-2 모델에서는 NLG 작업에서 LoRA의 성능을 평가하였다. E2E NLG Challenge의 결과는 Table 3에 요약되어 있으며, LoRA가 적은 학습 가능한 파라미터로도 경쟁력 있는 성능을 보였다.
마지막으로, GPT-3 175B에서 LoRA를 사용하여 성능을 평가하였다. Table 4의 결과에서 알 수 있듯이, LoRA는 모든 데이터셋에서 풀 파인튜닝과 동등하거나 더 나은 성능을 보였다. 특히, 프리픽스 임베딩 및 프리픽스 레이어 튜닝에서 학습 가능한 토큰 수가 일정 수준 이상 증가할 때 성능이 급격히 떨어졌다. 이는 입력 분포가 사전 학습 데이터 분포에서 멀어지는 현상으로 인해 발생할 가능성이 있다.
LoRA는 여러 데이터셋에서 기존의 풀 파인튜닝 및 어댑터 방식보다 적은 학습 가능한 파라미터로도 우수한 성능을 보여주었으며, GPU 메모리 사용량 감소 및 학습 속도 향상 측면에서도 장점을 지녔다.
Transformer(Vaswani et al., 2017)은 자기 주의(self-attention)를 중점으로 하는 시퀀스-투-시퀀스(sequence-to-sequence) 아키텍처로, Radford et al. (a)는 이를 오토레그레시브(autoregressive) 언어 모델링에 적용하였다. 이후 Transformer 기반의 언어 모델은 자연어 처리(NLP)에서 많은 작업에서 최고 성능을 달성하였다. BERT(Devlin et al., 2019b)와 GPT-2(Radford et al., b)의 등장으로 새로운 패러다임이 형성되었으며, 대규모의 사전 학습된 Transformer 언어 모델을 특정 작업 데이터에 맞춰 파인튜닝하는 방식은 성능을 크게 향상시킨다. GPT-3(Brown et al., 2020)는 175억 개의 파라미터를 가진 가장 큰 단일 Transformer 언어 모델로, 더 큰 Transformer를 훈련하는 것이 성능 향상에 중요한 방향으로 남아있다.
GPT-3 175B는 적은 수의 추가 학습 예제만으로도 적응할 수 있지만, 성능은 입력 프롬프트에 크게 의존한다(Brown et al., 2020). 이를 통해 모델의 성능을 최적화하기 위해 프롬프트를 구성하고 형식화하는 '프롬프트 엔지니어링(prompt engineering)'이 필요하게 되었다. 파인튜닝(fine-tuning)은 일반 도메인에서 사전 학습된 모델을 특정 작업에 맞춰 재학습하는 방식으로, 파라미터 일부만을 학습하거나 모두 재학습하는 변형이 있다. 그러나 GPT-3 175B의 방대한 크기는 일반적인 방식의 파인튜닝을 어렵게 만들며, 이는 큰 체크포인트 파일과 높은 하드웨어 요구 사항을 수반한다.
어댑터 레이어(adapter layers)를 기존 신경망 레이어 사이에 삽입하여 적응하는 방법(Houlsby et al., 2019; Rebuffi et al., 2017; Lin et al., 2020)이 제안되었다. LoRA는 유사한 병목 구조를 사용하여 가중치 업데이트에 저랭크 제약을 가하는데, LoRA에서 학습된 가중치는 추론 시 메인 가중치와 병합할 수 있어 지연(latency)을 추가하지 않는다. 이는 어댑터 레이어와의 중요한 차이점이다. 어댑터의 확장형으로 COMPACTER(Mahabadi et al., 2021)는 Kronecker 곱을 사용하여 어댑터 레이어를 매개변수화하는 방식이다. 이와 유사하게, LoRA를 다른 텐서 곱 기반 방법과 결합하여 파라미터 효율성을 높일 가능성도 있다.
기계 학습에서 저랭크 구조는 매우 일반적이다. 많은 기계 학습 문제는 내재적으로 저랭크 구조를 가지며, 특히 과잉 파라미터화된 신경망은 학습 후 저랭크 특성을 가진다(Oymak et al., 2019). 이전 연구에서는 신경망 학습 시 원래의 신경망에 저랭크 제약을 가하는 방법이 제안되었지만(Sainath et al., 2013; Povey et al., 2018), 고정된 모델에 대해 저랭크 업데이트를 적용하여 다운스트림 작업에 적응하는 연구는 거의 없다. 이론적으로, 저랭크 구조를 가진 신경망은 다른 고전적인 학습 방법보다 더 우수한 성능을 보일 수 있다(Ghorbani et al., 2020; Allen-Zhu & Li, 2019).
이와 같은 관련 연구들을 종합해보면, LoRA가 제안하는 저랭크 적응 업데이트는 문헌에서 잘 동기화된 아이디어이며, 기존의 다양한 기법들과 차별화된 장점을 제공한다.
LoRA의 실험적 이점에 대한 설명을 더하기 위해, 다운스트림 작업에서 학습된 저랭크 적응의 특성을 분석하고자 한다. 저랭크 구조는 하드웨어 요구 사항을 낮출 뿐만 아니라, 업데이트된 가중치가 사전 학습된 가중치와 어떻게 상관되어 있는지에 대한 해석 가능성을 제공한다. 실험은 GPT-3 175B 모델을 중심으로 수행되었으며, 학습 가능한 파라미터 수를 최대 10,000배 줄이면서도 성능에 악영향을 미치지 않는 결과를 확인하였다.
제한된 파라미터 예산 하에서 어떤 가중치 유형을 LoRA로 적응시켜야 다운스트림 성능이 극대화되는지 연구하였다. 여기서는 자기 주의 모듈의 가중치 행렬에만 집중하였으며, GPT-3 175B에 대해 파라미터 예산을 18M으로 설정하였다. 이는 모든 96 레이어에서 하나의 주의 가중치를 적응시킬 때 , 두 가지를 적응시킬 때 로 설정한 것에 해당한다.
결과(Table 5)에 따르면, 모든 파라미터를 나 에 집중할 경우 성능이 떨어졌지만, 와 를 동시에 적응시키는 것이 가장 좋은 성능을 보였다. 이는 가 낮은 랭크에서도 충분한 정보를 포함하고 있으며, 더 많은 가중치 행렬을 적응시키는 것이 단일 가중치를 큰 랭크로 적응시키는 것보다 더 바람직함을 시사한다.
랭크 가 모델 성능에 미치는 영향을 살펴보았다. , 그리고 의 조합에 대해 실험을 진행하였다.
Table 6은 놀랍게도 작은 값, 예를 들어 1만으로도 조합에서 경쟁력 있는 성능을 나타낸다는 점을 보여준다. 이는 업데이트 행렬 가 매우 작은 "내재적 랭크(intrinsic rank)"를 가질 수 있음을 시사한다. 또한, 을 증가시키는 것이 더 의미 있는 부분 공간을 커버하지 못한다는 점에서, 저랭크 적응 행렬이 충분하다는 결론을 내릴 수 있다.
랭크 과 로 학습된 적응 행렬 의 부분 공간 유사도를 조사하였다. 주요 결과는 다음과 같다:
와 간의 관계를 분석하였다. 주된 질문은 가 와 얼마나 높은 상관관계를 가지는가이다.
Table 7의 결과에 따르면:
이와 같은 실험들은 저랭크 업데이트가 사전 학습된 언어 모델을 다운스트림 작업에 적응시키는 데 있어 중요한 원리를 제공함을 보여준다.
대규모 언어 모델의 파인튜닝은 필요한 하드웨어와 독립적인 인스턴스를 호스팅하는 데 드는 저장/전환 비용 측면에서 매우 비싸다. 이에 대해 LoRA는 효율적인 적응 전략을 제안하며, 추론 지연을 도입하지 않고 입력 시퀀스 길이를 줄이지 않으면서도 높은 모델 품질을 유지한다. LoRA는 대부분의 모델 파라미터를 공유함으로써 서비스로 배포될 때 빠른 작업 전환을 가능하게 한다. 본 연구에서는 Transformer 언어 모델에 집중했으나, 제안된 원칙은 밀집 레이어(dense layers)를 갖는 모든 신경망에 일반적으로 적용 가능하다.
LoRA는 모델 적응의 비용을 절감하고 효율성을 높이는 방향으로 중요한 기여를 하였으며, 이러한 연구 방향을 통해 더욱 향상된 모델 적응 방법이 개발될 가능성이 있다.
https://github.com/microsoft/LoRA
https://github.com/microsoft/LoRA
파일이름