논문 · arXiv 2106.09685
LoRA: 대규모 언어 모델의 로우 랭크 적응 기법 (Low-Rank Adaptation of Large Language Models)
LoRA: Low-Rank Adaptation of Large Language Models
세 줄 요약
- 🎯 GPT-3 175B와 같은 대규모 언어 모델의 완전 미세조정은 다운스트림 태스크마다 수천억 개의 파라미터를 재학습하고 저장해야 하므로 극심한 저장 공간, VRAM 및 배포 병목 현상을 유발합니다.
- 🔧 사전 학습된 가중치 행렬을 고정하고 트랜스포머 밀집 레이어에 학습 가능한 저순위 분해 행렬()을 삽입하며, 그 곱을 로 스케일링하여 지연 시간 추가 없이 배포 시 가중치 병합을 가능하게 합니다.
- 📈 GPT-3 175B의 경우, LoRA는 GLUE, WikiSQL, SAMSum에서 완전 미세조정과 대등하거나 이를 능가하는 성능을 보이면서도 학습 파라미터를 10,000배, VRAM을 3배(1.2TB에서 350GB로) 절감합니다.
초록
자연어 처리의 중요한 패러다임은 일반 도메인 데이터에 대한 대규모 사전 학습과 특정 태스크나 도메인으로의 적응(adaptation)으로 구성됩니다. 더 큰 모델을 사전 학습함에 따라, 모든 모델 파라미터를 다시 학습하는 완전 미세조정(full fine-tuning)은 현실적으로 적용하기 어려워집니다. GPT-3 175B를 예로 들면, 각각 1,750억 개의 파라미터를 가진 미세조정 모델 인스턴스를 독립적으로 배포하는 것은 비용이 지나치게 많이 듭니다. 본 논문에서는 사전 학습된 모델 가중치를 고정(freeze)하고 트랜스포머 아키텍처의 각 레이어에 학습 가능한 랭크 분해 행렬을 삽입하여 다운스트림 태스크를 위한 학습 파라미터 수를 대폭 줄이는 로우 랭크 적응 기법(Low-Rank Adaptation, LoRA)을 제안합니다. Adam으로 미세조정된 GPT-3 175B와 비교했을 때, LoRA는 학습 가능한 파라미터 수를 10,000배, GPU 메모리 요구량을 3배 줄일 수 있습니다. LoRA는 학습 가능한 파라미터 수가 훨씬 적고 학습 처리량이 더 높으며 어댑터와 달리 추가적인 추론 지연 시간이 없음에도 불구하고, RoBERTa, DeBERTa, GPT-2 및 GPT-3에서 모델 품질 면에서 미세조정과 동등하거나 더 나은 성능을 보입니다. 또한 언어 모델 적응 시 나타나는 랭크 부족 현상(rank-deficiency)에 대한 실증적 조사를 제공하여 LoRA의 효율성을 규명합니다. LoRA를 PyTorch 모델에 쉽게 통합할 수 있는 패키지를 공개하며, RoBERTa, DeBERTa, GPT-2에 대한 구현체 및 모델 체크포인트를 https://github.com/microsoft/LoRA 에 제공합니다.
영어 원문 초록
An important paradigm of natural language processing consists of large-scale pre-training on general domain data and adaptation to particular tasks or domains. As we pre-train larger models, full fine-tuning, which retrains all model parameters, becomes less feasible. Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks. Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times. LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency. We also provide an empirical investigation into rank-deficiency in language model adaptation, which sheds light on the efficacy of LoRA. We release a package that facilitates the integration of LoRA with PyTorch models and provide our implementations and model checkpoints for RoBERTa, DeBERTa, and GPT-2 at https://github.com/microsoft/LoRA.
논문 해설
문제 및 동기
대규모 사전 학습 언어 모델을 다양한 다운스트림 애플리케이션에 적응시키는 작업은 전통적으로 완전 미세조정(모든 파라미터 를 로 업데이트)에 의존해 왔습니다. GPT-3 175B와 같은 거대 아키텍처의 경우, 1,750억 개 파라미터 모델의 독립적인 복사본을 저장하고 서빙하는 것은 스토리지, GPU 메모리 및 I/O 오버헤드 측면에서 감당하기 어려울 정도로 비쌉니다. 기존의 파라미터 효율적 튜닝(parameter-efficient tuning) 기법들은 명확한 한계를 지니고 있습니다:
- 직렬 어댑터 레이어(Series Adapter Layers): 트랜스포머 블록 내에 병목 모듈을 순차적으로 삽입합니다. 이러한 순차적 연산은 병렬화할 수 없기 때문에 상당한 추론 지연 시간을 유발하며, 단일 GPU, 소규모 배치, 온라인 서빙 환경에서 순방향 패스를 최대 까지 느려지게 만듭니다.
- 프리픽스 / 프롬프트 튜닝(Prefix / Prompt Tuning): 레이어 활성화 앞에 추가되는 연속적인 프롬프트 벡터를 최적화합니다. 이 방법들은 최적화하기 어렵고, 프롬프트 길이에 따라 비단조적으로 확장되며, 컨텍스트에 사용할 수 있는 시퀀스 길이 예산을 소모합니다.
LoRA는 다운스트림 전이 과정에서 가중치 적응 업데이트 가 낮은 내재적 랭크(intrinsic rank)를 갖는다는 가설을 바탕으로 이러한 효율성과 품질 사이의 트레이드오프를 해결합니다.
핵심 아이디어
- 저순위 재파라미터화(Low-Rank Reparametrization): 고정된 밀집 행렬 에 대해, 적응 업데이트를 로 파라미터화합니다. 여기서 , 이며, 랭크는 를 만족합니다.
- 추가 추론 지연 시간 없음(Zero Added Inference Latency): 재파라미터화가 선형적이기 때문에, 학습된 저순위 행렬들을 배포 시 사전 학습 가중치에 직접 병합()할 수 있어 미세조정과 비교해 완전히 동일한 추론 아키텍처를 유지하며 지연 시간 페널티가 발생하지 않습니다.
- 공유 베이스 모델과 핫 스와핑: 거대한 고정 베이스 모델은 GPU 메모리에 그대로 상주하며, 태스크를 전환할 때는 저순위 행렬 와 만 교체하면 되므로 스토리지 요구량을 수백 기가바이트에서 수십 메가바이트로 크게 줄일 수 있습니다.
- 선택적 어텐션 적응: 피드포워드 MLP 레이어는 고정한 채 자기 어텐션(self-attention) 프로젝션(특히 쿼리 및 밸류 )에만 랭크 분해를 적용함으로써 경쟁력 있는 성능을 달성합니다.
방법론
를 출력하는 밀집 프로젝션 레이어에 대해, LoRA는 연산을 다음과 같이 수정합니다:
주요 구현 세부사항:
- 초기화: 는 무작위 가우시안 분포 로 초기화되고 는 0으로 초기화되어, 학습 시작 시점에 이 되도록 보장합니다.
- 스케일링 팩터: 업데이트 는 로 스케일링되며, 여기서 는 상수 하이퍼파라미터입니다. Adam으로 최적화할 때 를 초기 랭크 과 동일하게 설정하면 다양한 값을 실험할 때 학습률(learning rate)을 다시 튜닝할 필요가 없습니다.
- 배포 시 병합: 프로덕션 환경에서는 적응된 가중치 행렬 가 로 명시적으로 구체화됩니다. 태스크를 변경할 때는 뺄셈()을 통해 를 복원한 뒤 새로운 어댑터 가중치와 병합()합니다.
- 대상 레이어: 모든 밀집 레이어에 적용할 수 있지만, 실험은 주로 트랜스포머 어텐션 프로젝션()에 초점을 맞춥니다. 와 에 로 LoRA를 적용하는 것이 최적의 다운스트림 효율성을 보였습니다.
결과
- GPT-3 175B: LoRA는 학습 파라미터 수를 175,255.8M에서 4.7M( 또는 ) 또는 37.7M()으로 줄여, 체크포인트 크기를 350GB에서 35MB로(10,000배 감소), 학습 VRAM을 1.2TB에서 350GB로 절감합니다. 학습 처리량은 증가합니다(V100 GPU당 초당 32.5 토큰에서 43.1 토큰으로 향상).
- 다운스트림 정확도 (GPT-3):
- WikiSQL 논리 형식 검증 정확도: 완전 미세조정 , LoRA (37.7M) .
- MultiNLI matched 검증 정확도: 완전 미세조정 , LoRA (4.7M) .
- SAMSum 대화 요약: 완전 미세조정 52.0 / 28.0 / 44.5 ROUGE-1/2/L, LoRA (4.7M) 53.8 / 29.8 / 45.9.
- RoBERTa 및 DeBERTa (GLUE 벤치마크): RoBERTa Large에서 LoRA는 355.0M 파라미터 대신 0.8M 파라미터만 사용하고도 미세조정과 동등한 성능(평균 점수 대 )을 기록했습니다. DeBERTa XXL (1.5B)에서 LoRA는 4.7M 파라미터로 GLUE 평균 점을 기록하여 완전 미세조정(1,500.0M 파라미터)의 점을 능가했습니다.
- 내재적 랭크 분석: 부분공간 유사도(subspace similarity) 분석 결과, 과 에 대한 의 상위 특이 방향들이 크게 겹치는 것으로 나타났습니다(차원 1에 대해 정규화된 유사도 ). 또한 는 에 존재하지만 크게 강조되지 않았던 방향들을 증폭시키며, 일 때 증폭 계수 를 나타냅니다.
한계점 및 미해결 과제
- 다중 태스크 배치 처리(Multi-Task Batching): 추론 지연 시간을 없애기 위해 저순위 가중치 를 에 병합할 경우, 단일 순방향 패스에서 여러 태스크의 입력을 동시에 배치 처리하는 것이 까다롭습니다.
- 경험적 레이어 선택: 어텐션 및 MLP 레이어 전반에서 어떤 행렬을 적응시킬지 결정할 때 원리적인 선택 프레임워크보다는 경험적 휴리스틱( 및 적응)에 의존하고 있습니다.
- 극단적인 도메인 변화: 사전 학습 분포와 크게 다른 다운스트림 태스크(예: 영어 LLM을 완전히 다른 목표 언어로 적응시키는 경우)의 경우, 저순위 적응은 더 높은 랭크나 완전 미세조정에 비해 불충분할 수 있습니다.
핵심 용어
- Low-Rank Adaptation (LoRA) (저순위 적응)
- 베이스 모델의 가중치를 고정하고 밀집 레이어와 병렬로 저순위 분해 행렬을 학습시키는 파라미터 효율적 미세조정 방법입니다.
- Intrinsic Rank (내재적 랭크)
- 태스크별 전이 학습 중에 유의미한 파라미터 적응을 포착하는 데 필요한 낮은 유효 차원 수 또는 특이 벡터의 개수입니다.
- Adapter Layers (어댑터 레이어)
- 트랜스포머 블록에 순차적으로 삽입되는 외부 병목 모듈로, 병렬화할 수 없는 순차 연산과 추론 지연 시간을 유발합니다.
- Prefix Tuning (프리픽스 튜닝)
- 입력 토큰이나 레이어의 은닉 상태 앞에 학습 가능한 연속 벡터를 추가하는 적응 방식으로, 활용 가능한 시퀀스 컨텍스트 길이를 감소시킵니다.
- Weight Folding / Weight Merging (가중치 접기 / 가중치 병합)
- 추론 중 런타임 오버헤드를 제거하기 위해 사전 학습된 가중치 행렬 에 저순위 행렬 를 직접 산술적으로 더하는 과정입니다.
- Grassmann Distance Subspace Similarity (그라스만 거리 부분공간 유사도)
- 적응 업데이트의 정규직교 특이 벡터 행렬 간 열 공간(column span)의 겹침 정도를 측정하는 지표 입니다.
- Feature Amplification Factor (특징 증폭 계수)
- 의 프로베니우스 노름과 의 특이 부분공간에 투영된 의 비율로, 태스크별 특징 방향이 얼마나 강하게 강조되는지를 측정합니다.
자주 묻는 질문
어댑터와 비교하여 LoRA가 추가 추론 지연 시간을 발생시키지 않는 이유는 무엇인가요?
LoRA는 선형 연산()이므로, 모델 서빙 전에 저순위 곱 를 명시적으로 계산하여 에 더해둘 수 있기 때문입니다(). 따라서 추론 시 어댑터 구조에서 지연을 유발하는 순차적 병목 레이어 없이 표준 행렬 곱셈만 수행됩니다.
트랜스포머의 어떤 가중치 행렬에 LoRA를 적용해야 하나요?
GPT-3 실험 결과에 따르면, 고정된 파라미터 예산 내에서 쿼리()와 밸류() 프로젝션 가중치를 모두 적응시키는 것이 가장 우수한 성능을 보였습니다. 단일 행렬 유형에 높은 랭크를 몰아주는 것보다 여러 어텐션 행렬에 작은 랭크(예: )를 적용하는 것이 더 효과적입니다.
대규모 언어 모델을 적응시키는 데 어느 정도의 랭크 $r$이면 충분한가요?
다운스트림 태스크에는 와 같은 매우 작은 랭크로도 충분한 경우가 많습니다. 부분공간 유사도 분석에 따르면 작은 랭크로 학습한 상위 특이 벡터는 더 큰 랭크(예: )로 학습한 벡터와 상당 부분 겹치며, 더 높은 랭크는 주로 무작위 최적화 노이즈를 포착하는 것으로 나타났습니다.
LoRA는 저순위 행렬을 어떻게 초기화하나요?
행렬 는 무작위 가우시안 분포로 초기화하고, 행렬 는 0으로 초기화합니다. 이를 통해 학습 시작 시점에 이 되도록 보장하므로 모델의 사전 학습 순방향 패스 출력이 그대로 유지됩니다.
이 페이지의 해설은 AI가 논문을 바탕으로 작성했으며 오류가 있을 수 있습니다. 자세한 내용은 원문을 확인하세요.